- 核心概念: 了解几个关键术语。
- 部署前准备: 你需要什么?
- 部署方案: 从手动部署到自动化部署。
- 详细步骤: 以最常见的手动部署为例,走一遍完整流程。
- 后续维护与安全: 部署后该做什么。
核心概念(必知)
在开始之前,先理解几个核心概念,这会让你对整个过程有更清晰的认识:

- 服务器: 一台高性能、高稳定性的计算机,它 24/7 不间断运行,通过互联网为你的网站提供服务,你可以租用云服务器(如阿里云、腾讯云、AWS、Vultr)或使用自己的物理机。
- 域名: 你的网站在互联网上的地址,
google.com、baidu.com,你需要购买一个域名,并将其指向你的服务器 IP 地址。 - DNS (Domain Name System): 互联网的电话簿,当你在浏览器输入域名时,DNS 会帮你找到对应服务器的 IP 地址。
- Web 服务器: 专门用于处理 HTTP/HTTPS 请求,并将网站文件发送给用户浏览器的软件,常见的有 Nginx (推荐,性能高) 和 Apache。
- 应用服务器: 如果你的网站是动态的(需要运行代码),就需要应用服务器来执行代码。
- Node.js (用于 JavaScript)
- PHP-FPM (用于 PHP)
- Gunicorn/uWSGI (用于 Python)
- 数据库: 用于存储网站数据(如用户信息、文章、商品等),常见的有 MySQL, PostgreSQL, MongoDB。
- SSL/TLS 证书: 用于加密网站和用户之间的数据传输,实现 HTTPS,现在几乎所有网站都必备,最著名的免费证书是 Let's Encrypt。
部署前准备
在开始部署之前,请确保你已经准备好以下几样东西:
- 一台服务器:
- 操作系统: 推荐 Ubuntu 或 CentOS,社区支持好,文档多。
- 配置: 根据你的网站规模选择,新手入门,1核 CPU、1-2GB 内存、20-40GB 硬盘足够。
- IP 地址: 你的服务器公网 IP。
- 一个域名: 从域名注册商(如 GoDaddy、Namecheap、阿里云万网)购买。
- 网站代码: 已经开发好的前端(HTML, CSS, JavaScript)和后端代码。
- SSH 客户端: 用于连接和管理你的服务器,Windows 用户可以使用 PuTTY 或 Windows Terminal (内置 OpenSSH);macOS 和 Linux 用户自带
ssh命令。 - FTP/SFTP 客户端: 用于将本地代码上传到服务器,推荐 FileZilla。
部署方案(选择适合你的)
部署网站有几种主流方式,从简单到复杂:
一键部署(适合新手,如 WordPress)
如果你用的是成熟的 CMS 系统(如 WordPress, Drupal),很多云服务商提供“一键部署”或“镜像”功能,你只需选择好应用,服务商会自动帮你配置好 Web 服务器、数据库和 PHP 环境,你只需要通过 Web 界面完成最后的设置即可。
- 优点: 极其简单,零技术门槛。
- 缺点: 灵活性差,定制化能力弱。
手动部署(适合学习和小型项目)
这是最经典、最能让你理解底层原理的方式,你需要一步步在服务器上安装软件、配置环境、上传代码。本指南的下一部分将详细介绍这种方式。

