CentOS下nginx+php-fpm+mysql+phpmyadmin并包含ssl环境配置安装 二
接上文
mysql数据库安装
安装必要的依赖库
yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio libaio-devel
yum安装mysql
检测系统是否自带mysql
yum list installed | grep mysql
如果发现有系统自带数据库采用以下方法卸载
yum -y remove mysql-libs.x86_64
安装
wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
yum install mysql-community-server
启动数据库报错
Job for mysqld.service failed because the control process exited with error code. See "systemyctl status mysqld.service" and "journalctl -xe" for details.
解决方式
创建/var/run/mysqld/目录
查看用户和组 如果还为root 修改组
ls -ld /var/run/mysqld/
chown mysql.mysql /var/run/mysqld/
可能会失败
再次修改即可解决问题
chown -R mysql:mysql /var/lib/mysql
# 注意:mysql:mysql 为你创建的用户和组
初始化
/etc/init.d/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
启动数据库服务
/etc/init.d/mysqld start
创建用户和设置初始密码
mysqladmin -u root password root
输入密码进入数据库 初始密码为空
mysql -u root -p
设置数据库密码,接下来就可以正常操作数据库了
创建数据库 授权远程访问等操作
查看mysql是否自启动,并且设置开启自启动命令
chkconfig --list | grep mysqld
chkconfig mysqld on
phpmyadmin环境搭建
phpmyadmin官网下载安装包 phpMyAdmin-4.8.2-all-languages.tar.xz 放到/usr/local/nginx/ 目录下
tar xvf phpMyAdmin-4.8.2-all-languages.tar.xz
改成你想改为的名称 mv phpMyAdmin-4.8.2-all-languages phpmyadmin
在nginx/conf/nginx.conf 配置文件中 配置一个独立的二级域名访问phpmyadmin server{}块中修改,一个server{}块相当于一个独立的站点根目录(如果没有独立的二级域名需先到阿里云后台进行解析设置)
重启nginx
输入独立解析的域名访问phpmyadmin
提示无法登录数据库
将config.sample.inc.php复制成config.inc.php
文件位于phpmyadmin目录下
将$cfg['Servers'][$i]['host'] = 'localhost';
改为$cfg['Servers'][$i]['host'] = '127.0.0.1'
再次打开网址访问 提示file not found
解决方法
/nginx/conf/nginx.conf 中server{}块中对应的fastcgi_param行的参数,/scripts$fastcgi_script_name改为$document_root$fastcgi_script_name,或者使用绝对路径,要不然浏览器访问,不能解析,会显示“ File not found.”
重启nginx 能够登录,但登录进入后还有一个提示:
没有找到 PHP 扩展 mbstring,而您现在正在使用多字节字符集。没有 mbstring 扩展的 phpMyAdmin 不能正确分割字符串并可能产生意料之外的结果。
解决方法
确定当前系统存在phpize,并且可以使用,通过whereis phpize可以看到搜索结果
确定了phpize命令执行路径后 ,我们进入需要编译安装的扩展目录,小编是进入到 /usr/local/src/php-7.2.28/ext/mbstring ,进入目录后在当前位置输入命令 /usr/local/php/bin/phpize (也可能是 /usr/bin/phpize ) 命令执行完毕后,目录里面会多几个文件,有configure.
phpize执行失败提示:
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then,return this script.
执行
yum -y install autoconf
解决
然后重新执行phpize命令,完成后输入
./configure (可能是./configure --with-php-config=/usr/local/php/bin/php-config 小编当时并没有指定具体的位置)
make
make install
会在目录modules中生成一个mbstring.so文件,将其复制到/usr/local/php/lib/php/extensions/中指定的目录下,不过似乎已经在安装后自动复制过去了。
修改php.ini
注意php.ini的位置,可能会存在于/etc/php.ini,此处设置可能无效,建议通过phpinfo()确定php.ini的有效路径,将/etc/php.ini复制到对应的位置,如小编的php.ini有效路径位于/usr/local/php/lib/目录下。
在底部添加
extension=mbstring.so
添加后可能会提示:
centos 缺少 mysqli 扩展。请检查 PHP 配置。
执行
yum install php-mysqli
然后参考编译mbstring.so方式,进入 /usr/local/src/php-7.2.28/ext/mysqli/目录,执行phpize,再编译生成mysqli.so,并将其添加至php.ini中
extension=mysqli.so
phpize执行mysqli编译的位置位于 /usr/local/src/php-7.2.28/ext/mysqli/
其他问题
phpmyadmin访问时报错:
mysqli_real_connect(): (HY000/2002): No such file or directory
解决办法:
登录mysql,执行STATUS
找到 类似于 UNIX socket: /usr/local/mysql/mysql.sock
获取mysql.sock的完整路径
mysql>STATUS -------------- mysql Ver 14.14 Distrib 5.6.51, for Linux (x86_64) using EditLine wrapper Connection id: 140 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.6.51 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /usr/local/mysql/mysql.sock Uptime: 4 hours 39 min 21 sec
打开php.ini,在php.ini中配置好mysqli路径
pdo_mysql.default_socket= /usr/local/mysql/mysql.sock mysqli.default_socket = /usr/local/mysql/mysql.sock
重启nginx和php-fpm彻底解决问题。
上一篇: nginx下wordpress开启全站https出现所有栏目页为404问题的解决方法 | 下一篇: CentOS下nginx+php-fpm+mysql+phpmyadmin并包含ssl环境配置安装 一 |