vue3项目通过Nginx部署至服务器

vue3通过Nginx部署至服务器

1. 修改vue项目中的vue.config.js文件

defineConfig 添加配置用于确保部署后的路径能够正确访问(只需添加 base: ‘/’,其他不需要修改 )

export default defineConfig({
    base: '/'
});

2.构建项目静态文件

在本地开发环境中,构建 Vue 3 项目以生成生产环境的静态文件。(该指令会生成包含各项配置的dist文件夹)

npm run build

3. 上传配置文件至云服务器

将dist文件夹上传至云服务器

scp -r dist 服务器用户名@服务器IP地址:文件路径

4.安装Nginx

在云服务器上安装Nginx

sudo apt update
sudo apt install nginx

5. 安装nodejs

sudo apt-get install -y nodejs

6.配置nginx

 sudo vim /etc/nginx/sites-available/default

修改配置文件内容为:

server {
    listen 80;      
    	server_name _;
        root /opt/HIS_Client/dist;
        index index.html index.htm index.nginx-debian.html;
        location / {
            try_files $uri $uri/ /index.html;
        }
        error_page 404 /index.html;
}

listen : 想要开启的端口,默认为80

server_name :访问页面需要的地址,通常为服务器IP地址

root :服务器中dist文件夹地址

index : 如果是文件夹则优先访问目录下的index文件

try_files : 按顺序查找文件,都没有则访问index.html

error_page :错误页面

7. 设置文件权限

确保nginx能够有权限访问静态文件夹目录

sudo chown -R www-data:www-data 你的dist文件夹地址
sudo chmod -R 755 你的dist文件夹地址

8. 开启防火墙端口

允许防火墙通过该端口进行访问(假设访问为80端口)

sudo ufw allow 80

9. 云服务器安全组开启端口允许访问

添加入方向规则,允许通过80端口进行访问

10. 重新加载nginx配置文件

nginx配置完成后需重新加载

sudo nginx -c /etc/nginx/nginx.conf

11. 开启Nginx服务

nginx -s reload

12.访问网址

通过http://服务器ip地址:80 即可访问

