在CentOS 7系統上搭建LNMP

 

簡要介紹:

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

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

 

 

 

安裝Nginx

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

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

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

 

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

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

導入該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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章