centos lnmp端口如何设置
小樊
45
2026-01-10 21:51:18
CentOS 上 LNMP 各组件端口设置与放行
一、前置检查与放行策略
- 确认系统版本与防火墙类型:CentOS 7/8 默认使用 firewalld;CentOS 6 使用 iptables。
- 云服务器需同时完成两处放行:
- 实例的安全组入方向放行对应端口(如 22/80/443/3306 等);
- 操作系统防火墙放行相同端口。
- 注意:仅放行安全组不等于系统防火墙已放行,二者需同时配置。
二、Nginx 端口设置
- 修改监听端口:编辑站点或主配置文件(常见路径 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/*.conf),将 server 块的 listen 80; 改为目标端口(如 81),保存后检测并重载:
- 检测配置:nginx -t
- 重载:systemctl reload nginx
- 放行防火墙(firewalld):
- 放行单端口:firewall-cmd --permanent --zone=public --add-port=81/tcp
- 放行常用服务:firewall-cmd --permanent --zone=public --add-service=http --add-service=https
- 使配置生效:firewall-cmd --reload
- 云服务器:在控制台安全组入方向放行相同端口。
三、PHP-FPM 端口设置
- 修改监听端口:编辑 /etc/php-fpm.d/www.conf,将 listen = 127.0.0.1:9000 改为如 127.0.0.1:8999(或改为 unix:/var/run/php-fpm/php-fpm.sock 使用 Unix 套接字)。
- 同步 Nginx 配置:在 /etc/nginx/conf.d/*.conf 的 PHP 处理 location 中,将 fastcgi_pass 127.0.0.1:9000; 改为 fastcgi_pass 127.0.0.1:8999;。
- 重启服务:
- systemctl restart php-fpm
- systemctl reload nginx
- 说明:若使用 Unix 套接字,通常无需为 9000 放行防火墙。
四、MySQL/MariaDB 端口设置
- 修改监听端口:编辑 /etc/my.cnf(或 MariaDB 的 /etc/my.cnf.d/server.cnf),在 [mysqld] 下设置 port=新端口(如 3323),保存并重启:systemctl restart mysqld。
- 放行防火墙(firewalld):firewall-cmd --permanent --zone=public --add-port=3323/tcp && firewall-cmd --reload。
- SELinux(如启用):允许新端口被 mysqld 使用(以 2604 为例):
- 安装工具:yum install -y policycoreutils-python-utils
- 添加端口类型:semanage port -a -t mysqld_port_t -p tcp 2604
- 重启:systemctl restart mysqld
- 云服务器:在安全组入方向放行新端口。
- 验证:mysql -u root -p -P 新端口 登录,或执行 SQL:SHOW GLOBAL VARIABLES LIKE ‘port’;。
五、CentOS 6 与常见排错
- CentOS 6 放行示例(iptables):
- 放行 80/443/3306:
- iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- iptables -I INPUT -p tcp --dport 443 -j ACCEPT
- iptables -I INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT(仅本机访问)
- iptables -I INPUT -p tcp --dport 3306 -j DROP(禁止外部访问)
- 保存:service iptables save(不同系统可能路径不同)。
- 端口占用检查:ss -tulnp | grep 端口 或 netstat -tulnp | grep 端口。
- SELinux 拦截导致重启失败:使用 semanage port -a -t mysqld_port_t -p tcp 端口 后再重启服务。
- 云服务器安全组:放行端口与系统防火墙放行需同时完成。