phpmyadmin-配合nginx与php安装

Posted 阿胜4K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于phpmyadmin-配合nginx与php安装的主要内容,如果未能解决你的问题,请参考以下文章

Centos 6.6 下 nginx +php mysql + phpMyadmin 安装部署

在 Nginx 中使用 php 7.0 安装 PhpMyadmin 4.7.2,访问被拒绝

php5.5安装及phpmyadmin&nginx配置php模块

centos7安装Lnmp(Linux+Nginx+MySql+Php+phpMyAdmin+Apache)

php5.5安装及phpmyadmin&nginx配置php模块

phpmyadmin的安装部署