Linux+Nginx部署Vue项目(dist文件)

Linux+Nginx部署Vue项目(dist文件)

项目场景:

项目场景:Linux部署Vue项目

思路:

1.将Vue项目打包成dist包
2.将dist包上传到服务器
3.安装Nginx
4.配置Nginx[nginx.conf]
5.重启Nginx

操作:

1.1 打包dist文件:

【打包时遇到的问题】:
【现象】:

> node build/build.js

\ building for production...Error processing file: static/css/app.2940221cd4f03574745dfe3474e795cf.css
(node:53520) UnhandledPromiseRejectionWarning: CssSyntaxError: E:\Work\frontend\static\css\app.2940221cd4f03574745dfe3474e795cf.css:2255:6: Unknown word
    at Input.error (E:\Work\frontend\node_modules\_postcss@7.0.36@postcss\lib\input.js:128:16)
    at Parser.unknownWord (E:\Work\frontend\node_modules\_postcss@7.0.36@postcss\lib\parser.js:561:22)
    at Parser.decl (E:\Work\frontend\node_modules\_postcss@7.0.36@postcss\lib\parser.js:233:16)
  • 【说明】:
  • a.通过错误信息可以了解到错误主要在构建css文件时错误
  • b.该错误只在npm run build 命令打包时报错,npm run dev 是没有问题的。

【原因】:由于引入了第三方的css
【参考】:https://www.cnblogs.com/wjhsmart/p/13563239.html

【解决方案】:
a.找到 build 目录下面的 utils.js 文件
b.找到 cssLoader 配置,加上以下画红线的代码:minimize: true
在这里插入图片描述
c.再次运行 npm run build
【注】:css-loader和postcss-loader

【原理】:将CSS样式进行压缩
【参考】:https://www.cnblogs.com/wjhsmart/p/13563239.html


1.2 压缩dist文件:

  • 【说明】:npm run build 打好的包是文件夹形式,需要进行压缩。
  • 【说明】:打好的包如图所示:找到文件位置进行压缩。
    在这里插入图片描述

1.3 将dist包上传到服务器:

【上传时遇到的问题】:
【现象】:
上传时压缩包总上传不上
【原因】:
服务器上组占满

【查看命令】:

df -h

【说明】:linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况,-h 方便阅读方式显示。

1.4 安装Nginx:

【注】:在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel
【安装命令】:

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

【版本】:
a.linux版本:CentOS7 64位
b.nginx:1.9.9

nginx下载地址:https://nginx.org/download/
【操作】:下载“nginx-1.9.9.tar.gz”,移动到/usr/local/下
【解压】:

## 解压
tar -zxvf nginx-1.9.9.tar.gz

##进入nginx目录
cd nginx-1.9.9
## 配置./configure --prefix=/usr/local/nginx# makemakemake install

在这里插入图片描述
执行make、make install命令
【测试】:测试是否安装成功

# cd到刚才配置的安装目录/usr/loca/nginx/
./sbin/nginx -t

【错误信息】:

nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
2016/09/13 19:08:56 [emerg] 6996#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory)

【原因分析】:nginx/目录下没有logs文件夹
【解决方法】:

mkdir logs
chmod 700 logs

【输出】:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

【启动nginx 】:

cd /usr/local/nginx/sbin
./nginx //启动nginx

【测试80端口-查看80端口】:no:代表没开80端口

firewall-cmd --query-port=80/tcp

【开启80端口】:–permanent #永久生效,没有此参数重启后失效

firewall-cmd --add-port=80/tcp --permanent
#重启防火墙
systemctl restart firewalld

【刷新】:显示Welcome to Nginx即表示成功!
在这里插入图片描述
【配置Nginx开机启动】

vim /etc/rc.d/rc.local

在这里插入图片描述
【参考】:https://www.cnblogs.com/xxoome/p/5866475.html

1.5配置Nginx[nginx.conf]

server {
        listen       8083;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
            root  /daping/lhl/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        location /api{
             rewrite  ^/api/(.*)$ /$1 break;
             proxy_pass http://localhost:9092;
        }
    }
  • 【说明】:
  • a.listen:表示监听的端口[前端打包的启动端口]
    在这里插入图片描述
  • 【说明】:
  • a.server_name:表示服务名称[若多个同名的将按照优先级进行运行]
