phpmyadmin-配合nginx與php安裝


1. 概況

phpMyAdmin是用來在網頁端圖形化操作MySQL數據庫的工具,使用起來非常直觀,目前最新版本是4.8.3。在搭建web集群架構時可能有這樣的需求,數據庫安裝在專門的一台機器上,但是希望管理機器可以通過web界面操作數據庫機器,這時就需要把phpMyAdmin安裝在管理機器上,但是操作的是數據庫機器的數據。

本文安裝phpMyAdmin使用的是如下環境:

  • phpMyAdmin-4.8.3-all-languages
  • php7.1
  • nginx1.14
  • MySQL5.7
  • CentOS7.5
  • vmware12
  • xshell5
  • windows10

准備兩台虛擬機,一台IP10.0.0.61是管理機器,上面安裝nginx,php,phpMyAdmin,另一台是數據庫機器,IP10.0.0.51,上面安裝MySQL5.7

大致操作步驟如下:

  1. 安裝php-7.1(webtatic源yum安裝)
  2. 安裝nginx-1.14(官方yum源)
  3. 安裝MySQL-5.7(官方yum源-安裝在10.0.0.51機器上)
  4. 授權遠程連接用戶賬號和密碼
  5. 下載phpMyAdmin-4.8.3(到官網下載)
  6. 簡單優化下php和nginx
  7. 配置nginx配置文件
  8. 配置phpMyAdmin config.inc.php
  9. 瀏覽器訪問

2. php-mysql-nginx-簡單優化

全新安裝MySQL5.7,授權遠程連接用戶,可參考如下命令:

[root@db01 ~]# hostname -I
10.0.0.51 172.16.1.51 
[root@db01 ~]# mysql -uroot -p$(awk '/temporary password/ {print $NF}' /var/log/mysqld.log) \
--connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'As4k.top'";
#創建賬號並授權(這里把權限打滿)
# mysql -uroot -pAs4k.top -e 'GRANT ALL PRIVILEGES ON *.* TO "as4k"@"%" IDENTIFIED BY "As4k.top"';
# mysql -uroot -pAs4k.top -e "CREATE DATABASE jpress";

對php和nginx簡單優化,可參考如下命令:

[root@m01 ~]# hostname -I
10.0.0.61 172.16.1.61 

#添加虛擬用戶www
groupadd -g 666 www
useradd -u666 -g666 -s /sbin/nologin -M www

#設置nginx運行用戶為www
sed -i '/^user/c  user www;' /etc/nginx/nginx.conf

#設置nginx上傳文件大小為2G
grep 'client_max_body_size' /etc/nginx/nginx.conf
[ $? -eq 1 ] && sed -i '/^http/a client_max_body_size 2048M;' /etc/nginx/nginx.conf

#設置php-fpm運行用戶為www
sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

#設置php上傳文件大小為2G
sed -i '/^post_max_size/c post_max_size = 2048M' /etc/php.ini
sed -i '/^memory_limit/c memory_limit = 128M' /etc/php.ini
sed -i '/^upload_max_filesize/c upload_max_filesize = 2048M' /etc/php.ini

#重啟nginx和php-fpm
systemctl restart nginx
systemctl enable nginx
systemctl restart php-fpm
systemctl enable php-fpm

#快速驗證nginx和php是否配置正確
id www
netstat -lntup | egrep 'nginx|php'
ps aux | egrep 'nginx|php'
nginx -t
systemctl status nginx | grep running
systemctl status php-fpm | grep running

sed批量修改,一次性粘貼太多到Xshell中批量執行,似乎會導致錯亂,不知為何,大家可以一塊一塊復制。

3. 配置nginx和phpMyAdmin

[root@m01 ~]# hostname -I
10.0.0.61 172.16.1.61 

1 准備好phpMyAdmin代碼

[root@m01 ~]# mkdir -p /code; cd /code; pwd
/code
[root@m01 code]# ll -lh
total 11M
drwxr-xr-x 12 root root 4.0K Aug 22 09:37 phpMyAdmin-4.8.3-all-languages
-rw-r--r--  1 root root  11M Oct  2 18:36 phpMyAdmin-4.8.3-all-languages.zip
[root@m01 code]# unzip -q phpMyAdmin-4.8.3-all-languages.zip
[root@m01 code]# mv phpMyAdmin-4.8.3-all-languages phpmyadmin

phpMyAdmin-4.8.3-all-languages.zip在官網phpmyadmin.net下載

2 配置nginx phpmyadmin.conf

[root@m01 conf.d]# cat /etc/nginx/conf.d/phpmyadmin.conf 
server {
    listen 3307;
    server_name 10.0.0.61;
    root /code/phpmyadmin;
    index index.php index.html;

    location ~ \.php$ {
        root /code/phpmyadmin;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
[root@m01 conf.d]# nginx -t
[root@m01 conf.d]# systemctl restart nginx
[root@m01 conf.d]# netstat -lntp | grep 3307

端口我用的是3307,用默認的80或其它都可,只要注意不要和系統內其它軟件使用的端口沖突即可。

3 配置phpmyadmin config.inc.php

config.inc.php這個配置文件放在/code/phpmyadmin/也就是phpMyAdmin的安裝目錄,此配置文件是phpMyAdmin是安裝官方要求手動安裝phpMyAdmin配置的,具體細節可參考文末的鏈接,這里面主要就是用來配置遠程數據庫機器的信息,在沒有安裝phpMyAdmin之前,該文件也可以訪問10.0.0.61:3307/setup來自動生成,我已經生成好了,大家改把改把即可據為己用。

此刻打開10.0.0.61:3307/setup會報錯,原因見下文。

[root@m01 ~]# vim /code/phpmyadmin/config.inc.php
<?php
/*
 * Generated configuration file
 * Generated by: phpMyAdmin 4.8.3 setup script
 * Date: Tue, 02 Oct 2018 12:46:28 +0000
 * config.inc.php
 */

/* Servers configuration */
$i = 0;

/* Server: 172.16.1.51 [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = '172.16.1.51';
$cfg['Servers'][$i]['port'] = 3306;
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'as4k';
$cfg['Servers'][$i]['password'] = 'As4k.top';

/* End of servers configuration */

$cfg['DefaultLang'] = 'zh_CN';
$cfg['ServerDefault'] = 1;
$cfg['blowfish_secret'] = 'b:*hP-87360)+znI#P[/fKC@fH~gvkbW';
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>

可以看到,把數據庫主機IP,端口,授權賬號密碼改成自己的,即可使用。

4 在瀏覽器中訪問10.0.0.61:3307

此時你在瀏覽器中訪問,會看到下面這張錯誤截圖:

這個錯誤也讓我忙活了很久,百度和谷歌都沒能給出讓我信服的解釋,上面這段英文大致的含義是說phpMyAdmin沒有讀取session的權限,phpMyAdmin-4.8官方教程也確實說到,需要啟動php的session功能,但事實上php的session功能已經啟動了,如下phpinfo()函數的截圖所示:

如果大家觀察/var/lib/php/session這個目錄,會發現其所屬用戶"貌似"有點問題,如下:

[root@m01 ~]# ls -ld /var/lib/php/session
drwxrwx--- 2 root apache 6 Aug 25 22:50 /var/lib/php/session

而且有時/var/lib/php/session會提示並不存在,不管如何,新建該目錄並更改所屬用戶身份,可解決phpMyAdmin上述報錯問題,操作如下:

[root@m01 ~]# mkdir -p /var/lib/php/session
[root@m01 ~]# chown -R www:www /var/lib/php/session

不過再此我要說明,上述方法並不完善,事實上在我自己的機器是上做上述操作后,已經正常部署的wecenter服務,突然就打不開,提示錯誤也是和session有關,另外網上還有一些小道消息說把/var/lib/php/session權限直接打滿(777),原理都是一樣的,但都不能令人滿意。權限修改完之后,phpMyAdmin立刻就能打開,如下:

登錄遠程數據庫,必須使用已經准備好的授權賬號,無法使用root用戶直接登錄。

關於session錯誤等問題,應當就是就是php不是官方源的問題

參考資料

官方安裝幫助
https://docs.phpmyadmin.net/en/latest/require.html

作者:阿勝4K
出處:https://www.cnblogs.com/asheng2016/p/phpmyadmin.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM