在CentOS 7系統上搭建LNMP

 

簡要介紹:php

通常來講,LNMP是Linux+Nginx+MySQL+PHP的簡稱,是一種用於替代LAMP的解決方案。在本文檔中,我使用CentOS 7來搭建LNMP平臺,其中,PHP採用FastCGIserver方式部署。此外,還介紹瞭如何部署Memcached和phpMyadmin。html

CentOS系統安裝時選擇的是basic server版本,詳細版本號爲CentOS 7.0.1406,核心版本號爲3.10.0-123.el7.x86_64。系統安裝在虛擬機上,IP爲172.31.2.3,其可與物理機和外界網絡正常通訊。如未特別說明,本文檔所涉及的全部操做均使用root帳號進行。python

 

 

 

安裝Nginxmysql

默認狀況下,centos中的yum庫並無提供nginx的源,因此沒有辦法直接安裝nginx。不過,nginx官網上有提供能夠更新yum庫的軟件包,能夠到nginx官網http://nginx.org/en/linux_packages.html下載該軟件包,或者直接使用下面的命令將該軟件包下載下來,並安裝它:linux

[root@www ~]# wgethttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmnginx

[root@www ~]# rpm -ivhnginx-release-centos-7-0.el7.ngx.noarch.rpmweb

 

(這部分可略過)而後,到nginx官網下載它提供的GPG數字簽名,或直接使用下面的命令:算法

[root@www ~]# wget http://nginx.org/keys/nginx_signing.keysql

導入該GPG數字簽名文件:數據庫

[root@www ~]# rpmkeys --import nginx_signing.key

再修改/etc/yum.repos.d/nginx.repo文件中下面這一項:

gpgcheck=1

這樣之後使用nginx.repo這個yum庫來安裝軟件時就會檢查軟件的GPG簽名了。剛剛下載的那個用於更新yum庫的軟件包,也可使用下面的命令來檢查它的GPG簽名:

[root@www ~]# rpmkeys -K nginx-release-centos-7-0.el7.ngx.noarch.rpm

 

而後就能夠安裝nginx了:

[root@www ~]# yum install nginx

wKioL1U0lzCRcEtBAAC_0KlcYJg759.jpg

安裝的nginx版本是1.6.3版,是目前穩定版的最新版本。

 

啓動nginx服務並將其設爲開機啓動:

[root@www ~]# systemctl start nginx

[root@www ~]# systemctl enable nginx

而後,檢查nginx服務狀態:

[root@localhost ~]# systemctl status httpd.service

 

