一、环境准备与系统更新
在开始安装之前,首先需要更新系统并安装必要的工具包,确保系统处于最新状态。
# 切换到root用户
sudo su -
# 更新系统包
yum update -y
# 安装常用工具
yum install -y wget curl vim git epel-release
注意事项:
- 如果系统已安装Apache,建议先卸载以避免端口冲突:
yum remove httpd* php* - 建议关闭SELinux以提高兼容性:
setenforce 0并编辑/etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled
二、安装Nginx
2.1 添加Nginx官方仓库
CentOS 7默认仓库中的Nginx版本较旧,建议使用官方仓库安装最新版本。
# 创建Nginx仓库配置文件
cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=0
enabled=1
EOF
# 更新元数据
yum makecache
2.2 安装Nginx
# 安装Nginx
yum install -y nginx
# 查看Nginx版本
nginx -v
安装成功后,应显示类似 nginx version: nginx/1.20.1的信息。
2.3 启动Nginx服务
# 启动Nginx
systemctl start nginx
# 设置开机自启
systemctl enable nginx
# 查看服务状态
systemctl status nginx
2.4 测试Nginx安装
在浏览器中输入服务器IP地址,如果看到Nginx欢迎页面,说明安装成功。默认网站根目录位于 /usr/share/nginx/html。
三、安装MySQL
3.1 添加MySQL官方仓库
CentOS 7默认不包含MySQL服务器,需要从MySQL官方仓库安装。
# 下载并安装MySQL官方仓库
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
# 如果遇到冲突,可能需要禁用默认的MySQL模块
yum module disable mysql
# 安装MySQL服务器
yum install -y mysql-community-server --nogpgcheck
3.2 启动MySQL服务
# 启动MySQL
systemctl start mysqld
# 设置开机自启
systemctl enable mysqld
# 查看MySQL版本
mysql -V
3.3 初始化MySQL安全设置
MySQL 5.7在首次安装时会生成临时密码,需要找到并修改。
# 查找临时密码
grep 'temporary password' /var/log/mysqld.log
# 运行安全配置脚本
mysql_secure_installation
根据提示完成以下配置:
- 输入临时密码
- 设置新密码
- 移除匿名用户(建议选择Y)
- 禁止root远程登录(根据需求选择)
- 移除测试数据库(建议选择Y)
- 重新加载权限表(选择Y)
3.4 配置MySQL远程访问(可选)
如果需要远程连接MySQL,需要修改权限:
# 登录MySQL
mysql -u root -p
# 创建远程访问用户
CREATE USER 'remote'@'%' IDENTIFIED BY 'your_password';
# 授予权限
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
四、安装PHP
4.1 添加PHP仓库
CentOS 7默认仓库中的PHP版本较旧,建议使用Remi仓库安装较新版本。
# 添加EPEL源
yum install -y epel-release
# 添加Remi仓库
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 启用PHP 7.4仓库(可根据需求选择版本)
yum-config-manager --enable remi-php74
4.2 安装PHP及相关扩展
# 安装PHP核心包
yum install -y php php-fpm php-cli php-common
# 安装常用扩展
yum install -y php-mysqlnd php-gd php-mbstring php-xml php-mcrypt php-pdo php-zip php-opcache
4.3 查看PHP版本
php -v
安装成功后,应显示类似 PHP 7.4.33的版本信息。
五、配置PHP-FPM
5.1 修改PHP-FPM配置文件
编辑 /etc/php-fpm.d/www.conf:
vim /etc/php-fpm.d/www.conf
修改以下配置项:
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
5.2 修改PHP配置文件
编辑 /etc/php.ini:
vim /etc/php.ini
修改以下配置项:
# 设置时区
date.timezone = Asia/Shanghai
# 提高上传文件大小限制
upload_max_filesize = 64M
post_max_size = 64M
# 提高内存限制
memory_limit = 256M
# 关闭路径信息修复
cgi.fix_pathinfo = 0
5.3 启动PHP-FPM服务
# 启动PHP-FPM
systemctl start php-fpm
# 设置开机自启
systemctl enable php-fpm
# 查看服务状态
systemctl status php-fpm
六、配置Nginx支持PHP
6.1 修改Nginx配置文件
编辑 /etc/nginx/nginx.conf:
vim /etc/nginx/nginx.conf
在 http块中添加或修改以下内容:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
6.2 检查配置文件语法
nginx -t
如果显示 nginx: configuration file /etc/nginx/nginx.conf test is successful,说明配置正确。
6.3 重启Nginx服务
systemctl restart nginx
七、防火墙配置
7.1 开放端口
CentOS 7默认使用firewalld防火墙,需要开放80端口(HTTP)和3306端口(MySQL)。
# 开放80端口
firewall-cmd --permanent --zone=public --add-port=80/tcp
# 开放3306端口(如果MySQL需要远程访问)
firewall-cmd --permanent --zone=public --add-port=3306/tcp
# 重新加载防火墙配置
firewall-cmd --reload
# 查看已开放的端口
firewall-cmd --list-ports
7.2 使用iptables(可选)
如果更习惯使用iptables,可以关闭firewalld并安装iptables:
# 关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
# 安装iptables
yum install -y iptables-services
# 编辑iptables规则
vim /etc/sysconfig/iptables
添加以下规则:
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 3306 -j ACCEPT
保存后重启iptables:
systemctl restart iptables
systemctl enable iptables
八、测试环境
8.1 创建测试PHP文件
在网站根目录创建测试文件:
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
8.2 访问测试页面
在浏览器中输入 http://服务器IP/info.php,如果看到PHP信息页面,说明环境配置成功。
8.3 测试MySQL连接
创建测试MySQL连接的PHP文件:
cat > /usr/share/nginx/html/test_mysql.php << EOF
<?php
\$servername = "localhost";
\$username = "root";
\$password = "your_password";
try {
\$conn = new PDO("mysql:host=\$servername;dbname=mysql", \$username, \$password);
echo "MySQL连接成功!";
} catch(PDOException \$e) {
echo "连接失败: " . \$e->getMessage();
}
?>
EOF
访问 http://服务器IP/test_mysql.php,如果显示”MySQL连接成功!”,说明MySQL配置正确。
九、常见问题与解决方案
9.1 Nginx 502 Bad Gateway
原因:PHP-FPM未启动或配置错误。
解决方案:
# 检查PHP-FPM状态
systemctl status php-fpm
# 重启PHP-FPM
systemctl restart php-fpm
# 检查PHP-FPM监听
netstat -tlnp | grep php-fpm
9.2 文件权限问题
原因:Nginx用户无法访问网站文件。
解决方案:
# 修改网站目录所有者
chown -R nginx:nginx /usr/share/nginx/html
# 修改PHP session目录权限
chown -R nginx:nginx /var/lib/php/session
9.3 SELinux导致的问题
原因:SELinux阻止了Nginx访问文件。
解决方案:
# 临时关闭SELinux
setenforce 0
# 永久关闭SELinux
vim /etc/selinux/config
# 修改 SELINUX=disabled
9.4 PHP扩展未加载
原因:PHP扩展未安装或未启用。
解决方案:
# 查看已加载的扩展
php -m
# 安装缺少的扩展
yum install php-扩展名
# 重启PHP-FPM
systemctl restart php-fpm
十、性能优化建议
10.1 PHP-FPM配置优化
编辑 /etc/php-fpm.d/www.conf:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
10.2 Nginx配置优化
编辑 /etc/nginx/nginx.conf:
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 65535;
multi_accept on;
use epoll;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
gzip on;
gzip_min_length 1k;
gzip_comp_level 2;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
10.3 MySQL配置优化
编辑 /etc/my.cnf:
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
query_cache_size = 64M
max_connections = 500
十一、安全加固
11.1 修改默认端口
# 修改MySQL端口
vim /etc/my.cnf
# 添加 port = 3307
# 修改Nginx端口
vim /etc/nginx/nginx.conf
# 修改 listen 8080;
11.2 禁用不必要的PHP函数
编辑 /etc/php.ini:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
11.3 配置Nginx访问限制
location /admin {
allow 192.168.1.0/24;
deny all;
}
location ~ \.php$ {
allow 127.0.0.1;
deny all;
}
十二、常用命令总结
| 命令 | 说明 |
|---|---|
systemctl start nginx |
启动Nginx |
systemctl stop nginx |
停止Nginx |
systemctl restart nginx |
重启Nginx |
systemctl status nginx |
查看Nginx状态 |
systemctl start php-fpm |
启动PHP-FPM |
systemctl restart php-fpm |
重启PHP-FPM |
systemctl start mysqld |
启动MySQL |
nginx -t |
检查Nginx配置 |
mysql -u root -p |
登录MySQL |
php -v |
查看PHP版本 |
mysql -V |
查看MySQL版本 |
通过以上步骤,您已经成功在CentOS 7上搭建了Nginx + PHP + MySQL环境。建议定期更新系统和软件包,并做好数据备份工作。
若内容若侵犯到您的权益,请发送邮件至:platform_service@jienda.com我们将第一时间处理!
所有资源仅限于参考和学习,版权归JienDa作者所有,更多请访问JienDa首页。







