努力
加油

CentOS 7.6 上如何搭建一个简单的网站服务器?

在 CentOS 7.6 上搭建网站服务器,核心思路非常清晰:Web 软件选择 + 依赖环境配置 + 服务启动与优化。

目前最主流、稳定且资源占用合理的组合是 Nginx + PHP (FPM) + MySQL/MariaDB,也就是常说的 LNMP 架构。相比 Apache,Nginx 在高并发场景下表现更好,也更符合现代云服务器的使用习惯。

以下是基于 CentOS 7.6 的标准操作步骤,尽量贴近生产环境的实际部署逻辑,去掉花哨的废话,直接上干货。

一、 基础环境准备

首先,确保你的云服务器安全组(或防火墙)已经放行了 80 (HTTP) 和 443 (HTTPS) 端口。如果是在本地虚拟机测试,记得关闭防火墙或开放相应端口:

# 查看防火墙状态
systemctl status firewalld

# 如果为了测试方便,可以直接停止防火墙(生产环境建议只开特定端口)
systemctl stop firewalld
systemctl disable firewalld

# 或者添加规则放行 80 和 443 端口
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

二、 安装 Nginx

CentOS 7 默认的 YUM 源里包含 Nginx,虽然版本不是最新的,但对于建站来说完全够用且稳定。

# 更新系统包
yum update -y

# 安装 Nginx
yum install nginx -y

# 设置开机自启并启动服务
systemctl enable nginx
systemctl start nginx

验证是否成功:访问 http://<你的服务器IP>,应该能看到 “Welcome to nginx!” 的默认页面。

三、 安装 PHP 及 FPM

CentOS 7.6 默认 YUM 源中的 PHP 版本通常是 5.4,这太老了,很多现代 CMS(如 WordPress 5.x+)都不支持。我们需要升级到 PHP 7.2 或 7.4。这里推荐使用 Remi 源来获取较新的 PHP 版本。

  1. 启用 EPEL 和 Remi 源:
yum install epel-release -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
  1. 启用 PHP 7.4 模块(推荐版本,平衡稳定性和新特性):
yum module list php
yum module enable php:remi-7.4 -y
  1. 安装 PHP 及相关扩展:
yum install php php-fpm php-mysqlnd php-gd php-json php-mbstring php-xml php-zip -y

注:php-fpm 是 FastCGI Process Manager,用于处理动态请求;其他扩展根据实际需求添加,比如做图片处理需要 GD,做 JSON 交互需要 json 等。

  1. 启动 PHP-FPM:
systemctl enable php-fpm
systemctl start php-fpm

四、 安装 MariaDB (MySQL 分支)

国内云服务器通常推荐安装 MariaDB,它是 MySQL 的一个开源分支,兼容性好,且在 CentOS 中是默认数据库选项。

yum install mariadb-server mariadb -y

systemctl enable mariadb
systemctl start mariadb

初始化数据库安全设置:

mysql_secure_installation

按照提示操作:

  • 设置 root 密码。
  • 移除匿名用户。
  • 禁止 root 远程登录(除非你有特殊需求,否则强烈建议禁止)。
  • 删除 test 数据库。
  • 重新加载权限表。

五、 配置 Nginx 与 PHP 联动

这是最关键的一步。默认情况下,Nginx 不会处理 .php 文件,我们需要修改配置文件,让 Nginx 将 PHP 请求转发给 PHP-FPM。

  1. 编辑 Nginx 站点配置文件:
vi /etc/nginx/conf.d/default.conf

找到 location / { ... } 部分,修改为以下内容(主要改动在于增加 index.php 和 location ~ .php$):

server {
    listen       80;
    server_name  localhost; # 如果有域名,可以改成你的域名

    root   /usr/share/nginx/html; # 网站根目录
    index  index.html index.htm index.php; # 优先寻找 index.php

    location / {
        try_files $uri $uri/ =404;
    }

    # 处理 PHP 文件
    location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock; # 注意:这里是 socket 路径,需确认是否与 php.ini 一致
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 隐藏 .htaccess 等敏感文件
    location ~ /. {
        deny all;
    }
}

注意:fastcgi_pass 的路径取决于 /etc/php-fpm.d/www.conf 中的设置。CentOS 7 默认通常使用 socket (/run/php-fpm/www.sock)。如果使用 TCP (127.0.0.1:9000),请相应修改此处。

  1. 测试 Nginx 配置并重载:
nginx -t
systemctl reload nginx

六、 验证环境

在网站根目录创建一个 PHP 测试文件:

echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php

浏览器访问 http://<你的服务器IP>/info.php。如果能看到详细的 PHP 信息页面,说明 Nginx + PHP + FPM 配置成功。

安全提示:测试完成后,务必删除 info.php,防止泄露服务器信息。

rm /usr/share/nginx/html/info.php

七、 上传网站代码

你可以直接将你的网站程序(如 WordPress, ThinkPHP, Laravel 等)解压到 /usr/share/nginx/html/ 目录下。

以 WordPress 为例:

cd /usr/share/nginx/html/
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -zxvf latest-zh_CN.tar.gz
mv wordpress/* .
rm -rf wordpress latest-zh_CN.tar.gz
chown -R nginx:nginx /usr/share/nginx/html/ # 确保权限正确
chmod -R 755 /usr/share/nginx/html/

然后访问 http://<你的服务器IP>,进入 WordPress 的安装向导,输入之前设置的数据库信息即可。

八、 进阶建议(生产环境必看)

  1. 配置 HTTPS (SSL):
    现在没有 SSL 的网站会被浏览器标记为“不安全”。建议使用 Let’s Encrypt 免费证书,通过 Certbot 工具一键配置:

    yum install certbot python2-certbot-nginx -y
    certbot --nginx

    按照提示输入邮箱和域名,Certbot 会自动帮你修改 Nginx 配置并申请证书。

  2. 性能优化:

    • 调整 Nginx 的 worker_processes 为 CPU 核心数。
    • 调整 PHP-FPM 的 pm.max_children 等参数,根据内存大小合理分配,避免 OOM(内存溢出)。
    • 开启 OPcache 提升 PHP 执行效率。
  3. 备份策略:
    定期备份数据库和网站文件。可以使用脚本结合 Crontab 实现自动备份并上传到 OSS/S3 等对象存储。

  4. 监控:
    安装 netdata 或 zabbix-agent 监控服务器负载、CPU、内存和网络流量。

总结

在 CentOS 7.6 上搭建网站,核心就是 Nginx 做反向XX,PHP-FPM 处理动态内容,MariaDB 存储数据。整个过程大约 15-20 分钟即可完成。对于初学者,建议先跑通这个流程,后续再根据业务需求引入 Redis 缓存、CDN 提速或负载均衡等高阶架构。