用nginx部署前端项目全过程

好的,使用 Nginx 部署前端项目的全过程可以分为以下几个核心步骤。我将以一个常见的 ​Vue.js / React​ 项目为例,详细说明从构建到最终访问的每一个环节。

图片[1]_用nginx部署前端项目全过程_知途无界

整体流程概览

  1. 准备工作​:服务器环境、域名(可选)、项目源代码。
  2. 构建生产环境代码​:在项目本地将源代码编译、压缩、打包成静态文件(HTML, CSS, JS, 图片等)。
  3. 上传静态文件​:将打包好的文件传输到服务器。
  4. 安装与配置 Nginx​:在服务器上安装 Nginx,并修改其配置文件,指向你的静态文件目录并设置路由规则。
  5. 启动与验证​:启动 Nginx 服务,并通过浏览器访问服务器 IP 或域名,验证部署是否成功。

第一步:准备工作

  1. 一台 Linux 服务器
    • 操作系统推荐:CentOS 7+、Ubuntu 18.04+ 等。
    • 确保服务器已连接到互联网。
  2. Nginx 安装准备
    • 你需要拥有服务器的 root 权限或 sudo 权限。
    • 更新系统软件包列表: # Ubuntu/Debian sudo apt update # CentOS/RHEL sudo yum update
  3. 你的前端项目代码
    • 假设你的项目是使用 Vue CLI 或 Create React App 创建的。
  4. ​(可选)一个域名
    • 如果你希望使用域名访问,需要提前将域名解析到你的服务器公网 IP。

第二步:构建生产环境代码(在本地开发机操作)

这一步的目的是将你的源代码“编译”成浏览器可以直接运行的、优化过的静态文件。

  1. 进入你的项目根目录
  2. 执行构建命令​:
    • Vue.js 项目​: npm run build # 或者 yarn build 执行成功后,会在项目根目录下生成一个 dist 文件夹,里面就是所有静态资源。
    • React 项目 (Create React App)​​: npm run build # 或者 yarn build 执行成功后,会在项目根目录下生成一个 build 文件夹。
  3. 打包构建产物​:
    为了方便上传,你可以将生成的 dist(或 build)文件夹压缩成一个 .zip.tar.gz 文件。 # 示例:将 dist 文件夹压缩 tar -czvf frontend-project.tar.gz dist/

第三步:上传静态文件到服务器

现在需要将构建好的静态文件放到服务器上。

  1. 登录你的服务器
  2. 创建一个用于存放前端文件的目录,例如 /var/www/my-frontendsudo mkdir -p /var/www/my-frontend
  3. 上传文件​:
    使用 scpsftprsync 等工具将本地的 dist.zip(或 frontend-project.tar.gz)上传到服务器的某个临时目录,例如 /tmp
    • 使用 scp 命令示例(在本地终端执行)​​: scp /path/to/your/dist.zip username@your_server_ip:/tmp/
  4. 解压文件到目标目录​: # 进入目标目录 cd /var/www/my-frontend # 解压(假设你上传的是 dist.zip) sudo unzip /tmp/dist.zip # 如果是 tar.gz # sudo tar -xzvf /tmp/frontend-project.tar.gz -C ./ 解压后,/var/www/my-frontend 目录下应该直接包含 index.html 和各种资源文件夹(css, js, img 等)。

第四步:安装与配置 Nginx

4.1 安装 Nginx

  • Ubuntu/Debian: sudo apt install nginx
  • CentOS/RHEL: # 可能需要先安装 EPEL 源 sudo yum install epel-release sudo yum install nginx

安装完成后,Nginx 会自动启动。你可以通过 systemctl status nginx 检查状态。

4.2 配置 Nginx

Nginx 的主要配置文件通常在 /etc/nginx/nginx.conf,但最佳实践是为每个站点创建独立的配置文件,放在 /etc/nginx/conf.d/ 目录下,或者以 .conf 结尾放在 /etc/nginx/sites-available/ 并通过软链接到 /etc/nginx/sites-enabled/(Ubuntu 常用)。

