- 基础系统准备:更新系统、创建用户、配置防火墙。
- 安装 Web 服务器:选择并安装 Nginx 或 Apache。
- 安装数据库:安装 MySQL/MariaDB。
- 安装编程语言环境:安装 PHP (用于 LAMP 或 LNMP)。
- 部署测试网站:创建一个虚拟主机/服务器块并测试。
- 可选高级配置:安装 Let's Encrypt SSL 证书、配置文件管理等。
第 0 步:准备工作
在开始之前,你需要:

- 一台已经安装好 Ubuntu 22.04 的服务器(可以是云服务器如 AWS, Google Cloud, Vultr,或本地虚拟机)。
- 服务器的公网 IP 地址。
- 能够通过 SSH 登录到服务器的 root 用户或一个具有 sudo 权限的用户。
# 以 root 用户登录,或者切换到 root sudo -i # 或者,如果你有一个普通用户,直接登录并使用 sudo # ssh your_user@your_server_ip
第 1 步:基础系统配置
这是所有服务器配置的第一步,确保系统安全且是最新的。
1 更新系统包列表
apt update
2 升级已安装的软件包
apt upgrade -y
-y 参数表示对所有提示回答 "是"。
3 设置服务器主机名
一个好的主机名有助于服务器管理。
hostnamectl set-hostname your-server-hostname
hostnamectl set-hostname web-server-01

4 创建一个新的管理用户(推荐)
直接使用 root 用户操作有风险,建议创建一个具有 sudo 权限的普通用户。
# 创建一个新用户,'admin' adduser admin # 将新用户添加到 'sudo' 组,使其拥有管理员权限 usermod -aG sudo admin
现在你可以退出 SSH,然后用 ssh admin@your_server_ip 重新登录,后续操作都使用这个 admin 用户。
5 配置 UFW 防火墙
UFW (Uncomplicated Firewall) 是一个简单易用的防火墙工具。
# 允许 SSH 连接(非常重要!) sudo ufw allow OpenSSH # 如果你计划使用 Web 服务器,请开放相应的端口 # 对于 Nginx sudo ufw allow 'Nginx Full' # 同时允许 HTTP (80) 和 HTTPS (443) # 或者对于 Apache sudo ufw allow 'Apache Full' # 启用防火墙 sudo ufw enable
系统会提示你确认,输入 y 并回车,防火墙现在已启动,并会阻止所有未经授权的入站连接。

