凌峰创科服务平台

CentOS7如何配置web服务器?

  1. 准备工作:更新系统、设置防火墙和 SELinux。
  2. 安装 Nginx:配置和启动 Web 服务器。
  3. 安装 MariaDB:创建数据库和用户。
  4. 安装 PHP-FPM:让 Nginx 能够处理 PHP 文件。
  5. 整合与测试:创建一个 info.php 文件来验证整个环境是否工作正常。
  6. 后续步骤:部署网站、配置虚拟主机等。

第一步:准备工作 (系统初始化)

在开始安装任何软件之前,最好先将系统更新到最新状态,并确保防火墙和 SELinux 配置正确,以免服务无法访问。

CentOS7如何配置web服务器?-图1
(图片来源网络,侵删)

更新系统

打开终端,执行以下命令更新所有已安装的软件包:

sudo yum update -y

配置防火墙 (Firewalld)

CentOS 7 默认使用 firewalld 防火墙,我们需要为 HTTP (80) 和 HTTPS (443) 端口开放流量。

# 永久开放 HTTP (80) 端口
sudo firewall-cmd --permanent --add-service=http
# 永久开放 HTTPS (443) 端口
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙配置,使更改生效
sudo firewall-cmd --reload

(可选) 配置 SELinux

SELinux 是一个强大的安全模块,但配置不当会导致服务无法启动。对于新手,最简单的方法是将其设置为 permissive 模式(只记录警告,不阻止操作)或直接禁用。

检查 SELinux 状态:

CentOS7如何配置web服务器?-图2
(图片来源网络,侵删)
sestatus

如果状态为 enabled,你有以下选择:

  • 设置为 Permissive 模式 (推荐新手)

    # 临时设置(重启后失效)
    sudo setenforce 0
    # 永久设置
    sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

    设置后需要重启系统才能永久生效。

  • 完全禁用 (不推荐用于生产环境)

    CentOS7如何配置web服务器?-图3
    (图片来源网络,侵删)
    # 临时禁用
    sudo setenforce 0
    # 永久禁用
    sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

    同样,永久设置需要重启系统。


第二步:安装 Nginx

Nginx 是一个高性能的 HTTP 和反向代理服务器。

安装 EPEL 仓库

EPEL (Extra Packages for Enterprise Linux) 仓库提供了许多 CentOS 官方源中没有的软件包。

sudo yum install epel-release -y

安装 Nginx

sudo yum install nginx -y

启动并设置开机自启

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

检查 Nginx 状态

sudo systemctl status nginx

如果看到绿色的 active (running) 字样,说明 Nginx 已经成功运行。

测试 Nginx

在浏览器中访问你的服务器 IP 地址: http://<你的服务器IP地址>

你应该能看到 Nginx 的欢迎页面。


第三步:安装 MariaDB

MariaDB 是 MySQL 的一个分支,完全兼容 MySQL,并且是 CentOS 7 的默认数据库。

安装 MariaDB 服务器和客户端

sudo yum install mariadb-server mariadb -y

启动并设置开机自启

# 启动 MariaDB 服务
sudo systemctl start mariadb
# 设置开机自启
sudo systemctl enable mariadb

运行安全脚本

这个脚本可以帮助你设置 root 密码、移除匿名用户、禁止 root 远程登录等,强烈建议运行。

sudo mysql_secure_installation

按照提示操作:

  1. 输入当前 root 密码(默认为空,直接回车)。
  2. 设置 root 密码 (Y)。
  3. 移除匿名用户。
  4. 禁止 root 远程登录 (Y)。
  5. 移除 test 数据库 (Y)。
  6. 重新加载权限表 (Y)。

创建数据库和用户 (示例)

为了你的应用,你需要创建一个数据库和一个专门的用户。

  1. 登录 MariaDB

    mysql -u root -p

    输入你刚才设置的 root 密码。

  2. 执行 SQL 命令

    -- 创建一个名为 my_database 的数据库
    CREATE DATABASE my_database;
    -- 创建一个名为 my_user 的用户,密码为 'your_strong_password'
    CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'your_strong_password';
    -- 授予 my_user 对 my_database 的所有权限
    GRANT ALL PRIVILEGES ON my_database.* TO 'my_user'@'localhost';
    -- 刷新权限使更改生效
    FLUSH PRIVILEGES;
    -- 退出 MariaDB
    EXIT;

    请务必将 your_strong_password 替换为一个强密码。


第四步:安装 PHP-FPM

PHP-FPM (FastCGI Process Manager) 是一个 PHP 的 FastCGI 实现,Nginx 可以通过它来处理 PHP 文件。

