从零开始玩转 Ubuntu ⑤:用 Nginx 部署你的第一个网站
装完系统干点实事:安装 Nginx、写第一个网页、配置站点目录、放行防火墙,十分钟让局域网里的浏览器访问到你的页面。

前面三篇把地基打好了:系统装上了、命令会用了、能远程登录了。这篇做一件有正反馈的事——在服务器上跑一个网站,让同一网络下的任何设备都能用浏览器访问它。
Web 服务器软件选 Nginx:全球占有率第一的 Web 服务器,配置简单,性能强悍,以后做反向代理、挂 HTTPS 都要靠它。
第一步:安装并启动 Nginx
SSH 登录服务器,三条命令:
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
enable --now 的意思是「设为开机自启,并且现在就启动」。验证:
systemctl status nginx
看到绿色的 active (running) 就成功了。Nginx 默认监听 80 端口。
第二步:从浏览器访问
在服务器上查一下 IP(ip a,比如 192.168.1.100),然后在你自己电脑的浏览器输入:
http://192.168.1.100
看到 Welcome to nginx! 的页面,说明 Web 服务已经通了。这个默认页面的文件在 /var/www/html/index.nginx-debian.html。
如果打不开,大概率是防火墙挡着。Ubuntu 用 ufw 管防火墙:
sudo ufw status # 看防火墙是否启用
sudo ufw allow 'Nginx Full' # 放行 80 和 443 端口
sudo ufw allow 'OpenSSH' # 顺手确认 SSH 是放行的,否则下次开防火墙会锁死自己
⚠️ 如果你打算启用 ufw(
sudo ufw enable),必须先放行 OpenSSH,否则启用瞬间你的 SSH 会话就断了,再也连不上。
第三步:换成自己的页面
默认页面太没意思,建一个自己的站点目录:
# 建目录
sudo mkdir -p /var/www/mysite
# 把目录所有者改成自己,以后编辑不用 sudo
sudo chown -R $USER:$USER /var/www/mysite
写一个简单的首页:
nano /var/www/mysite/index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>我的第一台服务器</title>
</head>
<body>
<h1>Hello from Ubuntu Server!</h1>
<p>这个页面跑在我自己的 Ubuntu 服务器上。</p>
</body>
</html>
第四步:让 Nginx 指向新站点
Nginx 的站点配置文件在 /etc/nginx/sites-available/,通过软链接到 sites-enabled/ 生效。这个「available / enabled」两段式设计很实用:配置写好了不等于启用,链接过去才生效,下线站点只需删链接。
新建配置:
sudo nano /etc/nginx/sites-available/mysite
写入:
server {
listen 80;
server_name _; # 匹配任意主机名
root /var/www/mysite; # 站点文件目录
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
启用并生效:
# 建立软链接,启用站点
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
# 删掉默认站点(它占着 80 端口的默认 server 位置)
sudo rm /etc/nginx/sites-enabled/default
# 测试配置语法——每次改完配置都先测再 reload,好习惯
sudo nginx -t
# 平滑重载配置,不断连接
sudo systemctl reload nginx
nginx -t 输出 syntax is ok 和 test is successful 后,浏览器刷新 http://192.168.1.100,看到你的页面就大功告成了。
验证一下你都学会了什么
# 页面文件确实在自己的目录里
ls -l /var/www/mysite/
# Nginx 错误日志在这里,页面打不开时先看它
sudo tail -f /var/log/nginx/error.log
# 访问日志能看到每次请求
sudo tail -f /var/log/nginx/access.log
改一下 index.html 的内容,刷新浏览器立即生效——静态文件不需要重启任何东西。
常见问题
| 现象 | 排查方向 |
|---|---|
| 浏览器超时 | 防火墙没放行;或不在同一内网,IP 不通,先 ping 测 |
| 403 Forbidden | 目录权限问题,/var/www/mysite 要对 Nginx 的 www-data 用户可读 |
| 404 Not Found | root 路径写错,或文件名不是 index.html |
| 改配置后 502/起不来 | 配置语法错误,sudo nginx -t 会指出第几行 |
这只是开始
一个静态页面跑通了,但这台服务器能干的事远不止这些:
- 想上博客?把 Astro / Hugo 生成的静态文件丢进
/var/www/mysite就行(本站就是这么做的)。 - 想跑 后端服务?Nginx 反向代理到本机 3000、8000 端口,一行
proxy_pass的事。 - 想挂 HTTPS?装个 certbot,
sudo certbot --nginx自动申请证书改好配置。
这些后面遇到都会展开讲。下一篇收尾这个系列:服务器跑起来之后怎么照看它——查日志、管服务、看资源、定时任务,日常运维四件套。
$ giscus --load# 使用 GitHub 账号登录即可发表评论