温馨提示×

centos lnmp端口如何设置

小樊
45
2026-01-10 21:51:18
栏目: 智能运维

CentOS 上 LNMP 各组件端口设置与放行

一、前置检查与放行策略

  • 确认系统版本与防火墙类型:CentOS 7/8 默认使用 firewalld;CentOS 6 使用 iptables
  • 云服务器需同时完成两处放行:
    1. 实例的安全组入方向放行对应端口(如 22/80/443/3306 等);
    2. 操作系统防火墙放行相同端口。
  • 注意:仅放行安全组不等于系统防火墙已放行,二者需同时配置。

二、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 端口 后再重启服务。
  • 云服务器安全组:放行端口与系统防火墙放行需同时完成。

0