location / {
            root  /daping/lhl/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
  • 【说明】:
  • a.location中的root代表dist解压后的文件放在哪里面
  • b.index表示dist文件包中的index.html文件
  • 【原理】:
  • a.Nginx和Tomcat原理相同,都是加载dist文件中的index.html
  • b.以index.html为入口进入

1.6重启Nginx

1.进入nginx安装目录sbin下,输入命令./nginx -t
2.看到如下显示nginx.conf syntax is ok

nginx.conf test is successful
说明配置文件正确!

在这里插入图片描述
【重启】:进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可
在这里插入图片描述

1.7访问

【说明】:直接访问:IP:8083即可

【参考】:https://www.cnblogs.com/wangcp-2014/p/9922845.html

<think>好的,我需要帮助用户解决在Linux系统上使用Nginx部署Vue前端项目的问题。首先,我得回忆一下Vue项目部署流程。通常,Vue项目需要先打包生成静态文件,然后配置Nginx来服务这些文件。用户可能已经知道一些基础,但需要详细步骤。我应该分步骤说明,确保每个环节都清晰。第一步是安装Node.js和npm,因为Vue依赖这些环境。需要确认用户是否已经安装,如果没有,给出安装命令,比如使用apt-get安装。接下来是打包Vue项目,使用npmrun build命令。这里可能需要提醒用户检查vue.config.js中的publicPath是否正确,尤其是如果项目部署在子路径下的话。这个点容易出错,需要特别强调。 然后是安装和配置Nginx。用户可能不熟悉Nginx的安装,所以给出具体的安装步骤,比如用apt安装。配置部分需要详细说明如何编辑Nginx的站点配置文件,指定root目录为打包后的dist文件夹,并设置try_files来处理路由模式的问题,比如使用history模式时的配置。还要提到SSL证书的配置,因为现在很多项目需要HTTPS。这部分可以简要说明,如果需要更详细的信息,可以建议用户参考其他资料或生成相关问题。 最后是重启Nginx服务,并检查防火墙设置,确保端口开放。这些步骤完成后,用户应该能通过域名或IP访问项目了。在生成相关问题的时候,要考虑用户可能的后续问题,比如如何配置HTTPS、如何处理路由404错误、如何优化Nginx性能等。这些问题都是部署过程中常见的,能帮助用户进一步解决问题。 需要确保所有的命令和配置正确无误,比如使用sudosystemctl restartnginx来重启服务。同时,路径部分要提醒用户根据实际项目结构修改,避免直接复制粘贴导致错误。 检查是否有遗漏的步骤,比如权限问题,可能需要chmod或chown命令调整目录权限。不过通常打包后的dist目录权限应该没问题,但如果有问题,用户可能需要处理。 另外,确保使用中文回答,符合用户要求。所有的代码块和命令用反引号包裹,保持格式正确。数学公式部分在这个问题中可能用不到,但如果有性能分析或算法相关内容,需要遵循之前的格式要求,但这里暂时不需要。总结一下,整个思考过程需要覆盖从环境准备到部署完成的每个步骤,确保用户能按部就班地操作,并预见到可能出现的问题,在回答中给出提示或相关问题供用户进一步探索。</think>### 如何在Linux上用Nginx部署Vue.js项目 #### 一、环境准备 1. 安装Node.js环境(用于构建Vue项目) ```bash sudo apt-get update sudo apt-get install -y nodejs npm node -v # 验证版本需≥14.18.0 ``` 2. 更新npm并安装Vue CLI ```bash sudo npm install -g npm@latest sudo npm install -g @vue/cli ``` #### 二、项目打包 1. 进入Vue项目根目录执行构建 ```bash npm install npm run build ``` 生成的静态文件位于$./dist$目录[^2] 2. 检查vue.config.js配置: ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/' // 根据实际部署路径调整(如子目录需改为'/subpath/') : '/' } ``` #### 三、Nginx配置 1. 安装Nginx: ```bash sudo apt-get install -y nginx ``` 2. 创建配置文件(示例:/etc/nginx/sites-available/vue-app) ```nginx server { listen 80; server_name your-domain.com; # 静态文件路径 root /var/www/vue-app/dist; index index.html; # 处理前端路由 location / { try_files $uri $uri/ /index.html; } # 可选:开启gzip压缩 gzip on; gzip_types text/plain text/css application/json application/javascript text/xml; } ``` 3. 创建符号链接并测试配置 ```bash sudo ln -s /etc/nginx/sites-available/vue-app /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置语法 ``` #### 四、部署与验证 1. 将dist目录复制到部署路径 ```bash sudo mkdir -p /var/www/vue-app sudo cp -r dist/* /var/www/vue-app/ ``` 2. 重启Nginx服务 ```bash sudo systemctl restart nginx ``` 3. 检查防火墙设置(若启用) ```bash sudo ufw allow 80/tcp ``` #### 五、HTTPS配置(可选) 通过Let's Encrypt获取SSL证书: ```bash sudo apt-get install certbot python3-certbot-nginx sudo certbot --nginx ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值