安装 PHP-FPM 和常用扩展

sudo yum install php-fpm php-mysql php-gd php-xml php-mbstring -y

这里我们安装了 php-fpm 核心以及与 MySQL、GD 图像库、XML 和多字节字符串相关的常用扩展。

配置 PHP-FPM

PHP-FPM 默认以 apache 用户运行,这可能会引起权限问题,我们将其修改为 nginx 用户,以匹配 Nginx 的运行用户。

  1. 打开配置文件:

    sudo vim /etc/php-fpm.d/www.conf

    或者使用 nano

    sudo nano /etc/php-fpm.d/www.conf
  2. 找到并修改以下两行:

    ; user = apache
    ; group = apache

    将它们修改为:

    user = nginx
    group = nginx
  3. 保存并关闭文件,在 vim 中是 wq,在 nano 中是 Ctrl+X,然后按 Y 和回车。

启动并设置开机自启

# 启动 PHP-FPM 服务
sudo systemctl start php-fpm
# 设置开机自启
sudo systemctl enable php-fpm

第五步:整合 Nginx 和 PHP-FPM

现在我们需要告诉 Nginx,当遇到 .php 文件时,将其转发给 PHP-FPM 处理。

备份默认配置文件

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

修改 Nginx 主配置文件

打开 /etc/nginx/nginx.conf 文件:

sudo vim /etc/nginx/nginx.conf

找到 http 块中的 include /etc/nginx/conf.d/*.conf; 这一行,确保它没有被注释掉,这行的作用是加载 conf.d 目录下的所有配置文件。

修改默认站点配置

Nginx 的默认站点配置在 /etc/nginx/conf.d/default.conf,我们将修改它以支持 PHP。

sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
sudo vim /etc/nginx/conf.d/default.conf

然后粘贴以下配置:

server {
    listen       80;
    server_name  localhost; # 可以改成你的域名或IP
    # 网站根目录
    root   /usr/share/nginx/html;
    index  index.php index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    # 将所有 .php 文件都交给 PHP-FPM 处理
    location ~ \.php$ {
        # 网站根目录
        root           /usr/share/nginx/html;
        # 指定 PHP-FPM 的监听地址和脚本文件名
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    # 禁止访问隐藏文件(如 .htaccess, .git)
    location ~ /\.ht {
        deny all;
    }
}

重启 Nginx 和 PHP-FPM

为了让配置生效,我们需要重启这两个服务。

# 重启 PHP-FPM
sudo systemctl restart php-fpm
# 重启 Nginx
sudo systemctl restart nginx

创建测试文件

在网站根目录下创建一个 info.php 文件,用于测试 PHP 是否正常工作。

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

注意:为了安全,测试完成后应立即删除此文件。

测试整个环境

在浏览器中访问: http://<你的服务器IP地址>/info.php

如果看到一个包含大量 PHP 配置信息的页面,恭喜你!你的 LEMP (Linux, Nginx, MariaDB, PHP) 环境已经成功搭建!


第六步:后续步骤与最佳实践

  1. 部署你的网站

    • 将你的网站文件上传到 /usr/share/nginx/html 目录。

    • 如果使用 git,可以 git clone 到该目录。

    • 注意文件和目录权限:Nginx 运行用户是 nginx,所以你需要确保 nginx 用户有读写权限。

      # 设置网站目录所有者为 nginx:nginx
      sudo chown -R nginx:nginx /usr/share/nginx/html/your-site
      # 设置正确的目录和文件权限
      sudo find /usr/share/nginx/html/your-site -type d -exec chmod 755 {} \;
      sudo find /usr/share/nginx/html/your-site -type f -exec chmod 644 {} \;
  2. 配置虚拟主机 如果你需要托管多个网站(site1.comsite2.com),你应该为每个网站创建一个独立的配置文件,而不是修改 default.conf

    • /etc/nginx/conf.d/ 目录下创建新的配置文件,site1.com.conf
    • 在其中配置 server 块,指定 server_nameroot 目录。
    • 重启 Nginx 即可。
  3. 使用 Let's Encrypt 配置 HTTPS 对于生产环境,强烈建议使用 Let's Encrypt 为你的域名配置免费的 SSL 证书,启用 HTTPS,可以使用 certbot 工具自动化完成这个过程。

  4. 定期备份数据 设置定期备份你的 MariaDB 数据库和网站文件,以防数据丢失。

  5. 监控日志 定期查看 Nginx 的访问日志 (/var/log/nginx/access.log) 和错误日志 (/var/log/nginx/error.log),可以帮助你排查问题。

分享:
扫描分享到社交APP
上一篇
下一篇