如何在VPS的CentOS上从零开始部署Web网站?

在数字化时代,拥有一个独立部署的网站是许多开发者和企业迈向成功的关键一步,通过使用虚拟专用服务器(VPS)并搭载稳定可靠的CentOS操作系统,您可以获得极高的自由度和控制权,构建一个完全符合自己需求的Web环境,本文将详细、系统地介绍如何在CentOS VPS上部署一个功能完善的Web服务,涵盖从基础环境准备到核心组件安装配置的全过程。

如何在VPS的CentOS上从零开始部署Web网站?


前期准备与基础安全加固

在开始部署Web服务之前,充分的准备工作至关重要,它将直接影响后续部署的效率和服务器安全。

连接到VPS

您需要通过SSH(Secure Shell)协议连接到您的CentOS VPS,您可以使用终端(在Linux或macOS上)或PuTTY(在Windows上)等工具,连接命令通常为:

ssh root@您的服务器IP地址

输入密码后,您便以root用户身份登录了服务器。

系统更新与初始配置

登录后,首要任务是确保系统软件包是最新版本,以修复已知的安全漏洞。

yum update -y

执行完毕后,建议进行以下基础安全配置:

  • 创建非root用户:日常操作使用非root用户可以极大降低误操作或被攻击带来的风险。
    adduser 新用户名
    passwd 新用户名
    usermod -aG wheel 新用户名 # 将新用户加入wheel组,使其能使用sudo
  • 配置SSH密钥登录:相较于密码认证,SSH密钥认证更为安全,在本地机器生成密钥对(ssh-keygen),然后将公钥(~/.ssh/id_rsa.pub追加到服务器的~/.ssh/authorized_keys文件中。

核心Web组件的安装与选择

一个典型的Web服务环境通常包括Web服务器、数据库和编程语言环境,我们将以流行的LEMP(Linux, Nginx, MariaDB, PHP)架构为例进行部署。

安装Nginx Web服务器

Nginx以其高性能、低内存占用和强大的并发处理能力而备受青睐。

yum install epel-release -y
yum install nginx -y

安装完成后,启动Nginx服务并设置其开机自启。

systemctl start nginx
systemctl enable nginx

您可以在浏览器中访问您的VPS IP地址,如果看到Nginx的欢迎页面,则表示安装成功。

安装MariaDB数据库

MariaDB是MySQL的一个流行分支,完全兼容且保持开源活跃。

如何在VPS的CentOS上从零开始部署Web网站?

yum install mariadb-server mariadb -y
systemctl start mariadb
systemctl enable mariadb

运行安全安装脚本,它会引导您设置root密码、移除匿名用户、禁止远程root登录等。

mysql_secure_installation

按照提示操作即可,建议对所有安全选项都选择“是”(Y)。

安装PHP及其扩展

PHP是许多动态网站(如WordPress)的核心,我们需要安装PHP-FPM(FastCGI Process Manager),它与Nginx配合默契。

yum install php php-fpm php-mysqlnd php-gd php-xml php-mbstring -y
  • php-mysqlnd:用于PHP与MariaDB数据库通信。
  • php-gd, php-xml, php-mbstring:许多Web应用常用的扩展。

启动并启用PHP-FPM服务:

systemctl start php-fpm
systemctl enable php-fpm

组件整合与配置

安装完成后,需要将Nginx、PHP-FPM和MariaDB有机地整合在一起。

配置Nginx以处理PHP请求

Nginx默认不处理PHP文件,需要将其转发给PHP-FPM,我们需要创建或修改Nginx的配置文件,通常在/etc/nginx/conf.d/目录下创建一个新的.conf文件,例如mywebsite.conf

server {
    listen       80;
    server_name  您的域名或IP地址;
    root   /usr/share/nginx/html; # 网站文件根目录
    index  index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000; # PHP-FPM默认监听的端口
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

配置完成后,检查Nginx配置语法并重载服务:

nginx -t
systemctl reload nginx

配置PHP-FPM

编辑PHP-FPM的配置文件/etc/php-fpm.d/www.conf,确保其运行用户和用户组与Nginx一致(默认通常是apache,可以修改为nginx以避免权限问题):

user = nginx
group = nginx

修改后,重启PHP-FPM服务:

systemctl restart php-fpm

测试环境连通性

在网站根目录(/usr/share/nginx/html/)创建一个PHP信息文件info.php

如何在VPS的CentOS上从零开始部署Web网站?

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

然后在浏览器中访问 http://您的IP地址/info.php,如果能看到PHP的详细信息页面,说明整个LEMP环境已经搭建成功,测试后务必删除此文件,以防泄露服务器信息。

网站部署与后续维护

上传网站文件

您可以使用scprsync命令,或者FileZilla、WinSCP等SFTP工具,将您的网站程序文件上传到之前配置的网站根目录。

设置文件权限

确保Nginx用户(如nginx)对网站文件及目录拥有适当的读写权限,通常可以这样设置:

chown -R nginx:nginx /usr/share/nginx/html/
chmod -R 755 /usr/share/nginx/html/

配置防火墙

CentOS 7及以上版本默认使用firewalld,需要开放HTTP(80)和HTTPS(443)端口。

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

配置域名与SSL

  • 域名解析:在您的域名提供商管理后台,将域名的A记录指向您的VPS IP地址。
  • 安装SSL证书:为了启用HTTPS,强烈建议安装SSL证书,可以使用Let’s Encrypt提供的免费证书,通过certbot工具可以轻松完成自动申请和续期。

相关问答FAQs

问题1:为什么推荐使用非root用户进行日常操作,而不是直接使用root?

解答: 这是一项基本的安全最佳实践,root用户拥有对系统的最高、无限制的权限,任何在root账户下的误操作(例如rm -rf /)都可能导致整个系统被摧毁,如果攻击者通过某个漏洞获取了root shell,服务器将完全沦陷,使用普通用户进行日常操作,只有在确实需要执行管理任务时才通过sudo提权,可以形成一个权限“缓冲带”,这样既能完成必要工作,又极大地降低了因操作失误或安全漏洞导致灾难性后果的风险。

问题2:网站文件上传后,浏览器访问显示“403 Forbidden”错误,这是什么原因造成的?

解答: “403 Forbidden”错误表示服务器理解了您的请求,但拒绝执行,这通常是由以下两个原因造成的:

  1. 文件或目录权限不正确:Nginx(或Apache)进程运行时需要一个特定的用户(如nginxapache),如果这个用户对您的网站文件或目录没有读取(r)和执行(x)权限,就会返回403错误,您需要使用chownchmod命令确保文件所有者和权限设置正确,例如chown -R nginx:nginx /path/to/your/site
  2. SELinux(Security-Enhanced Linux)限制:CentOS默认启用了SELinux,它是一个强制访问控制(MAC)安全模块,即使文件权限正确,SELinux也可能阻止Nginx访问这些文件,您可以使用命令ls -Z /path/to/your/site查看文件的SELinux上下文,对于网站文件,正确的上下文通常是httpd_sys_content_t,如果上下文不正确,可以使用命令semanage fcontext -a -t httpd_sys_content_t "/path/to/your/site(/.*)?"restorecon -Rv /path/to/your/site来修复。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-23 21:15
下一篇 2025-10-23 21:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信