首次开机前让80和443端口可用,关键在于配置firewalld永久规则并设为开机自启:执行sudo systemctl enable firewalld启用服务,再用sudo firewall-cmd --permanent --add-service=http --add-service=https添加内置服务规则,最后sudo firewall-cmd --reload生效;规则默认写入public zone,重启后自动加载。

首次开机前就让 80 和 443 端口可用,关键在于把防火墙规则写进系统启动前就生效的持久化配置里,而不是等开机后再手动执行命令。Firewalld 默认启用且开机自启,只要提前配好永久规则,首次启动时就会自动加载。
确认 firewalld 已启用并设为开机自启
安装系统时(如 CentOS/RHEL 7/8 或 Fedora),firewalld 通常默认安装并启用。若不确定,可在安装后首次登录时检查:
- 运行 systemctl is-enabled firewalld —— 返回 enabled 表示已设为开机自启
- 若未启用,执行 sudo systemctl enable firewalld
用服务名方式永久放行 HTTP 和 HTTPS
推荐使用 http 和 https 这两个内置服务名,而非硬写端口号。这样更安全、可读性高,也避免因端口被自定义修改而失效。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 执行命令一次性添加:
sudo firewall-cmd --permanent --add-service=http --add-service=https - 立即重载使规则进入运行时:
sudo firewall-cmd --reload - 验证是否生效:
sudo firewall-cmd --list-services 应显示 http https
确保规则写入默认 zone(通常是 public)
firewalld 按 zone 控制策略,默认 zone 一般为 public。Web 服务面向外网,必须确保 http/https 在该 zone 中启用:
- 查当前默认 zone:
sudo firewall-cmd --get-default-zone(多数为 public) - 若需显式指定 zone(例如明确作用于 public):
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload
验证首次开机效果
完成上述配置后重启系统,firewalld 会自动加载永久规则。无需额外脚本或 systemd 服务干预:
- 开机后执行 sudo firewall-cmd --list-services,应仍包含 http 和 https
- 从外部访问 http://服务器IP 和 https://服务器IP,可初步确认端口可达(前提是 Web 服务本身已运行且监听)
- 注意:若 Web 服务(如 Nginx/Apache)未启动或未监听 80/443,仅开放防火墙端口也无法访问