第 2 步:选择并安装 Web 服务器
你有两个主流选择:Apache 和 Nginx。
- Apache: 历史悠久,功能强大,配置灵活,兼容性好,通过
.htaccess文件可以在不修改主配置文件的情况下控制目录。 - Nginx: 高性能,资源占用少,擅长处理高并发静态文件请求和反向代理,配置通常更简洁,但初学者可能觉得不那么直观。
建议:
- 如果你的网站主要包含 PHP 动态页面,并且需要大量
.htaccess规则,Apache 是一个稳妥的选择。 - 如果你需要处理大量静态文件、API 请求,或者未来可能配置负载均衡,Nginx 是更好的选择。
这里我们分别介绍如何安装两者。
选项 A: 安装 Nginx (推荐)
sudo apt install nginx -y
安装后,Nginx 会自动启动,你可以检查其状态:
sudo systemctl status nginx
选项 B: 安装 Apache
sudo apt install apache2 -y
同样,检查其状态:
sudo systemctl status apache2
第 3 步:安装数据库 (MySQL/MariaDB)
大多数现代 Web 应用(如 WordPress, Drupal)都需要数据库来存储数据,Ubuntu 默认使用 MariaDB,它是 MySQL 的一个流行的分支。
sudo apt install mariadb-server mariadb-client -y
安装完成后,安全地配置数据库:
sudo mysql_secure_installation
这个交互式脚本会引导你完成以下步骤:
- Set root password? (设置 root 密码) -> 输入
Y并设置一个强密码。 - Remove anonymous users? (移除匿名用户) ->
Y(安全)。 - Disallow root login remotely? (禁止 root 远程登录) ->
Y(安全)。 - Remove test database and access to it? (移除测试数据库) ->
Y(安全)。 - Reload privilege tables now? (现在重新加载权限表) ->
Y。
第 4 步:安装 PHP (LAMP/LNMP 的 "P")
PHP 是一种服务器端脚本语言,用于创建动态网页。
1 安装 PHP 和常用扩展
# 安装 PHP 和一些最常用的扩展 sudo apt install php php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
php-fpm(FastCGI Process Manager) 是 Nginx 和 Apache 运行 PHP 的推荐方式。php-mysql让 PHP 能够与 MySQL/MariaDB 数据库通信。- 其他扩展是许多流行 CMS (如 WordPress) 所需的。
2 根据你的 Web 服务器进行配置
-
如果你使用的是 Nginx: PHP-FPM 通常已经配置好并作为服务运行,你只需要在后续的 Nginx 配置文件中指向它即可。
-
如果你使用的是 Apache: 你需要启用
php模块来让 Apache 能够处理 PHP 文件。sudo a2enmod php8.1 # 请根据你安装的 PHP 版本调整,php8.0 sudo systemctl restart apache2
第 5 步:部署你的第一个网站
现在我们创建一个虚拟主机(Nginx 中称为 "服务器块")来托管你的网站。
1 创建网站目录
假设我们要部署一个名为 example.com 的网站。
# 创建网站根目录 sudo mkdir -p /var/www/example.com/html # 设置目录所有者为当前用户,这样你就不需要用 sudo 来编辑文件 sudo chown -R $USER:$USER /var/www/example.com/html # 设置适当的权限 sudo chmod -R 755 /var/www/example.com
2 创建测试页面
创建一个简单的 index.php 文件来测试 PHP 是否正常工作。
nano /var/www/example.com/html/index.php
在打开的编辑器中,输入以下内容:
<?php phpinfo(); ?>
保存并退出 (Ctrl+X, 然后按 Y, 最后按 Enter)。
3 创建 Nginx 服务器块配置
sudo nano /etc/nginx/sites-available/example.com
粘贴以下配置,并根据你的实际情况修改 server_name 和 root 路径。
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 确保这里的版本号和你的匹配
}
location ~ /\.ht {
deny all;
}
}
注意: fastcgi_pass 行中的 php8.1-fpm.sock 可能需要根据你安装的 PHP 版本进行修改,你可以用 ls /var/run/php/ 来查看确切的文件名。
4 启用新的配置
创建一个符号链接来激活这个配置文件。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
5 测试并重新加载 Nginx
# 测试配置文件语法是否正确 sudo nginx -t # 如果测试通过,重新加载 Nginx 以应用更改 sudo systemctl reload nginx
6 Apache 配置 (如果你使用 Apache)
如果你使用的是 Apache,配置过程类似。
-
创建配置文件:
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80> ServerAdmin webmaster@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> -
启用站点:
sudo a2ensite example.com.conf
-
禁用默认站点 (可选):
sudo a2dissite 000-default.conf
-
重启 Apache:
sudo systemctl restart apache2
第 6 步:访问你的网站
你需要将你的域名 example.com 的 DNS A 记录指向你的服务器 IP 地址。
等待 DNS 传播完成(可能需要几分钟到几小时),然后用浏览器访问 http://example.com。
- 如果你看到一个包含 "It works!" 的页面(Apache)或一个显示 PHP 信息的页面(Nginx),恭喜你!你的 Web 服务器已经成功运行。
- 如果你看到 PHP 信息页面,说明 PHP 也配置成功了。
第 7 步:可选但重要的后续配置
1 安装 Let's Encrypt SSL 证书 (HTTPS)
为你的网站启用 HTTPS 是至关重要的,使用 Certbot 可以轻松获取和自动续签免费的 Let's Encrypt 证书。
# 安装 Certbot sudo apt install certbot python3-certbot-nginx -y # 获取并安装证书 sudo certbot --nginx -d example.com -d www.example.com
Certbot 会自动检测你的 Nginx 配置,并询问你将 HTTP 流量重定向到 HTTPS,选择 2 (Redirect) 是最佳实践。
证书到期后,Certbot 的定时任务会自动为你续签。
2 配置文件管理
随着网站增多,手动管理配置文件会很麻烦,你可以考虑使用 Ansible 这样的配置管理工具来自动化部署。
至此,你已经成功完成了一个功能齐全的 Ubuntu Web 服务器的初始配置:
- ✅ 系统安全: 更新、防火墙已配置。
- ✅ Web 服务: Nginx 或 Apache 已安装并运行。
- ✅ 数据库: MariaDB 已安装并安全配置。
- ✅ 后端语言: PHP 及其扩展已安装,并能与 Web 服务器和数据库协同工作。
- ✅ 网站部署: 创建了第一个虚拟主机,并部署了一个测试页面。
- ✅ 安全通信: (可选) 配置了 Let's Encrypt SSL 证书。
你可以基于这个坚实的基础,继续部署你的 WordPress、Next.js、Django 或任何其他 Web 应用程序了。
