摘要訊息 : 教你如何在 CentOS 7 下配置 Nginx + PHP 7.1 和 MySQL 5.7 環境.
0. 前言
在搭建路上, 博主一路摸爬滚打, 从原来的什么都不会, 到现在基本一次成功. 走过很多弯路, 百度上面很多类似的教程, 但是都不是很合适, 总有一些莫名其妙的问题. 今天把搭建的方法总结在这里, 方便新手学习.
首先, 要有一台 CentOS 7 的服务器, 博主选用的服务器是 Vultr 的服务器 (自行申请). 如果你什么都不会, 直接跟着教程走, 复制命令就可以了!
虽然本文已经有接近五年历史,考虑到 CentOS 7, PHP 7 和 MySQL 5.7 的使用者数量仍然有很多, 因此暂时不考虑对本文进行归档. 请阁下仔细甄别文章中可能过时的部分, 有问题需要修正可以留下评论.
更新纪录 :
- 2022 年 1 月 20 日进行第一次更新和修正.
1. Nginx
首先, 就是 Nginx 的安装. 一般服务器自带的 Nginx 版本都不是最新的 Nginx 版本, 要想使用到最新的 Nginx 版本, 首先要进入 : http://nginx.org/packages/centos/7/noarch/RPMS/. 然后找到对应的 yum repo, 然后更新 repo 的 rpm :rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
这个是到目前为止最新的 rpm. 中国大陆的服务器下载速度可能有些慢, 稍微等待一下. 更新完成之后便有 :
接下来可以进行 Nginx 的安装, 执行指令 yum install -y nginx
, 安装完成会提示 :
然后就可以测试 Nginx 是否真的安装成功了. 首先, 要开启 Nginx 并且设置开机启动 : systemctl enable --now nginx
(或者你可以使用两条指令 : systemctl start nginx
和 systemctl enable nginx
). 第一条指令是启动 Nginx, 第二条指令是设定开机启动. 成功之后会显示 :
很多服务商提供的服务器默认是开启防火墙的, 所以要想测试 Nginx 是否启动成功, 还要修改防火墙的配置 :
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
每一句命令输入之后都会有 success
返回. 之后直接访问服务器 IP 如果可以看到如下页面, 就代表 Nginx 安装成功 :
如果看到的一片空白或者浏览器的错误信息, 那么请检查是否开启了 SELinux 以及伺服器提供商是否自建了防火墙.
2. MySQL
访问 MySQL 官方网站 https://dev.mysql.com/downloads/repo/yum/ 寻找合适的 yum repo, 现在最新的命令是 rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
. 成功之后会提示 :
然后我们使用指令 yum install -y mysql-community-server mysql-community-devel
安装 MySQL, 安装成功之后会提示 :
接下来对 MySQL 进行设置. 首先, 需要使用指令 systemctl start mysqld
开启 MySQL. 由于 MySQL 安装完之后自己设置了自启动, 那么这里可以省去设置开机启动的命令. MyQSL 5.7 和之前的版本 (MySQL 5.6 及其更旧的版本) 有所不同, MySQL 5.7 在安装的时候已经设置好了初始密码, 以前的版本密码为空. 我们可以通过命令 grep 'temporary password' /var/log/mysqld.log
来获得初始密码 :
第二行冒号之后的 mEt4i9ly/N_Y
便是我的初始密码, 每个人的都可能不一样. 对于 MySQL 5.7 给出的初始密码, 其实已经很安全了, 唯一的缺点就是不好记, 这时候可以搭配 1Password 等软件. 如果要修改密码的, 可以执行下面的命令 : 首先使用指令 mysql -uroot -p
进入 MySQL, 会提示你输入密码, 输入刚刚给出的初始密码即可; 然后直接输入 ALTER USER 'root'@'localhost' IDENTIFIED BY '你要修改的新密码';
将中文字替换成你的密码即可, 最后有分号不要忘记. 不过, 值得注意的是, MySQL 5.7 对于密码的要求非常严格, 必须至少包含1个大写字母、1个小写字母、1个数字和1个特殊字符, 而且长度不得小于8个字符. 修改完成之后输入 quit
退出即可.
到这里 MySQL 的安装和配置就算完成了, 后期的工作都可以通过 phpMyAdmin 来实现.
3. PHP 7
原来的文章中安装的是 PHP 7.1, 由于 PHP 7 已经更新到了 PHP 7.4, 因此大家如果想要安装更高的版本请参考 (基本通用) :
- PHP 7.4 : 《在 CentOS 8 下配置 Nginx + PHP 7 + MySQL 8 + phpMyAdmin + vsFTPd》;
- PHP 8 : 《在 CentOS 8 下配置 Nginx + PHP 8 + MySQL 8 + phpMyAdmin + vsFTPd》.
首先同样引入 RPM : rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
与rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
.
接下来输入长命令安装 PHP 7.1 :
yum install -y php71w php71w-bcmath php71w-cli php71w-common php71w-dba php71w-devel php71w-embedded php71w-enchant php71w-fpm php71w-gd php71w-imap php71w-interbase php71w-intl php71w-ldap php71w-mbstring php71w-mcrypt php71w-mysqlnd php71w-odbc php71w-opcache php71w-pdo php71w-pdo_dblib php71w-pear.noarch php71w-phpdbg php71w-process php71w-pspell php71w-recode php71w-snmp php71w-soap php71w-tidy php71w-xml php71w-xmlrpc php71w-pecl-mongodb php71w-pecl-redis php71w-pecl-igbinary php71w-pecl-apcu php71w-pecl-apcu-devel php71w-pecl-geoip php71w-pecl-igbinary-devel php71w-pecl-imagick php71w-pecl-libsodium php71w-pecl-memcached php71w-pecl-xdebug
这里已经默认安装了 PHP 7 的很多组件, 如果不需要那么多组件, 可以通过自己选择来挑选自己需要的组件. 如果你在最后看到有 Complete!
, 那么就说明安装成功了.
我们需要稍微配置一下 PHP, 以便于以后安装某些程序不再麻烦. 先用指令 vim /etc/php-fpm.d/www.conf
打开 PHP-FPM 配置文件找到 user = apache
和 group = apache
, 修改为 user = nginx
和 group = nginx
. 然后按 "/
", 输入$HOSTNAME
(这个动作为搜索 "$HOSTNAME
"), 找到若干个 ;env...
把 ;env...
之前的分号全部去掉 (这个动作为取消注释).
配置完 PHP-FPM 之后, 还需要对 php.ini
文件进行配置, 方便今后的使用. 首先用指令 vim /etc/php.ini
打开 php.ini
, 找到 mysqli.default_socket
, 按 "i
" 进入编辑模式, 把那一行改为 mysqli.default_socket = /var/lib/mysql/mysql.soc
k. 找到 date.timezone
, 把那一行改为 date.timezone = Asia/Hong_Kong
或者你想要的时区 (可以去 https://www.php.net/manual/zh/timezones.php 找到自己的时区). 其它设定如果阁下不了解, 建议保持预设. 最后按 ESC
退出编辑模式, 输入冒号 ":
" 和 "wq!
" 回车退出.
保存之后, 还要赋予 Nginx 对应目录的权限, 否则一些程式可能无法正常运行 : chown -R nginx:nginx /var/lib/php/session
.
接下来, 还要做的是启动 PHP-FPM, 如果不启动, 访问网站就会出现 502 Bad Gateway 错误 : systemctl start php-fpm
. 需要开机启动的还要输入 systemctl enable php-fpm
.
PHP 的配置就算完成了, 就要正式开始建立网站了, 网上有很多现成的免费网站程序. 不过, 在建立网站之前, 我们首先测试一下 PHP 的运作是否正常. 首先要建立一个专门放网页的目录 : mkdir /www
, 这是我的习惯, 大家也可以放在别的地方. 然后编辑测试网页 : vi /www/info.php
, 按 "i
" 进入编辑模式并且输入
<?php
phpinfo();
按 ESC
键退出编辑模式, 之后输入 ":
" 再输入 "wq!
" 按回车退出. 到这里, 我们的 PHP 测试页面就算完成了.
最后我们还要告诉 Nginx 有这样一个网页. 首先进入 Nginx 配置的相关目录 : cd /etc/nginx/conf.d
, 然后通过 vi
命令创建一个新的 .conf
文件, 对于文件的命名, 个人建议使用域名, 例如 vi jonny.vip.conf
. 按 "i
" 进入编辑模式, 然后输入
server {
listen 80; # 使用的端口, 不建议更改
server_name 此处修改为你网站的域名或者可以直接使用 IP;
root /www; # 绑定的目录
access_log /var/log/nginx/test.access.log main; # 运作日志档案位置, 不建议更改
error_log /var/log/nginx/test.error.log error; # 错误日志档案位置, 不建议更改
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # FastCGI 的端口, 如果按照本文上面的方式安装的 PHP, 那么无需修改, 默认为 9000.
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_send_timeout 36000s;
fastcgi_read_timeout 36000s;
fastcgi_buffer_size 1024k;
fastcgi_buffers 8 1024k;
fastcgi_busy_buffers_size 2048k;
fastcgi_temp_file_write_size 2048k;
fastcgi_intercept_errors on;
fastcgi_connect_timeout 36000s;
}
}
如果按照本文的方式安装的, 并且把档案放在 /www
的话, 那么只需要修改域名即可. 设置好之后使用 nginx -t
指令测试一下是否有错误, 仔细查看 Nginx 回传的资讯. 如果没有问题的话, 使用 systemctl reload nginx
重新载入 Nginx 的配置档案. 如果重新载入成功, 那么直接访问相关网站的域名 : http://你的域名/info.php
, 就可以看到如下界面 :
到此为止, 相关的搭建工作已经完成了, 接下来只要上传网站源码就可以了.
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :