- 准备工作
- 使用 Apache (HTTPD) - 最经典、文档最全
- 使用 Nginx - 高性能、轻量级
- 如何选择?
- 基本管理命令
- 配置防火墙
- 配置域名(可选)
- 后续:部署动态网站(如 PHP, Node.js)
准备工作
在开始之前,请确保你已经:

- 一台已经安装好 Ubuntu 系统的计算机或云服务器(如 Ubuntu 20.04 或 22.04 LTS 版本)。
- 拥有
sudo权限的用户账户。 - 系统已更新到最新状态,打开终端,运行:
sudo apt update sudo apt upgrade -y
方案一:使用 Apache (HTTPD) - 最经典、文档最全
Apache 是最古老、最流行、文档最丰富的 Web 服务器,它的配置非常直观,非常适合新手和大多数静态网站。
安装 Apache
sudo apt install apache2 -y
安装完成后,Apache 服务通常会自动启动。
验证安装
打开你的浏览器,访问服务器的公网 IP 地址,你可以通过以下命令找到你的 IP 地址:
hostname -I
在浏览器中输入 http://<你的服务器IP>,如果看到 "Apache2 Ubuntu Default Page" 的页面,说明安装成功!

网站文件目录
Apache 的默认网站根目录是:/var/www/html
- 放置你的网站文件:将你的 HTML、CSS、JavaScript、图片等所有静态文件都放到这个目录下。
- 默认首页文件:Apache 会按顺序查找以下文件作为首页:
index.html,index.htm,index.php,你可以创建一个测试文件来验证:# 创建一个简单的测试页面 sudo nano /var/www/html/index.html
在打开的编辑器中输入以下内容:
<!DOCTYPE html> <html> <head> <title>My Awesome Website</title> </head> <body> <h1>Hello from Apache on Ubuntu!</h1> <p>This is my first web page served by Apache.</p> </body> </html>按
Ctrl + X,然后按Y,最后按Enter保存并退出,再次刷新浏览器,你应该能看到你刚刚创建的页面。
配置虚拟主机(可选,但推荐)
虚拟主机允许你在一台服务器上托管多个网站,你可以同时拥有 example.com 和 test.com。

-
创建网站目录:
sudo mkdir -p /var/www/example.com/html
-
设置目录权限:
sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www/example.com/html
-
创建虚拟主机配置文件:
sudo nano /etc/apache2/sites-available/example.com.conf
粘贴以下内容,并替换
example.com为你的域名:<VirtualHost *:80> ServerAdmin webmaster@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/html <Directory /var/www/example.com/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> 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 reload apache2
将你的域名解析到服务器 IP,访问 http://example.com 就能看到你的新网站了。
方案二:使用 Nginx - 高性能、轻量级
Nginx (发音 "Engine-X") 是一个高性能的 Web 服务器和反向代理,它以其高并发、低内存占用而闻名,非常适合处理大量请求。
安装 Nginx
sudo apt install nginx -y
安装完成后,Nginx 通常也会自动启动。
验证安装
和 Apache 一样,在浏览器中访问你的服务器 IP 地址:
http://<你的服务器IP>
如果你看到 "Welcome to nginx!" 的欢迎页面,说明安装成功。
网站文件目录
Nginx 的默认网站根目录是:/var/www/html
- 放置你的网站文件:同样,将你的静态文件放在这里。
- 创建测试页面:
sudo nano /var/www/html/index.html
<!DOCTYPE html> <html> <head> <title>My Awesome Nginx Website</title> </head> <body> <h1>Hello from Nginx on Ubuntu!</h1> <p>This is my first web page served by Nginx.</p> </body> </html>保存退出后,刷新浏览器即可看到。
配置服务器块(Nginx 的虚拟主机)
Nginx 的虚拟主机被称为 "Server Blocks"。
-
创建网站目录:
sudo mkdir -p /var/www/example.com/html
-
设置目录权限:
sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www/example.com/html
-
创建服务器块配置文件:
sudo nano /etc/nginx/sites-available/example.com
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } -
启用服务器块: 创建一个指向
sites-enabled目录的软链接:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
-
测试并重新加载 Nginx: 在重载之前,最好先测试配置文件是否有语法错误:
sudo nginx -t
如果显示
syntax is ok和test is successful,则重载配置:sudo systemctl reload nginx
同样,将你的域名解析到服务器 IP,访问 http://example.com 即可。
如何选择?
| 特性 | Apache | Nginx |
|---|---|---|
| 架构 | 进程模型(每个连接一个进程/线程) | 事件驱动模型(单进程多连接) |
| 性能 | 静态文件性能不错,高并发时性能下降 | 静态文件处理性能极高,高并发能力强 |
| 反向代理 | 功能强大,但配置相对复杂 | 性能卓越,是反向代理的首选 |
| URL重写 | 强大的 .htaccess 支持,灵活 |
配置稍复杂,通常在主配置文件中完成 |
| 易用性 | 配置直观,文档极其丰富 | 配置简洁,但需要理解其核心概念 |
| 适用场景 | 通用网站,需要大量 .htaccess 的共享主机,与 PHP 集成(通过 mod_php) |
高流量网站,API 服务,作为反向代理或负载均衡器 |
- 新手入门、个人博客、小型企业网站:Apache 更简单,遇到问题更容易找到解决方案。
- 高流量网站、API 服务、需要反向代理:Nginx 是更好的选择。
基本管理命令
对于 Apache
# 启动服务 sudo systemctl start apache2 # 停止服务 sudo systemctl stop apache2 # 重启服务(配置更改后常用) sudo systemctl restart apache2 # 重新加载配置(不中断连接) sudo systemctl reload apache2 # 查看服务状态 sudo systemctl status apache2 # 设置开机自启 sudo systemctl enable apache2 # 禁用开机自启 sudo systemctl disable apache2
对于 Nginx
将上面的 apache2 替换为 nginx 即可,命令完全相同。
配置防火墙
如果你的服务器启用了 UFW (Uncomplicated Firewall),你需要允许 HTTP (80) 和 HTTPS (443) 端口的流量。
# 允许 Apache (使用 'Apache Full' 配置文件已包含 80 和 443) sudo ufw allow 'Apache Full' # 或者,如果你使用 Nginx sudo ufw allow 'Nginx Full' # 或者,手动开放端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp
配置域名(可选)
要让你的网站通过域名访问,你需要进行 DNS 解析,在你的域名注册商(如 GoDaddy, Namecheap, 阿里云等)的控制面板中,添加一条 A 记录:
- 类型:A
- 名称: (或者你的子域名,如
www) - 值:你的服务器公网 IP 地址
等待 DNS 生效(可能需要几分钟到几小时),然后按照上面的虚拟主机/服务器块配置即可。
后续:部署动态网站
一个 HTTP 服务器不仅能提供静态文件,还能通过与其他软件配合来运行动态网站。
-
部署 PHP 网站:
- Apache: 安装
libapache2-mod-php和 PHP 扩展。sudo apt install php libapache2-mod-php php-mysql,重启 Apache 即可。 - Nginx: Nginx 本身不处理 PHP,需要搭配 PHP-FPM,安装
php-fpm,然后修改 Nginx 配置,将.php文件的请求代理给 PHP-FPM 处理。
- Apache: 安装
-
部署 Node.js 应用:
- 使用 反向代理,将 Nginx 或 Apache 作为前端,接收所有用户请求,然后将特定路径(如
/api)的请求转发到你的 Node.js 应用(通常运行在 3000, 8080 等端口),这是最常用和最安全的部署方式。
- 使用 反向代理,将 Nginx 或 Apache 作为前端,接收所有用户请求,然后将特定路径(如
-
部署 Python (Django/Flask) 应用:
- 同样使用 反向代理,Web 服务器(Nginx/Apache)处理静态文件和用户请求,将动态请求转发给运行在 Gunicorn 或 uWSGI 上的 Python 应用。
希望这份详细的指南能帮助你在 Ubuntu 上成功搭建 HTTP 服务器!