这里我们采用最简单的方式:​/etc/nginx/conf.d/ 下创建一个新的配置文件

  1. 创建一个新的配置文件,例如 my-frontend.confsudo vim /etc/nginx/conf.d/my-frontend.conf
  2. 写入以下配置内容​: # 定义一个服务器块(虚拟主机) server { # 监听 80 端口(HTTP) listen 80; # 如果你的域名已经解析好了,可以在这里设置 # server_name your-domain.com www.your-domain.com; # 如果没有域名,则用服务器IP访问,可以注释掉上一行或写 server_name _; server_name _; # 设置网站的根目录,指向你上传的静态文件位置 root /var/www/my-frontend; # 设置默认的索引文件 index index.html; # 核心:处理前端路由(SPA 应用如 Vue Router 'history' 模式必需) location / { try_files $uri $uri/ /index.html; } # 可选:缓存静态资源(如图片、CSS、JS),提升性能 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 1y; add_header Cache-Control "public, immutable"; } # 可选:禁止访问隐藏文件(如 .gitignore, .env) location ~ /\. { deny all; access_log off; log_not_found off; } }配置关键点解释​:
    • root: 指定了 Nginx 从哪里寻找文件来响应请求。
    • location / + try_files ...: 这是部署 ​单页面应用(SPA)​​ 的关键。当用户直接访问 http://your-server/login 这样的深层链接时,Nginx 会先在磁盘上查找 /login 这个文件或目录,如果找不到,就会内部重定向到 /index.html,然后由前端的 JavaScript 路由接管并渲染正确的页面。如果没有这个配置,直接访问非首页链接会出现 ​404 错误
    • expires: 为静态资源设置强缓存,极大减轻服务器压力,加快用户访问速度。

第五步:启动与验证

  1. 检查 Nginx 配置语法是否正确​: sudo nginx -t 如果输出 syntax is oktest is successful,说明配置文件无误。
  2. 重载 Nginx 配置​:
    如果 Nginx 已经在运行,使用重载命令可以使新配置生效而不中断服务。 sudo nginx -s reload # 或者使用 systemctl sudo systemctl reload nginx 如果是第一次安装,可能需要启动: sudo systemctl start nginx
  3. 开放防火墙端口​:
    确保服务器的防火墙(如 firewalldufw)放行了 80 端口(HTTP)。
    • Firewalld (CentOS)​: sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
    • UFW (Ubuntu)​: sudo ufw allow 'Nginx HTTP'
  4. 验证访问​:
    • 打开你的浏览器,输入 http://<你的服务器IP地址>
    • 如果配置了域名,输入 http://<你的域名>
    • 你应该能看到你的前端项目首页。测试一下之前会导致 404 的深链接,现在应该也能正常显示。

进阶与排错

  • 403 Forbidden 错误​:
    • 检查 /var/www/my-frontend 目录的权限,确保 Nginx 进程用户(通常是 www-datanginx)有读取权限。可以使用 sudo chown -R nginx:nginx /var/www/my-frontend (CentOS) 或 sudo chown -R www-data:www-data /var/www/my-frontend (Ubuntu) 来修复。
    • 检查 index.html 文件是否存在于 root 指定的目录中。
  • 502 Bad Gateway 错误​:
    • 这个错误通常发生在 Nginx 作为反向代理时,后端服务(如 Node.js, Python)没有正常运行。纯静态文件部署不会出现此问题,如果出现,请检查 Nginx 配置是否误配了 proxy_pass
  • 开启 HTTPS​:
    • 推荐使用 ​Let’s Encrypt​ 的免费 SSL 证书。可以使用 certbot 工具自动化完成证书申请和 Nginx 配置。
    • 安装 certbot:sudo apt install certbot python3-certbot-nginx (Ubuntu)
    • 获取证书并自动配置 Nginx:sudo certbot --nginx -d your-domain.com
    • 配置完成后,Certbot 会自动修改你的 Nginx 配置文件,将监听 80 端口的 server block 改为监听 443 并配置 SSL。

至此,你已经成功完成了使用 Nginx 部署前端项目的全过程!

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞24 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容