凌峰创科服务平台

服务器部署网站,步骤是哪些?

  1. 核心概念: 了解几个关键术语。
  2. 部署前准备: 你需要什么?
  3. 部署方案: 从手动部署到自动化部署。
  4. 详细步骤: 以最常见的手动部署为例,走一遍完整流程。
  5. 后续维护与安全: 部署后该做什么。

核心概念(必知)

在开始之前,先理解几个核心概念,这会让你对整个过程有更清晰的认识:

服务器部署网站,步骤是哪些?-图1
(图片来源网络,侵删)
  • 服务器: 一台高性能、高稳定性的计算机,它 24/7 不间断运行,通过互联网为你的网站提供服务,你可以租用云服务器(如阿里云、腾讯云、AWS、Vultr)或使用自己的物理机。
  • 域名: 你的网站在互联网上的地址,google.combaidu.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

部署前准备

在开始部署之前,请确保你已经准备好以下几样东西:

  1. 一台服务器:
    • 操作系统: 推荐 UbuntuCentOS,社区支持好,文档多。
    • 配置: 根据你的网站规模选择,新手入门,1核 CPU、1-2GB 内存、20-40GB 硬盘足够。
    • IP 地址: 你的服务器公网 IP。
  2. 一个域名: 从域名注册商(如 GoDaddy、Namecheap、阿里云万网)购买。
  3. 网站代码: 已经开发好的前端(HTML, CSS, JavaScript)和后端代码。
  4. SSH 客户端: 用于连接和管理你的服务器,Windows 用户可以使用 PuTTYWindows Terminal (内置 OpenSSH);macOS 和 Linux 用户自带 ssh 命令。
  5. FTP/SFTP 客户端: 用于将本地代码上传到服务器,推荐 FileZilla

部署方案(选择适合你的)

部署网站有几种主流方式,从简单到复杂:

一键部署(适合新手,如 WordPress)

如果你用的是成熟的 CMS 系统(如 WordPress, Drupal),很多云服务商提供“一键部署”或“镜像”功能,你只需选择好应用,服务商会自动帮你配置好 Web 服务器、数据库和 PHP 环境,你只需要通过 Web 界面完成最后的设置即可。

  • 优点: 极其简单,零技术门槛。
  • 缺点: 灵活性差,定制化能力弱。

手动部署(适合学习和小型项目)

这是最经典、最能让你理解底层原理的方式,你需要一步步在服务器上安装软件、配置环境、上传代码。本指南的下一部分将详细介绍这种方式。

服务器部署网站,步骤是哪些?-图2
(图片来源网络,侵删)
  • 优点: 灵活性高,能深入理解服务器工作原理,成本可控。
  • 缺点: 步骤繁琐,容易出错,需要一定的 Linux 基础。

自动化部署(适合专业团队和持续集成/持续部署)

这是目前最主流、最高效的方式,通过脚本和工具,实现代码提交后自动部署到服务器,常用工具有:

  • CI/CD 工具: Jenkins, GitLab CI/CD, GitHub Actions

  • 容器化技术: Docker

  • 编排工具: Kubernetes (K8s), Docker Compose

    服务器部署网站,步骤是哪些?-图3
    (图片来源网络,侵删)
  • 优点: 高效、可靠、减少人为错误,支持快速迭代。

  • 缺点: 学习曲线陡峭,前期搭建成本高。


详细步骤:手动部署一个网站(以 Nginx + Node.js 为例)

假设我们要部署一个简单的 Node.js 应用。

步骤 1:连接服务器并更新系统

  1. 打开终端,使用 SSH 连接到你的服务器。

    ssh root@你的服务器IP地址

    (首次连接会提示确认指纹,输入 yes,然后输入你的服务器密码)。

  2. 为了安全,建议创建一个普通用户,并赋予 sudo 权限。

    # 创建一个新用户,比如叫 deploy
    adduser deploy
    # 将 deploy 用户添加到 sudo 组
    usermod -aG sudo deploy
    # 切换到 deploy 用户
    su - deploy
  3. 更新服务器软件包列表和已安装的包。

    # 对于 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)。

  1. 创建一个新的 Nginx 配置文件。

    sudo nano /etc/nginx/sites-available/my-app
  2. 在文件中输入以下内容:

    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;
        }
    }
  3. 保存文件(在 nano 中是 Ctrl+XYEnter)。

  4. 启用这个配置站点,你需要创建一个指向 sites-enabled 目录的符号链接。

    sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
  5. 测试 Nginx 配置是否正确,然后重新加载 Nginx。

    sudo nginx -t
    sudo systemctl reload nginx

步骤 8:配置域名和 SSL 证书

  1. 配置 DNS: 登录你的域名提供商后台,添加一条 A 记录,将你的域名指向服务器的 IP 地址。

  2. 安装 Certbot: Certbot 是一个自动获取和续签 Let's Encrypt 证书的工具。

    sudo apt install certbot python3-certbot-nginx -y
  3. 获取证书: 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/)。

希望这份详细的指南能帮助你成功在服务器上部署自己的网站!从手动部署开始,你会学到很多有用的知识,随着经验的增长,再逐步学习自动化部署,会事半功倍。

分享:
扫描分享到社交APP
上一篇
下一篇