我们将使用 Ubuntu 22.04 作为示例系统,因为它是目前最流行、文档最丰富的服务器发行版之一,本指南的大部分步骤也适用于其他 Debian/Ubuntu 系的发行版(如 Debian),以及基于 RHEL/CentOS 的发行版(如 Rocky Linux, AlmaLinux),只需稍作修改(如包管理器从 apt 改为 yum 或 dnf)。

总览:搭建网站服务器的完整流程
- 准备工作:获取一台云服务器或本地虚拟机,并连接到它。
- 系统初始化:更新系统、创建用户、配置防火墙。
- 安装 Web 服务器:选择 Nginx 或 Apache,这里以 Nginx 为例。
- 安装数据库:选择 MySQL (MariaDB)。
- 安装 PHP:以及 PHP-FPM,让 Nginx 能处理 PHP 请求。
- 配置 Nginx:创建虚拟主机,指向你的网站文件。
- 部署网站:上传你的网站代码(如 WordPress)。
- 测试:访问域名或 IP 地址,确认网站正常运行。
第一步:准备工作
-
获取服务器:
- 云服务器:阿里云、腾讯云、华为云、AWS、DigitalOcean、Vultr 等,选择一个你所在地区速度较快、价格合理的服务商。
- 本地虚拟机:可以使用 VMware, VirtualBox 等软件在本地电脑上创建一个 Linux 虚拟机。
-
连接服务器:
- 使用 SSH 客户端连接到你的服务器,你需要知道服务器的公网 IP 地址。
- 在 Windows 上,可以使用
PowerShell或cmd,或者更专业的工具如Xshell,MobaXterm。 - 在 macOS 或 Linux 上,可以直接使用自带的终端。
- 命令格式:
ssh root@你的服务器IP地址 - 首次连接会提示你确认主机密钥,输入
yes即可。 - 然后输入你在购买服务器时设置的 root 用户密码。
-
更新系统:
- 登录后,第一件事就是更新系统软件包列表和已安装的软件,确保所有软件都是最新的。
sudo apt update sudo apt upgrade -y
- 登录后,第一件事就是更新系统软件包列表和已安装的软件,确保所有软件都是最新的。
第二步:系统初始化安全配置
-
创建一个新的管理员用户:
(图片来源网络,侵删)- 直接使用
root用户操作存在安全风险,建议创建一个具有sudo权限的新用户。# 创建一个名为 'adminuser' 的用户,请替换成你喜欢的用户名 sudo adduser adminuser
系统会提示你设置新用户的密码和相关信息,可以直接回车使用默认值。
- 直接使用
-
授予
sudo权限:- 将新用户添加到
sudo用户组。sudo usermod -aG sudo adminuser
- 将新用户添加到
-
切换到新用户:
- 退出当前 SSH 会话 (
exit),然后使用新用户名重新登录。ssh adminuser@你的服务器IP地址
- 退出当前 SSH 会话 (
-
配置防火墙:
(图片来源网络,侵删)- UFW (Uncomplicated Firewall) 是一个易于使用的防火墙工具。
- 允许 SSH 连接(否则你可能把自己锁在外面!),然后允许 HTTP (80) 和 HTTPS (443) 端口,这是网站服务必需的。
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable
当提示
Command may disrupt existing ssh connections.时,输入y确认。
第三步:安装 Web 服务器 (Nginx)
Nginx 是一个高性能、轻量级的 Web 服务器和反向代理服务器,非常适合现代网站。
-
安装 Nginx:
sudo apt install nginx -y
-
启动并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
-
检查 Nginx 状态:
sudo systemctl status nginx
如果看到绿色的
active (running),说明 Nginx 已经成功运行。 -
测试:
- 在浏览器中输入你的服务器公网 IP 地址。
- 如果能看到 "Welcome to nginx!" 页面,说明 Nginx 安装成功!
第四步:安装数据库 (MySQL / MariaDB)
MySQL 是最流行的关系型数据库管理系统,在 Ubuntu 上,通常推荐安装它的分支 MariaDB。
-
安装 MariaDB:
sudo apt install mariadb-server -y
-
启动并设置开机自启:
sudo systemctl start mariadb sudo systemctl enable mariadb
-
安全配置:
- 运行安全脚本,它会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等。
sudo mysql_secure_installation
- 按提示操作:
Enter current password for root (enter for none):直接回车(因为刚安装,root 默认无密码)。Switch to unix_socket authentication [Y/n]:建议输入n,因为对于服务器来说,使用密码认证更灵活。Set root password? [Y/n]:输入Y并设置一个强密码。- 接下来会有一系列问题,如
Remove anonymous users?,Disallow root login remotely?,Remove test database?,Reload privileges?,全部输入Y即可。
- 运行安全脚本,它会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等。
第五步:安装 PHP 和 PHP-FPM
PHP 是一种服务器端脚本语言,用于处理动态网页内容,PHP-FPM (FastCGI Process Manager) 是一个 PHP 的 FastCGI 实现,能让 Nginx 将 PHP 请求交给它处理。
-
安装 PHP 和必要的扩展:
php-fpm是核心包。php-mysql是让 PHP 能够连接 MySQL 数据库的扩展。php-curl,php-gd,php-intl,php-mbstring,php-xml,php-zip等是很多流行应用(如 WordPress, Laravel)需要的常用扩展。sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-zip -y
-
检查 PHP-FPM 状态:
sudo systemctl status php8.1-fpm
注意:你的 PHP 版本号可能是
php8.0-fpm或php8.2-fpm,取决于 Ubuntu 的版本,确保状态为active (running)。
第六步:配置 Nginx 虚拟主机
虚拟主机允许你在一台服务器上托管多个网站,我们将为你的第一个网站创建一个配置。
-
创建网站目录:
- 我们将在
/var/www目录下创建一个以你的域名(example.com)命名的文件夹。sudo mkdir -p /var/www/example.com
- 我们将在
-
设置目录权限:
- 让当前用户(
adminuser)拥有该目录的所有权,这样你就不需要每次都用sudo来操作文件了。sudo chown -R $USER:$USER /var/www/example.com
- 设置正确的权限:
sudo chmod -R 755 /var/www/example.com
- 让当前用户(
-
创建 Nginx 配置文件:
- 在
/etc/nginx/sites-available/目录下创建一个新的配置文件。sudo nano /etc/nginx/sites-available/example.com
- 粘贴到文件中,务必将
example.com和server_ip替换成你自己的域名和服务器 IP。
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } location ~ /\.ht - 在
