在互联网的广阔天地中,拥有一个完全由自己掌控的网站是许多开发者和企业主的梦想,通过使用CentOS VPS(虚拟专用服务器)来建站,您不仅能获得极高的性能和稳定性,还能拥有对服务器环境的完全控制权,本教程将引导您一步步在CentOS系统上搭建一个安全、高效的网站环境,我们将采用业界流行的LEMP架构(Linux、Nginx、MariaDB、PHP),它以其轻量和高性能而著称。
准备工作与初始连接
在开始之前,请确保您已具备以下条件:
- 一台已购买并初始化的CentOS VPS(本教程基于CentOS 7/8编写,大部分步骤同样适用于CentOS Stream)。
- 一个SSH客户端,如Windows下的PuTTY或macOS/Linux系统自带的终端。
- 您VPS的IP地址、root用户的密码或SSH密钥。
我们需要通过SSH连接到您的服务器,打开您的终端或PuTTY,输入以下命令并将your_server_ip
替换为您的VPS公网IP地址:
ssh root@your_server_ip
首次连接时,系统会提示您接受服务器的指纹,输入yes
并回车,然后输入root密码即可成功登录。
系统基础配置
为了服务器的安全和稳定,进行基础配置是必不可少的第一步。
更新系统
登录后,首先执行系统更新,确保所有软件包都是最新版本。
yum update -y
创建非root用户
直接使用root用户进行日常操作存在安全风险,我们建议创建一个拥有sudo权限的新用户。
# 创建一个新用户,'webmaster' adduser webmaster # 为该用户设置密码 passwd webmaster # 将新用户添加到 'wheel' 组,使其拥有sudo权限 usermod -aG wheel webmaster
之后,您可以使用 ssh webmaster@your_server_ip
命令登录新用户,并在需要管理员权限的命令前加上 sudo
。
配置防火墙
CentOS默认使用firewalld
作为防火墙管理工具,我们需要开启HTTP(80)和HTTPS(443)端口,以便用户能够访问网站。
# 启动 firewalld sudo systemctl start firewalld # 设置开机自启 sudo systemctl enable firewalld # 永久开放HTTP和HTTPS服务 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https # 重载防火墙规则使配置生效 sudo firewall-cmd --reload
安装LEMP环境
我们将安装构成LEMP架构的核心组件。
安装Nginx
Nginx是一款高性能的Web服务器,负责处理HTTP请求和提供静态文件。
sudo yum install nginx -y # 启动Nginx sudo systemctl start nginx # 设置Nginx开机自启 sudo systemctl enable nginx
在浏览器中访问您的VPS IP地址,应该能看到Nginx的默认欢迎页面。
安装MariaDB
MariaDB是MySQL的一个流行分支,完全兼容且保持开源。
sudo yum install mariadb-server mariadb -y # 启动MariaDB sudo systemctl start mariadb # 设置MariaDB开机自启 sudo systemctl enable mariadb
安装后,运行安全安装脚本来进行基础安全配置,如设置root密码、移除匿名用户等。
sudo mysql_secure_installation
按照提示操作,建议对所有问题都回答Y
(是)。
安装PHP
PHP是处理动态内容的服务器端脚本语言,我们需要安装PHP本身以及一些常用扩展。
sudo yum install php-fpm php-mysqlnd php-json php-gd php-mbstring -y
我们需要配置PHP-FPM,使其与Nginx协同工作,编辑配置文件:
sudo vi /etc/php-fpm.d/www.conf
找到以下两行,将其用户和组从apache
修改为nginx
:
user = nginx
group = nginx
保存并退出(在vi中,按Esc
,输入wq
回车)。
然后启动并启用PHP-FPM:
sudo systemctl start php-fpm sudo systemctl enable php-fpm
配置Nginx处理PHP请求
现在我们需要告诉Nginx如何将.php
文件的处理请求转发给PHP-FPM。
为您的网站创建一个新的Nginx配置文件:
sudo vi /etc/nginx/conf.d/your_domain.conf
粘贴到文件中,记得将your_domain
替换为您的实际域名或IP地址:
server { listen 80; server_name your_domain www.your_domain; root /usr/share/nginx/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ .php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
测试Nginx配置文件语法是否正确:
sudo nginx -t
如果显示syntax is ok
和test is successful
,则重启Nginx使配置生效:
sudo systemctl restart nginx
部署网站与启用HTTPS
部署网站文件
您可以通过SFTP(如FileZilla、WinSCP)工具,使用之前创建的webmaster
用户登录服务器,将您的网站文件上传到/usr/share/nginx/html
目录。
启用HTTPS(SSL证书)
为了数据传输安全,使用Let’s Encrypt提供的免费SSL证书是最佳选择。
首先安装Certbot:
sudo yum install epel-release -y sudo yum install certbot python3-certbot-nginx -y
运行Certbot来自动获取并安装证书:
sudo certbot --nginx -d your_domain -d www.your_domain
按照提示输入您的邮箱并同意服务条款,Certbot会自动修改Nginx配置,启用HTTPS并设置自动续期。
至此,您已经成功在CentOS VPS上搭建了一个功能完善的网站,您的网站现在可以通过https://your_domain
安全访问了。
相关问答FAQs
问题1:我忘记了MariaDB的root密码,该怎么办?
解答: 不要慌张,可以按照以下步骤重置:
- 停止MariaDB服务:
sudo systemctl stop mariadb
- 以“跳过权限检查”模式安全启动MariaDB:
sudo mysqld_safe --skip-grant-tables &
- 无密码登录:
mysql -u root
- 切换到
mysql
数据库并更新密码(将'new_password'
替换为您的强密码):FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; EXIT;
- 重启MariaDB服务:
sudo systemctl restart mariadb
,现在您可以使用新密码登录了。
问题2:我的网站无法访问,Nginx返回403 Forbidden错误,是什么原因?
解答: 403错误通常意味着权限问题,请按以下顺序排查:
- 文件权限: 确保网站文件及其目录的所有者是
nginx
用户和组,可以使用命令sudo chown -R nginx:nginx /usr/share/nginx/html
来修正。 - SELinux上下文: CentOS的SELinux可能会阻止Nginx访问文件,运行命令
sudo setsebool -P httpd_can_network_connect 1
临时允许网络连接,或使用sudo chcon -R -t httpd_sys_content_t /usr/share/nginx/html
为文件设置正确的SELinux安全上下文。 - Nginx配置: 检查
index
指令是否包含了您网站的默认首页文件(如index.php
或index.html
)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复