<think>我们正在处理一个关于使用Nginx部署基于UniApp和Vue3的前端项目的问题。根据引用内容,我们可以总结出部署的关键步骤和注意事项。 核心步骤: 1. 打包项目:使用UniApp或Vue CLI的build命令生成静态文件(通常在dist目录)。 2. 配置Nginx:将打包好的文件放到Nginx指定的目录,并配置Nginx的server块,特别是对于单页应用需要配置伪静态(避免刷新404)。 3. 重启Nginx:使配置生效。 注意事项: - 对于UniApp项目,打包成H5时,可能会遇到路由问题,需要配置Nginx的try_files,将所有请求指向index.html。 - 部署多个项目时,可以通过不同的location或不同的server(不同端口或域名)来区分。 根据引用[3]和[5],UniApp项目部署时,Nginx配置中需要添加伪静态规则: location / { try_files $uri $uri/ /index.html; } 另外,引用[2]提到了如何将打包后的文件同步到服务器,可以使用scp或rsync命令。 因此,我们可以将步骤详细化。 步骤1:在本地打包项目 对于Vue3项目(包括UniApp打包成H5): npm run build 或 yarn build 生成dist目录(或UniApp项目中可能是build目录,具体看配置)。 步骤2:将打包文件上传到服务器 scp -r dist/* root@服务器公网IP:/目标目录 或者使用rsync(更高效,支持增量): rsync -avz dist/* root@服务器公网IP:/目标目录 步骤3:登录服务器,配置Nginx 假设目标目录为/web(根据引用[2]的例子),我们需要在Nginx的配置文件中指定这个目录。 编辑Nginx配置文件(通常在/etc/nginx/conf.d/目录下或/etc/nginx/nginx.conf,或者/etc/nginx/sites-available/下): server { listen 80; server_name your_domain.com; # 如果没有域名,可以使用服务器IP root /web; # 这里替换成你的实际目录 index index.html index.htm; location / { try_files $uri $uri/ /index.html; # 单页应用防止刷新404 } # 如果有后端接口需要代理,可以添加如下配置(根据引用[5]的例子) # location /api { # proxy_pass http://backend_server_ip:port; # } } 步骤4:重启Nginx sudo nginx -s reload # 重新加载配置,不重启服务 # 或者 sudo systemctl restart nginx # 重启服务 步骤5:访问 通过浏览器访问服务器IP或域名。 注意:如果部署多个项目,可以创建多个server块,监听不同端口或使用不同域名,或者在一个server块内使用多个location区分不同项目。 例如,同时部署用户H5页面和管理后台(引用[1]提到的情况): server { listen 80; server_name user.example.com; root /web/user; index index.html; location / { try_files $uri $uri/ /index.html; } } server { listen 80; server_name admin.example.com; root /web/admin; index index.html; location / { try_files $uri $uri/ /index.html; } } 如果没有域名,可以通过不同的路径来区分: server { listen 80; server_name localhost; location /user { alias /web/user; # 注意使用alias时,路径末尾不要加/ index index.html; try_files $uri $uri/ /user/index.html; } location /admin { alias /web/admin; index index.html; try_files $uri $uri/ /admin/index.html; } } 注意:在location中使用alias时,try_files的路径也要相应调整,因为实际文件路径是/web/user,而访问路径是/user。 但是,在引用[3]中,他们直接使用了try_files $uri $uri/ /index.html; 这是因为他们的项目是单页应用,且放在根目录。如果放在子路径,需要调整。 另外,引用[4]提到了使用宝塔面板,这是一种图形化方式,但原理相同。 总结:关键步骤是打包、上传、配置Nginx(特别是伪静态)、重启Nginx。 下面,我们按照用户要求生成回答。</think>### 如何使用 Nginx 部署基于 UniApp 和 Vue3 的前端项目 #### 一、核心部署步骤 1. **项目打包** 在项目根目录执行打包命令,生成静态文件: ```bash npm run build # Vue3项目 # 或 yarn build ``` UniApp 项目需在 `manifest.json` 中配置 H5 发布路径,打包后生成 `dist/build/h5` 目录[^3]。 2. **上传文件到服务器** 使用 `scp` 或 `rsync` 将打包文件同步到服务器: ```bash scp -r dist/* root@服务器IP:/web # 上传到服务器/web目录 # 或 rsync -avz dist/* root@服务器IP:/web ``` 3. **Nginx 关键配置** 编辑 `/etc/nginx/conf.d/your_project.conf` 文件: ```nginx server { listen 80; server_name your_domain.com; # 域名或IP root /web; # 打包文件存放路径 # 单页应用路由支持(防刷新404) location / { try_files $uri $uri/ /index.html; } # 代理后端接口(可选) location /api { proxy_pass http://backend_api; proxy_set_header Host $host; } } ``` 4. **重启 Nginx 服务** ```bash sudo nginx -t # 验证配置 sudo nginx -s reload # 热重载 # 或 sudo systemctl restart nginx ``` #### 二、特殊场景处理 1. **多项目共存部署**(如 H5 + 管理后台) ```nginx # 用户H5项目 server { listen 80; server_name h5.yourdomain.com; root /web/h5; location / { try_files $uri $uri/ /index.html; } } # 管理后台项目 server { listen 80; server_name admin.yourdomain.com; root /web/admin; location / { try_files $uri $uri/ /index.html; } } ``` 2. **宝塔面板用户** - 在面板创建网站,上传打包文件到站点目录 - 在 `站点设置 → 伪静态` 中添加: ``` location / { try_files $uri $uri/ /index.html; } ``` #### 三、验证与调试 1. 访问 `http://服务器IP` 查看页面 2. 检查错误日志: ```bash tail -f /var/log/nginx/error.log ``` 3. 常见问题: - **刷新404** → 检查 `try_files` 配置[^3] - **静态资源404** → 确认文件权限 `chmod -R 755 /web` - **跨域问题** → 在 Nginx 中添加 `add_header` 响应头 > 部署示例:UniApp 项目部署后通过 `http://your_domain.com/#/pages/index/index` 访问首页[^5] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值