• 首页
  • 博客
  • 问答
  • 快讯
  • 社区
  • 商城
  • 活动
文章
文章用户商铺专辑快讯圈子网址导航问答程序定制

{{userData.name}}已认证

文章

评论

关注

粉丝

¥{{role.user_data.money}}
{{role.user_data.credit}}
您已完成今天任务的
  • 私信列表所有往来私信

  • 财富管理余额、积分管理

  • 推广中心推广有奖励

    NEW
  • 任务中心每日任务

    NEW
  • 成为会员购买付费会员

  • 认证服务申请认证

    NEW
  • 小黑屋关进小黑屋的人

    NEW
  • 我的订单查看我的订单

  • 我的设置编辑个人资料

  • 进入后台管理

  • 首页
  • 后端
  • 前端
  • 人工智能
  • Android
  • 鸿蒙
  • 代码人生
  • 阅读
  • 科技
  • 学到
  • 青训营
  • 读书会
  • 福利
  • 公益
  • 新鲜事
  • 树洞
投稿

CentOS 7 完整部署指南:Nginx + PHP + MySQL 环境搭建

  • 后端
  • 12月24日
  • 编辑
JienDaPHP程序员

一、环境准备与系统更新

在开始安装之前,首先需要更新系统并安装必要的工具包,确保系统处于最新状态。

# 切换到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

根据提示完成以下配置:

  1. 输入临时密码
  2. 设置新密码
  3. 移除匿名用户(建议选择Y)
  4. 禁止root远程登录(根据需求选择)
  5. 移除测试数据库(建议选择Y)
  6. 重新加载权限表(选择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环境。建议定期更新系统和软件包,并做好数据备份工作。

版权声明:本文为JienDa博主的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
若内容若侵犯到您的权益,请发送邮件至:platform_service@jienda.com我们将第一时间处理!
所有资源仅限于参考和学习,版权归JienDa作者所有,更多请访问JienDa首页。

给TA赞助
共{{data.count}}人
人已赞助
后端

Token 管理工具:从设计到实现的完整指南

2025-12-23 10:47:25

后端

CentOS 8 PHP 7.4 安装与卸载全攻略:三种方法对比详解

2025-12-24 16:45:44

1 条回复 A文章作者 M管理员
  1. JienDa
    JienDaAMPHP程序员 初中lv2
    12月24日

❯

解锁会员权限

开通会员

解锁海量优质VIP资源

立刻开通

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
客服
  • 扫码打开当前页

  • 微信小程序

  • App下载

  • 百度小程序

  • 抖音小程序

  • 微信客服

返回顶部
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分

今日签到

连续签到

  • {{item.credit}}
  • 连续{{item.count}}天
查看所有
我的优惠劵
  • ¥优惠劵
    使用时效:无法使用
    使用时效:

    之前

    使用时效:永久有效
    优惠劵ID:
    ×
    限制以下商品使用: 限制以下商品分类使用: 不限制使用:
    [{{ct.name}}]
    所有商品和商品类型均可使用
没有优惠劵可用!

购物车
  • ×
    删除
购物车空空如也!

清空购物车 前往结算
您有新的私信
没有新私信
写新私信 查看全部

关于我们

JienDa是一个专注于PHP技术生态的开发者社区平台,通过技术分享、实战案例和行业洞察,为PHP开发者提供全方位的成长支持。

分类

JienDa团队

  • JienDa
  • 海之云
  • 阿伟
  • 简答

最近

  • Flutter 3.35 全面解析:开发效率迎来质的飞跃
  • Android Studio新版本Activity模板解析:全面屏与Edge-to-Edge适配指南
Copyright © 2025 JienDa
・闽ICP备2023000041号-21 ・闽公网安备35030202001165号
查询 87 次,耗时 1.1886 秒
首页专题认证
搜索菜单我的