- 优点: 灵活性高,能深入理解服务器工作原理,成本可控。
- 缺点: 步骤繁琐,容易出错,需要一定的 Linux 基础。
自动化部署(适合专业团队和持续集成/持续部署)
这是目前最主流、最高效的方式,通过脚本和工具,实现代码提交后自动部署到服务器,常用工具有:
-
CI/CD 工具: Jenkins, GitLab CI/CD, GitHub Actions
-
容器化技术: Docker
-
编排工具: Kubernetes (K8s), Docker Compose
(图片来源网络,侵删) -
优点: 高效、可靠、减少人为错误,支持快速迭代。
-
缺点: 学习曲线陡峭,前期搭建成本高。
详细步骤:手动部署一个网站(以 Nginx + Node.js 为例)
假设我们要部署一个简单的 Node.js 应用。
步骤 1:连接服务器并更新系统
-
打开终端,使用 SSH 连接到你的服务器。
ssh root@你的服务器IP地址
(首次连接会提示确认指纹,输入
yes,然后输入你的服务器密码)。 -
为了安全,建议创建一个普通用户,并赋予
sudo权限。# 创建一个新用户,比如叫 deploy adduser deploy # 将 deploy 用户添加到 sudo 组 usermod -aG sudo deploy # 切换到 deploy 用户 su - deploy
-
更新服务器软件包列表和已安装的包。
# 对于 Ubuntu/Debian sudo apt update && sudo apt upgrade -y # 对于 CentOS/RHEL sudo yum update -y
步骤 2:安装 Web 服务器(Nginx)
Nginx 将作为反向代理,接收用户请求,然后转发给我们的 Node.js 应用。
sudo apt install nginx -y
安装完成后,启动 Nginx 并设置为开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
如果你在浏览器中访问你的服务器 IP,应该能看到 Nginx 的欢迎页面。
步骤 3:安装 Node.js 和 PM2
我们的应用需要 Node.js 运行环境,我们使用 n 这个 Node.js 版本管理器来安装。
# 安装 n sudo npm install n -g # 安装最新的 LTS 版本的 Node.js sudo n lts # 验证安装 node -v npm -v
PM2 是一个强大的 Node.js 进程管理器,它能确保你的应用在后台稳定运行,并在崩溃时自动重启。
sudo npm install pm2 -g
步骤 4:配置数据库(可选)
如果你的应用需要数据库,可以安装 MySQL 或 PostgreSQL。
# 安装 MySQL sudo apt install mysql-server -y # 运行安全脚本,设置 root 密码等 sudo mysql_secure_installation
步骤 5:上传网站代码
使用 SFTP 客户端(如 FileZilla)连接到服务器,将你的网站代码上传到服务器的某个目录,/home/deploy/my-app。
或者,你也可以使用 Git 直接在服务器上克隆代码库:
cd ~ git clone https://github.com/your-username/your-repo.git my-app
步骤 6:安装项目依赖并启动应用
cd /home/deploy/my-app # 安装依赖 npm install # 使用 PM2 启动应用 # --name my-app 给进程起个名字 pm2 start app.js --name my-app # 查看应用状态 pm2 status
现在你的 Node.js 应用已经在后台运行了!
步骤 7:配置 Nginx 反向代理
Nginx 需要知道如何将请求转发给我们的 Node.js 应用(它运行在某个端口上,3000)。
-
创建一个新的 Nginx 配置文件。
sudo nano /etc/nginx/sites-available/my-app
-
在文件中输入以下内容:
server { listen 80; server_name 你的域名; # 替换成你的域名 location / { proxy_pass http://localhost:3000; # 假设你的 Node.js 应用监听 3000 端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } -
保存文件(在 nano 中是
Ctrl+X,Y,Enter)。 -
启用这个配置站点,你需要创建一个指向
sites-enabled目录的符号链接。sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
-
测试 Nginx 配置是否正确,然后重新加载 Nginx。
sudo nginx -t sudo systemctl reload nginx
步骤 8:配置域名和 SSL 证书
-
配置 DNS: 登录你的域名提供商后台,添加一条 A 记录,将你的域名指向服务器的 IP 地址。
-
安装 Certbot: Certbot 是一个自动获取和续签 Let's Encrypt 证书的工具。
sudo apt install certbot python3-certbot-nginx -y
-
获取证书: Certbot 可以自动修改你的 Nginx 配置,开启 HTTPS。
sudo certbot --nginx -d 你的域名
按照提示操作,它会要求你输入邮箱地址,并同意服务条款,完成后,Certbot 会自动配置好 HTTPS,并设置好自动续签。
步骤 9:防火墙设置
确保防火墙允许 HTTP (80) 和 HTTPS (443) 端口。
sudo ufw allow 'Nginx Full'
后续维护与安全
部署完成只是开始,日常维护和安全同样重要:
- 定期备份: 定期备份你的网站文件和数据库。
- 保持更新: 定期更新服务器上的操作系统、Nginx、Node.js、数据库等软件,以修复安全漏洞。
- 监控: 使用
pm2 monit或其他监控工具(如 Prometheus + Grafana)监控你的应用状态和服务器资源。 - 安全加固:
- 使用
fail2ban防止暴力破解 SSH。 - 禁用 root 远程登录,只使用普通用户
sudo。 - 定期检查日志文件 (
/var/log/nginx/,~/.pm2/logs/)。
- 使用
希望这份详细的指南能帮助你成功在服务器上部署自己的网站!从手动部署开始,你会学到很多有用的知识,随着经验的增长,再逐步学习自动化部署,会事半功倍。
