MySQL配置

MySQL数据库远程登录设置

1
2
3
4
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;
FLUSH PRIVILEGES;

查询后显示root账户host为%即说明接受任意IP地址登录,但是存在一定的安全风险,如果为固定IP建议单独设置。

1
2
3
4
5
6
7
8
9
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
4 rows in set (0.00 sec)

MySQL数据库配置加密方式

当MySQL版本为8.0以上时,因采用了新的加密方式,可能会导致以下问题

1
php mysqli_connect: authentication method unknown to the client [caching_sha2_password]

在MySQL Server ini File文件里可以查询到

1
2
3
4
[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin=caching_sha2_password
#default_authentication_plugin=mysql_native_password

有两种办法解决这个问题,一种为升级PHP及插件版本,另一种为对MySQL设置及用户属性进行修改,本文采用了第二种方法。

在MySQL输入以下命令,请不要输入localhost,使用%作为代替,PASSWORD改为密码

1
2
3
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
flush privileges;

更改完成后确认无误刷新MySQL数据库即修改成功。为了不需要每次都对用户数据进行修改,建议对MySQL配置文件进行修改以保证MySQL数据库的加密方式为默认加密方式

1
2
3
4
5
whereis my.cnf
vim /etc/my.cnf
** 配置文件加入default-authentication-plugin=mysql_native_password
service mysqld restart
service mysqld status

显示如下内容即说明MySQL数据库配置有效,重启完成

MySQL服务配置
MySQL服务配置

PHP安装及配置

警告: 通过yum方式安装的php版本为5.3,如需7.0以上版本需要手动编译并安装

PHP安装

基础支持库安装

1
2
3
4
5
6
7
8
9
10
11
12
13
yum -y install gcc
yum -y install wget
yum -y install make
yum -y install libxml2
yum -y install libxml2-devel
yum -y install openssl
yum -y install openssl-devel
yum -y install curl-devel
yum -y install libjpeg-devel
yum -y install libpng-devel
yum -y install freetype-devel
yum -y install bison
yum -y install autoconfLoaded plugins: fastestmirror

创建用户组

添加到新系统用户php到php系统用户组,设置为将要被创建系统用户php不能用来登录系统,指定将要被创建的系统用户php的家目录为 /usr/local/php,被创建的系统用户php不会在 /home 目录下创建 php 目录

1
2
groupadd -r php
useradd -r -g php -s /sbin/nologin -d /usr/local/php -M php

下载并安装依赖及分析库

PHP语法分析器re2c

1
2
3
4
5
wget -c https://github.com/skvadrik/re2c/releases/download/0.16/re2c-0.16.tar.gz
tar -zxvf re2c-0.16.tar.gz
cd re2c-0.16
./configure
make && make install

加密支持扩展库libmcrypt

1
2
3
4
5
wget -c https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install

加密方式扩展库mhash

1
2
3
4
5
wget -c https://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
tar -zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && make install

加密方式扩展库mcrypt

1
2
3
4
5
wget -c https://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure LD_LIBRARY_PATH=/usr/local/lib
make && make install

PHP安装包下载

1
2
wget -c https://github.com/php/php-src/archive/php-7.1.6.tar.gz
tar -zxvf php-7.1.6.tar.gz

生成配置文件

1
2
cd php-src-php-7.1.6
./buildconf --force
生成配置文件
生成配置文件

配置文件生成完成后进行php编译,以下为编译选项列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
./configure \
--prefix=/usr/local/php \
--exec-prefix=/usr/local/php \
--bindir=/usr/local/php/bin \
--sbindir=/usr/local/php/sbin \
--includedir=/usr/local/php/include \
--libdir=/usr/local/php/lib/php \
--mandir=/usr/local/php/php/man \
--with-config-file-path=/usr/local/php/etc \
--with-mysql-sock=/tmp/mysql.sock \
--with-mcrypt \
--with-mhash \
--with-openssl \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--enable-zip \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--without-gdbm \
--enable-fast-install \
--disable-fileinfo
编译php
编译php

编译完成后可以运行 make test 命令测试当前PHP是否支持功能,时间较长,非必须

php测试
php测试

准备完成后执行 make install 命令,系统会按照编译配置安装各项服务

php安装
php安装

PHP配置

基础文件配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cp php.ini-production /usr/local/php/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
vim /etc/profile.d/php.sh
** 添加 export PATH=$PATH:/usr/local/php/bin/:/usr/local/php/sbin/
source /etc/profile.d/php.sh
groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -d /usr/local/nginx -M nginx
mkdir -p /var/log/php-fpm/
mkdir -p /var/run/php-fpm
chown -R nginx:nginx /var/run/php-fpm/
mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on

php-fpm配置

运行 chkconfig --list | grep php-fpm 命令查看php-fpm状态可见服务已经在第2到第5运行等级打开即说明成功

php-fpm服务
php-fpm服务

运行 php-fpm -t 命令查看php-fpm配置文件是否正常

运行 systemctl start php-fpm.service 命令启动服务

运行 systemctl status php-fpm.service 命令查看服务状态,如图即说明服务正常运行

php-fpm运行状态
php-fpm运行状态

同时你可以使用 php -v 命令查看php版本号

php版本号
php版本号

php.ini配置

php插件mysqli有可能虽然在编译中配置,但仍需要手动安装,同时php文件里需要对时区、短标签进行配置

使用命令 yum install php-mysqli 进行插件的安装,使用命令 vim /usr/local/php/etc/php.ini 进入配置文件修改以下项目

1
2
3
4
5
extension=php_mysql.so
short_open_tag = On
display_errors = On (调试开启此项,否则只报错500)
date.timezone = PRC
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/"

更改完成后使用 service php-fpm reload 命令完成php.ini配置文件重载

Nginx安装及配置

Nginx安装

此方法为非编译,EPEL仓库软件包,如需最新版需手动编译,安装完成后查看服务状态即说明安装成功

1
2
3
4
5
sudo yum install epel-release
sudo yum install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
nginx服务
nginx服务

警告: 这一步可能会产生报错,Failed to read PID,使用以下代码即可解决此问题

1
2
3
mkdir /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
systemctl daemon-reload

Nginx配置

1
2
3
4
vim /usr/local/php/etc/php-fpm.d/www.conf
** 此两行修改为
user = nginx
group = nginx