假設咱們之後的網頁數據都放置在/data/www目錄下,那麼,須要在nginx的配置文件/etc/nginx/nginx.conf的http區塊中加入下面內容(include/etc/nginx/conf.d/*.conf;語句前):

server{

location / {

root /data/www;

index index.phpindex.html index.htm;

}

}

 

修改完配置文件後,讓nginx從新加載配置以生效:

[root@www ~]# nginx -s reload

 

建立/data/www目錄:

[root@www ~]# mkdir -p /data/www

 

由於SELinux的關係,即使nginx程序有r權限讀取/data/www下的文件,也是會讀取失敗的。咱們須要semanage這個工具來更改/data/www目錄的默認SELinux設置,經過命令yum provides semanage查找到這個工具是由policycoreutils-python這個軟件包提供的,所以:

[root@www ~]# yum install policycoreutils-python

將/data/www目錄(及其子目錄和文檔)的默認SELinux類型設定爲nginx能夠讀取的httpd_sys_content_t:

[root@www ~]# semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"

確認上面的規則是否添加成功:

[root@www ~]# semanage fcontext -l | grep '/data/www'

讓/data/www目錄的SELinux類型恢復成上面設定的默認值

[root@www ~]# restorecon -Rv /data/www

確認/data/www目錄的SELinux類型是否的確爲httpd_sys_content_t:

[root@www ~]# ls -dZ /data/www

 

讓防火牆放通tcp的 80端口:

[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent

重啓防火牆以讓更改生效:

[root@localhost ~]# firewall-cmd --reload

使用如下命令確認防火牆配置是否成功:

[root@localhost ~]# firewall-cmd --list-all

 

在/data/www目錄目錄下建立一個測試頁面index.html:

[root@www ~]# echo "This a test page." >/data/www/index.html

 

如無心外的話,此時使用瀏覽器訪問http://172.31.2.3/index.html應該就能夠看到上面的「This is a test page.」文字了:

wKiom1U0lvbgtlGsAABUrFOIpoU928.jpg

 

雖然上面是測試成功了,但此時查看nginx的錯誤日誌文件/var/log/nginx/error.log,能夠發現有一個找不到favicon.ico的報錯,這個favicon.ico是收藏網頁時網頁標題旁的那個小圖標。要解決這個問題,能夠放一個favicon.ico在你所設定的網頁根目錄下面(這裏是/data/www),也能夠設定nginx讓它不要報這個錯。

 

備註:

nginx的配置文件爲:/etc/nginx/nginx.conf

nginx的錯誤日誌爲:/var/log/nginx/error.log

nginx的訪問日誌爲:/var/log/nginx/access.log

nginx的相關文檔:http://nginx.org/en/docs/

 

 

 

設置nginx以支持PHP(FastCGI方式)

爲了讓nginx以FastCGI的方式與PHP協同工做,讓nginx將對於.php文件的請求都傳送給PHP進行處理,須要向nginx的配置文件/etc/nginx/nginx.conf中再添加一個location區塊,即,將前面的那個server區塊改爲這樣:

server{

location / {

root /data/www;

index index.phpindex.html index.htm;

}

location ~* \.php$ {

root /data/www;

fastcgi_indexindex.php;

fastcgi_pass   127.0.0.1:9000;

fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;

include       fastcgi_params;

}

}

注意:fastcgi_pass那裏使用了127.0.0.1:9000而不是localhost:9000,不然日誌中會有upstream: "fastcgi://[::1]:9000"之類的報錯。

 

修改完成後,讓nginx從新加載配置以生效:

[root@www ~]# nginx -s reload

 

 

 

安裝PHP(FastCGI方式)

要讓PHP以FastCGI的方式與nginx進行交互,須要有PHP-FPM模塊的支持。因爲這個模塊須要集成到PHP的核心中,也就是說,在編譯PHP時須要同時將PHP-FPM模塊編譯進去,因此安裝PHP須要從源碼進行安裝。

 

由於要編譯PHP源碼,因此須要先安裝必要的編譯器:

[root@www php-5.6.7]# yum install gcc

PHP編譯時所需用到的支持庫也要安裝:

[root@www ~]# yum install libxml2-devel

 

PHP的源碼可從PHP官網(http://php.net/downloads.php)得到,或者也能夠直接按照下面的步驟進行(所安裝版本爲目前爲止最新的穩定版PHP 5.6.7):

[root@www ~]# wget http://cn2.php.net/distributions/php-5.6.7.tar.bz2

[root@www ~]# tar -jx -f php-5.6.7.tar.bz2

[root@www ~]# cd ./php-5.6.7

[root@www php-5.6.7]# ./configure --enable-fpm --with-mysql

[root@www php-5.6.7]# make

[root@www php-5.6.7]# make install

 

將適用於生產環境的配置文件複製成爲PHP的實際配置文件:

[root@www php-5.6.7]# cp php.ini-production /usr/local/lib/php.ini

複製生成PHP-FPM模塊的配置文件:

[root@www php-5.6.7]# cp /usr/local/etc/php-fpm.conf.default/usr/local/etc/php-fpm.conf

將PHP-FPM的執行程序複製到/usr/local/bin目錄下:

[root@www php-5.6.7]# cp sapi/fpm/php-fpm /usr/local/bin

 

修改配置文件/usr/local/lib/php.ini中cgi.fix_pathinfo這一項,將它前面的分號去掉,並修改它的值(這樣修改的意義是,若是文件不存在,則阻止nginx將請求發送到後端的PHP-FPM模塊,以免遭受惡意腳本注入的***):

cgi.fix_pathinfo=0

 

建立一個用戶www-data以供php-fpm使用:

[root@www ~]# useradd -s /sbin/nologin www-data

修改配置文件/usr/local/etc/php-fpm.conf中user和group這兩項,讓php-fpm模塊使用www-data用戶和www-data用戶組的身份運行:

user= www-data

group= www-data

 

再來須要將php-fpm程序設爲開機啓動,這須要將php-fpm作成系統服務。

首先,修改php-fpm的配置文件/usr/local/etc/php-fpm.conf,找到下面這一項,將它前面的分號去掉:

pid= run/php-fpm.pid

啓動php-fpm程序:

[root@www ~]# /usr/local/bin/php-fpm

在/etc/systemd/system目錄下建立文件php-fpm.service,將它的內容修改爲以下所示:

wKiom1U0lzSzXoJzAADvhn-Udkw780.jpg

從新加載systemd管理器配置以使修改生效:

[root@www ~]# systemctl daemon-reload

這樣之後就可使用systemctl命令來管理php-fpm程序了。將php-fpm設爲開機啓動:

[root@www ~]# systemctl enable php-fpm

啓動php-fpm程序:

[root@www ~]# systemctl start php-fpm

若是啓動正常的話,能夠看到php-fpm在監聽tcp的9000端口。

 

到這,PHP就設定好了。接下來就須要進行測試了,在所設置的網頁根目錄下生成phpinfo頁面:

[root@www ~]# echo "<?php phpinfo (); ?>" > /data/www/index.php

使用瀏覽器訪問服務器,若是沒什麼問題的話,應該就能夠看到下面的頁面了:

wKiom1U0mNyhzVSYAAEvbO4f-60853.jpg

 

備註:

PHP的配置文件爲:/usr/local/lib/php.ini

php-fpm的配置文件爲:/usr/local/etc/php-fpm.conf

php-fpm的錯誤日誌爲:/usr/local/var/log/php-fpm.log

php-fpm.conf文件的在線說明文檔:http://php.net/manual/en/install.fpm.configuration.php

 

 

 

安裝MySQL

因爲從RHEL 7開始Red Hat公司推薦使用MariaDB替換MySQL,所以默認狀況下,並無提供MySQL的安裝包,也就是沒辦法直接使用yum命令安裝MySQL軟件。爲了要安裝MySQL,我選擇的是去官網http://dev.mysql.com/downloads/repo/yum/下載安裝包,不過在下載以前須要先註冊。由於使用的是CentOS 7系統,因此我下載的是mysql-community-release-el7-5.noarch.rpm這個文件。下載下來後,將它放在/root目錄下,而後使用命令:

[root@localhost ~]# yum localinstall mysql-community-release-el7-5.noarch.rpm

使用上面這個命令能夠將MySQL Yum Repository添加到系統的軟件庫列表(repositorylist)。而後可使用下面的命令檢查添加是否成功:

[root@localhost ~]# yum repolist enabled | grep mysql

而後,使用下面的命令安裝MySQL:

[root@localhost ~]# yum install mysql-community-server

wKiom1U0muWSoXeiAAIGzc54nGA555.jpg

如上圖所示,這個命令會安裝MySQL server,附帶的,它會安裝一些支撐軟件,包括MySQL client、共享客戶端庫(mysql-community-libs)等軟件。注意到,這裏安裝的MySQL版本爲5.6版。

安裝完成後,啓動mysqld服務並將其設爲開機啓動:

[root@localhost ~]# systemctl start mysqld

[root@localhost ~]# systemctl enable mysqld

 

而後,檢查mysqld服務狀態:

[root@localhost ~]# systemctl status mysqld

MySQL偵聽tcp端口3306。但由於防火牆並未放通該端口,因此從其它設備上是沒法訪問本服務器的MySQL數據庫的。但由於這裏的MySQL也僅是提供給本機的PHP使用的,因此也就沒必要放通tcp端口3306。

 

根據MySQL官方手冊,建議安裝完MySQL數據庫後使用下面的命令來加強數據庫的安全性:

[root@localhost ~]# mysql_secure_installation

該命令程序能夠協助你設置數據庫root帳號的密碼,移除匿名用戶帳號,是否容許遠程登陸root帳號,移除自帶的test數據庫,最後還會問你是否要從新加載特權表以讓修改生效。我是設置了數據庫root帳號密碼,其它的都選是(Y)。

若是不想使用上面的命令,那可使用下面的命令來給root帳號設置密碼,回車後它會提示你輸入密碼的:

[root@localhost ~]# mysqladmin -u root password

若是要修改root帳號的密碼,可以使用下面的命令,回車後,它會提示你輸入密碼,而後再設置新密碼:

[root@localhost ~]# mysqladmin -u root -p password

補充說明 :上面那兩個mysqladmin命令實際上是有問題的,由於默認的話,mysql數據庫上是有4個root帳號的,分別是'root'@'localhost','root'@'localhost.localdomain','root'@'127.0.0.1','root'@'::1',而mysqladmin命令對'root'@'127.0.0.1'和'root'@'::1'這兩個root帳號是不生效的。這是我後來看官方文檔才知道的,看來不懂數據庫真的是容易錯漏百出呢。要爲全部root帳號設置密碼,能夠進入mysql管理後臺後,使用命令UPDATEmysql.user SET Password = PASSWORD('新密碼') WHERE User = 'root';來設置或修改密碼,使用命令SELECT User, Host, Password FROM mysql.user;來查看修改的效果,使用命令flush privileges;來保存修改。這裏的補充說明是後來追加上去的,附件的文檔裏面並無這個說明,注意。


而後進行下面的操做:

[root@localhost~]# mysql -u root -p                              //以root帳號登入MySQL

Enterpassword:

mysql>create user 'usera'@'localhost' identifiedby '1234';       //新建本地用戶usera,密碼爲1234

mysql>create database testdb;                                   //新建數據庫mydb

mysql>grant all privileges on testdb.* to usera@localhost;       //將數據庫testdb的全部權限受權給本地用戶usera

mysql>flush privileges;                                          //刷新系統權限表

mysql>use mysql;                                              //進入數據庫mysql(該數據庫爲系統自帶)

mysql>select * from user where user = 'usera';                  //查詢數據庫mysql中是否存在用戶usera

mysql>show databases;                                         //顯示全部已有的數據庫

mysql>exit

上面設定好後,就可使用usera這個帳號登陸MySQL了,而且能夠發現該用戶擁有一個數據庫testdb。

 

備註:

MySQL的配置文件:/etc/my.cnf

MySQL的錯誤日誌文件:/var/log/mysqld.log

數據庫實際存放目錄:/var/lib/mysql

 

 

 

測試

爲了測試PHP可否鏈接到MySQL數據庫,在/data/www目錄下新建一個文檔testmysql.php。由於以前已經在MySQL中新建了一個數據庫testdb,並給這個數據庫建了個用戶usera,密碼是1234,因此test.php的內容是這樣的:

wKiom1U0mzDQS4V7AADkfs40e1A601.jpg

上面這個測試頁面的內容純粹是我百度出來的,不過測試後的確有用。在瀏覽器中訪問testmysql.php這個頁面,若是測試失敗的話(能夠試着改一下用戶名或數據庫名稱),那麼就會顯示Cannot find the database或Cannot connect the database;若是測試成功的話,就會顯示Everythingis OK!。以下所示:

wKiom1U0m5bBDLJgAABnFWhGmOc465.jpg

上面的那個測試一開始是失敗的,查看nginx的錯誤日誌,發現有報「PHP message: PHP Warning: mysql_connect(): No such file or directory」這個錯誤。解決辦法是,進入MySQL數據庫的管理後臺,執行命令status;,記下UNIXsocket的值。再在PHP的配置文件/usr/local/lib/php.ini中找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket這三項,將它們的值都改爲與UNIXsocket的值相同。而後再使用命令systemctl restart php-fpm命令重啓php-fpm程序就能夠了。

 

到這裏爲止,基本的LNMP平臺就搭建好了。

 

 

 

安裝Memcached(可選)

Memcached是一個高性能的分佈式的內存對象緩存系統,經過在內存裏維護一個統一的巨大的hash表,它可以用來存儲各類格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,而後從內存中讀取,減輕數據庫的負擔,從而大大提升讀取速度。

 

安裝Memcached以前,先安裝依賴庫:

[root@www ~]# yum install libevent-devel

Memcached到目前的最新穩定版爲1.4.22版,可從它的官網http://memcached.org/downloads下載,也可按下面的步驟:

[root@www ~]# wget http://memcached.org/latest

[root@www ~]# tar -zxvf latest

[root@www ~]# cd memcached-1.4.22

[root@www memcached-1.4.22]# ./configure

[root@www memcached-1.4.22]# make

[root@www memcached-1.4.22]# make test

[root@www memcached-1.4.22]# make install

 

啓動Memcached程序:

[root@www ~]# /usr/local/bin/memcached -uroot -d

 

Memcached啓動時可附帶一些選項,經常使用的選項以下:

-p:監聽指定的TCP端口。若不指定,默認爲11211。

-P:將PID保存到指定的文件。須要與-d選項一塊兒使用。

-m:指定可用的最大內存大小。若不指定,默認爲64M。

-vv:用veryvrebose模式啓動,調試信息和錯誤輸出到控制檯。

-d:做爲daemon在後臺啓動。

-u:以指定的身份啓動。該選項只有在當前用戶爲root時纔可用。

-l:監聽的IP地址,默認監聽全部。

-c:最大併發鏈接數,默認爲1024。

更多可用的選項,可用使用命令/usr/local/bin/memcached-h查閱到。

 

雖然Memcached程序已能運行,但爲了讓它能開機啓動,還須要將它作成系統服務。

在/etc/systemd/system目錄下建立文件memcached.service,將它的內容修改爲以下所示:

wKioL1U0nTjw5KrXAAC8b-jtCNA435.jpg

從新加載systemd管理器配置以使修改生效:

[root@www ~]# systemctl daemon-reload

這樣之後就可使用systemctl命令來管理Memcached程序了。將Memcached設爲開機啓動:

[root@www ~]# systemctl enable memcached

啓動memcached程序:

[root@www ~]# systemctl start memcached

若是啓動正常的話,能夠看到Memcached在監聽tcp和udp的11211端口。若是要調整Memcached的啓動選項的話,則記得也要同時修改memcached.service這個文件。

 

 

雖然安裝好了Memcached,不過,還要PHP支持才行。爲了支持Memcached,有兩個PHP擴展可使用,一個叫作memcache,另外一個叫作memcached,安裝兩個中的任一個都行,不過memcached擴展比較新,相對來講可能會比較好一點,所以我也選擇安裝memcached擴展。

既然要給PHP安裝擴展,那就要先安裝php-devel,以讓PHP能夠支持擴展組件才行:

[root@www ~]# yum install php-devel

而後,由於memcached擴展是依賴於libmemcached庫的,因此還要安裝libmemcached庫:

[root@www ~]# yum install libmemcached libmemcached-devel

而後安裝memcached擴展(這須要使用pecl命令而非yum命令):

[root@www ~]# pecl install memcached

在安裝上面的memcached擴展時須要提供libmemcached的安裝目錄(含有include/libmemcached/memcached.h的那個目錄,在我這裏是/usr)。

安裝完成後,它會有提供相似下面的路徑:

/usr/local/lib/php/extensions/no-debug-non-zts-20131226/memcached.so

根據上面的路徑,在php.ini中加上語句:

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/memcached.so

重啓php-fpm程序以使修改生效:

[root@www ~]# systemctl restart php-fpm

若是正常的話,此時應該就能夠從phpinfo頁面查到關於memcached的信息了:

wKiom1U0nByCQslFAAELQ_M_BEI968.jpg

 

 

雖然上面已經能查到關於memcached的信息了,但仍是要實際測試一下。在放置網頁的目錄下新建一個文件testmemcached.php,文件的內容以下(注:這個測試頁面的內容不是我原創的哦,我只是參考別人的修改了一下):

wKiom1U0nFiD80d6AABzhEqgzZQ456.jpg

使用瀏覽器訪問上面的那個頁面,若是正常的話,應該能夠看到下面的東東:

wKioL1U0ndbzGBZ1AABXGNN6QJc401.jpg

 

 

Memcached狀態監控:

Memcached有個stats命令,經過它能夠查看Memcached服務器的許多狀態信息。使用方法爲,先使用telnet命令鏈接到memcached服務器,鏈接成功後,輸入stats 命令,便可顯示當前memcached服務的狀態信息。

安裝telnet程序:

[root@www ~]# yum install telnet

鏈接到當前服務器(telnet ip 端口號):

[root@www ~]# telnet 127.0.0.1 11211

查看memcached服務狀態,使用命令:

stats

若是要斷開鏈接,則輸入:

quit

狀態信息的說明以下(這部分轉載自http://blog.chinaunix.net/uid-25266990-id-2379205.html):

pid:memcache服務器的進程ID

uptime:服務器已經運行的秒數

time:服務器當前的unix時間戳

version:memcache版本

pointer_size:當前操做系統的指針大小

rusage_user:進程的累計用戶時間

rusage_system       :進程的累計系統時間

curr_items:服務器當前存儲的items數量

total_items:從服務器啓動之後存儲的items總數量

bytes:當前服務器存儲items佔用的字節數

curr_connections:當前打開着的鏈接數

total_connections:從服務器啓動之後曾經打開過的鏈接數

connection_structures:服務器分配的鏈接構造數

cmd_get:get命令(獲取)總請求次數

cmd_set:set命令(保存)總請求次數

get_hits:總命中次數

get_misses:總未命中次數

evictions:爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後須要刪除舊的items來獲得空間分配給新的items)

bytes_read:總讀取字節數(請求字節數)

bytes_written:總髮送字節數(結果字節數)

limit_maxbytes:分配給memcache的內存大小(字節)

threads:當前線程數

 

 

 

安裝phpMyAdmin(可選)

phpMyAdmin是一款可用於管理MySQL,MariaDB和Drizzle數據庫的圖形化管理工具。它由PHP語言編寫,可架構在LAMP或LNMP平臺上,經過web界面來操做數據庫。

 

在安裝phpMyAdmin以前,它須要PHP支持session,支持StandardPHP Library (SPL) 擴展、JSON擴展、mbstring擴展;爲了支持ZIP文件上傳,須要PHP支持zip擴展;爲了可以以原始比例顯示JPEG圖片的縮略圖,須要PHP支持GD2;若是使用了cookie認證方法, PHP建議安裝mcrypt擴展;爲了支持XML和文檔表格導入,須要安裝libxml擴展;爲了提升性能,建議安裝ctype擴展。

查看當前PHP安裝了哪些擴展(模塊),可以使用命令:

[root@www ~]# php -m

目前我這個系統上缺乏的是mbstring、zip、GD2和mcrypt擴展。

 

mbstring這個擴展雖然能夠經過yum命令安裝,但安裝後php-fpm報錯說API不匹配。沒辦法,這個擴展的源碼又很差找。好在還有PHP的源代碼安裝包。下面就介紹一下怎麼從PHP源代碼安裝包安裝mbstring擴展(而不從新編譯PHP)。

首先進行PHP源碼安裝包下的ext/mbstring目錄:

[root@www ~]# cd /root/php-5.6.7/ext/mbstring

執行phpize命令:

[root@www mbstring]# phpize

此時就能夠進行預編譯了。但在那以前,先找到php-config腳本所在路徑(使用which php-config命令能夠找到),個人是在/usr/local/bin/php-config,根據這個路徑來執行預編譯(--with-php-config 選項用於在編譯擴展時指定使用哪個版本編譯):

[root@www mbstring]# ./configure --with-php-config=/usr/local/bin/php-config

進行編譯:

[root@www mbstring]# make

編譯完成後有提示mbstring.so模塊所在目錄,我將這個模塊複製到PHP擴展的放置目錄下(/usr/local/lib/php/extensions):

[root@www mbstring]# cp -a ./modules/mbstring.so /usr/local/lib/php/extensions

還原複製出來的mbstring.so模塊的SELinux設置:

[root@www ~]# restorecon -v /usr/local/lib/php/extensions/mbstring.so

根據上面模塊的放置位置,在php.ini文件裏面加入相應的語句:

extension=/usr/local/lib/php/extensions/mbstring.so

重啓php-fpm程序:

[root@www ~]# systemctl restart php-fpm

此時就能夠看到已經加載mbstring模塊了。其它的擴展應該也可使用相似的方法進行安裝,出於時間考慮,我就先不進行安裝了。

 

接下來就是安裝phpMyAdmin了。到如今爲止,phpMyAdmin的最新版本爲4.4.2版,這個版本兼容PHP 5.3及以上版本、MySQL 5.5及以上版本、MariaDB 5.5及以上版本。能夠從它的官網http://www.phpmyadmin.net/home_page/下載,或直接使用下面的命令下載(這個是英文版來的,在它的官網有多語言版本):

[root@www~]# wget http://ncu.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.4.2/phpMyAdmin-4.4.2-english.tar.bz2

將下載下來的壓縮包解壓到網頁根目錄:

[root@www ~]# tar -jxvf phpMyAdmin-4.4.2-english.tar.bz2 -C /data/www

爲了之後方便訪問,將剛剛解壓出來的文件夾重命名爲phpmyadmin:

[root@www ~]# mv /data/www/phpMyAdmin-4.4.2-english/data/www/phpmyadmin

 

出於安全性考慮,進行下面的步驟。

建一個帳號,帳號名爲phpmyadmin:

[root@www ~]# useradd phpmyadmin

給phpmyadmin帳號設置密碼:

[root@www ~]# passwd phpmyadmin

複製文件config.sample.inc.php生成配置文件config.inc.php:

[root@www ~]# cp /data/www/phpmyadmin/config.sample.inc.php /data/www/phpmyadmin/config.inc.php

將配置文件config.inc.php的權限改成664:

[root@www ~]# chmod 664 config.inc.php

將phpMyAdmin全部文件的所屬用戶改成phpmyadmin,用戶組改成nginx(與nginx程序一致):

[root@www ~]# chown -R phpmyadmin:nginx /data/www/phpmyadmin

切換到帳號phpmyadmin進行操做:

[root@www ~]# su - phpmyadmin

接下來所需作的就是修改配置文件config.inc.php,進行身份認證的相關設置了。有幾種身份認證的方法,包括在配置文件裏面直接設置明文帳號、HTTP認證方法、cookie認證方法等。不過,HTTP和cookie認證方法的密碼傳輸也是明文的,除非使用HTTPS協議。在cookie認證方法中,當你從phpMyAdmin的web界面登陸後,帳號和密碼同時被存儲到cookie中,而且密碼使用AES算法進行了加密。會話結束後,密碼就會刪除。我這裏就使用cookie認證方法好了。

先準備一串任意長度的數字和字母隨機組合(如1b8afc186ehc97d6uwr3),這串組合是用於AES算法加密計算的,能夠隨便填寫,將它填入配置文件config.inc.php中下面這一項:

$cfg['blowfish_secret'] = '1b8afc186ehc97d6uwr3';

同時確認配置文件config.inc.php中下面這一項是這麼設置的:

$cfg['Servers'][$i]['auth_type'] = 'cookie';

這樣就設置好cookie認證了。接下來只要使用瀏覽器訪問phpmyadmin主目錄下的index.php,使用數據庫的用戶名和密碼就能夠登錄來管理數據庫了。若是沒什麼問題的話,應該就能夠看到下面這個登陸界面了:

wKioL1U0nkjysSTbAADvUnZRasc527.jpg

這樣就登陸進來了,還能夠看到以前建立的數據庫testdb。

wKioL1U0nq3CK2DBAALshWe2lCs687.jpg

 

雖然phpMyAdmin已安裝好,但出於安全考慮,可能還有一些措施須要進行,好比,將phpMyAdmin主目錄下的將setup目錄移除,禁止訪問phpMyAdmin主目錄下的libraries子目錄和setup/lib子目錄等。另外,可能還須要考慮在nginx中設置phpMyAdmin主目錄的訪問權限。不過這些作起來仍是比較麻煩的,因此,暫時就先這樣了。

 

備註:

phpMyAdmin在線文檔:http://docs.phpmyadmin.net/en/latest/index.html

相關文章
相關標籤/搜索