Linux部署前端Vue项目

这篇具有很好参考价值的文章主要介绍了Linux部署前端Vue项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux部署前端Vue项目

1 部署到tomcat上

1.1 部署Vue项目

  1. 打包项目

在命令行终端,输入命令,打包项目:

npm run build
  1. 将生成的dist文件夹下的所有内容复制到tomcat的webapps下
"推荐":在webapps下新建一个文件夹,例如yygh-admin,然后将dist文件夹内容复制进去
  1. 启动tomcat,并输入访问地址
http://192.168.145.48:8080/yygh-admin/

yygh-admin为项目名

注意:
如果输入url后,页面一片空白,可能是因为js、css文件找不到,可能是打包路径问题:

  • vue-cli3以上:
    将vue.config.js文件中的module.exports下的publicPath修改为:'./'
module.exports = {
	/* 其他配置信息... */
	publicPath: '/xxx/'   
	/* 
 	 *  `publicPath` 里面的内容就是配置路径,如果你在服务器根目录下创建一个
  	 *  `newproject`文件夹,那么就需要配置成`/newproject/`。
  	 *  那么访问路径就是`www.test.com/newproject`
  	 */
}
  • vue-cli3一下版本:
    将vue项目中的config文件夹下的index.js的assetsPublicPath修改为'/yygh-admin/'(改为自己tomcat下webapps的文件夹名即可)
build: {
	assetsPublicPath: '/xxx/' // 默认为'/' ,xxx是webapps下的文件夹名
}

有关tomcat的tips:

①修改tomcat地址栏上的图标
- 进入tomcat的webapps/ROOT目录
- 将favicon.ico换成自己的图片即可
②tomat中文乱码
  • 如果是tomcat控制台乱码

(一般tomcat出现乱码都是字符集的问题)
在tomcat目录下conf中找到logging.properties文件
大概在47行处把java.util.logging.ConsoleHandler.encoding = UTF-8改为java.util.logging.ConsoleHandler.encoding = GBK 重启tomcat及可

  • tomcat访问页面时乱码
    vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署
  1. 在tomcat目录的bin文件下找到catalina.bat修改216行左右
    set"JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" 修改为set"JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
  2. 在tomcat的server.xml配置
    添加:URIEncoding=”UTF-8”
<Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" URIEncoding="UTF-8" />

  1. 在项目的idex.html(项目首页)
    添加:content=“text/html”; charset=“utf-8”
    (head - meta - title)
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />
  1. 在tomcat的web.xml,大概119行处添加:
<init-param>
    <param-name>fileEncoding</param-name>
    <param-value>UTF-8</param-value>
</init-param>

添加完之后效果:

 <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
		<init-param>
            <param-name>fileEncoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

  1. 重启tomcat,查看效果
    vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署
③tomcat配置https服务
  1. 下载证书(可以去腾讯云申请一个一年的免费证书)
  • 登录SSL证书管理控制台
  • 弹出的窗口中,选择申请免费证书
  • 证书类型选择亚洲诚信
  • 绑定自己的域名,其他的默认推荐,提交申请

审核很快的,我的证书几分钟就通过了

  1. 下载证书
  • 进入自己的SSL证书管理平台
  • 下载证书
    vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署
  • 根据加密类型不同,下载下来的文件类型也不同,我的有两个文件
    vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署
  1. 配置tomcat的https服务
    ①上传证书(.jks)到自己tomcat的conf目录下
    vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署
    ②修改server.xml文件

添加443的connector:

<Connector port="443" protocol="HTTP/1.1" 
				SSLEnabled="true"
				maxThreads="150" 
				scheme="https" 
				secure="true"
				keystoreFile="/你自己的tomcat路径/conf/你的证书名.jks" 
				keystorePass="你自己的私钥密码"
				clientAuth="false"
	/>

示例:

<Connector port="443" protocol="HTTP/1.1" 
				SSLEnabled="true"
				maxThreads="150" 
				scheme="https" 
				secure="true"
				keystoreFile="/usr/local/tomcat/conf/example.com.jks" 
				keystorePass="sjoa29281"
				clientAuth="false"
	/>

以上就可以使用https服务了。
如果想要http服务自动跳转到https

  • 修改web.xml:

在结束标签 </welcome-file-list> 后面换行,添加以下内容

<login-config>
 <!-- Authorization setting for SSL -->
 <auth-method>CLIENT-CERT</auth-method>
 <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection>
   <web-resource-name>SSL</web-resource-name>
   <url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
   <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

  • 修改server.xml,修改80的connector
<Connector port="80" protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="443" />

此修改操作可将非 SSL 的 connector 跳转到 SSL 的 connector 中。

③测试
输入网址,回车:
vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

参考:https://blog.csdn.net/weixin_45947267/article/details/109417431

1.2 部署Nuxt项目

有待补充

2 部署到nginx上

2.1 部署流程

①安装nginx

如有不熟悉的朋友,参考下面这篇教程,有详细步骤。

Linux安装软件合集

②npm run build打包vue项目

找到vue项目根目录,执行打包命令

npm run build

vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署
打包成功之后会在根目录下生成一个dist文件夹
vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

③上传到nginx的html文件夹

将上面生成好的dist文件夹放在nginx服务器的html文件夹下(此处我直接通过ftp传输)【传到最好将文件夹名命名为自己的项目名,例:music-manage】
vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

④修改nginx.conf配置文件

进入nginx的conf目录:

cd 自己的nginx路径

通过vim修改nginx.conf

vim nginx.conf

具体配置如下(以配置music-manage项目为例,这个项目我给它放到了ip为192.168.145.13这台虚拟机上):

http {
   server {
        # 监听的端口号
        listen       8080;

        # 服务名称 生产环境要修改成 公网ip 如 47.105.134.120【网站域名】
        server_name 192.168.145.13;

        # 配置根目录的地址是以 nginx 下的 html 文件夹为根目录来查找的
        root html;

        # 配置默认的主页显示 比如 47.105.134.120:8080 显示的 index 页面
        location / {
            try_files $uri $uri/ /index.html;	    
        }
        # 配置我们的 admin 的前台服务 比如 47.105.134.120:8080/admin/index.html
        location ^~ /music-manage {
            # 处理 Vue 单页面应用 路由模式为 history 模式刷新页面 404 的问题
            try_files $uri $uri/ /music-manage/index.html;
        }
        # 如果你想配置多个项目的话,可以复制上面的,修改一下就可以同时部署多个前端项目了
        # 比如
        # location ^~ /blog {
            # 处理 Vue 单页面应用 路由模式为 history 模式刷新页面 404 的问题
            # try_files $uri $uri/ /blog/index.html;
        # }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

	#css样式不显示问题解决
	 include   mime.types;
         default_type  application/octet-stream;
	#中文乱码问题
	charset utf-8;
    }

    include servers/*;
}

如果要配置,多个项目,配置多个server即可。

⑤重启nginx,在浏览器输入ip+端口+项目名即可访问

vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

需要开放对应访问端口或关闭防火墙

上述步骤如果有遇到什么问题的可以看下面模块部署中常见问题

2.2 部署过程中常见问题

①vue的build打包问题

情况一:

vue打包:Warning: Accessing non-existent property xxxx of module exports inside circular dependency
原因:node版本过高

  • 方式一:

找到\node_modules\stylus\lib\nodes\index.js文件,在代码前面添加:

exports.lineno = null;
exports.column = null;
exports.filename = null;
  • 方式二:

可切换node至v10.版本

  • 方式三:

升级shelljs到 v0.8.4 即可解决

npm install shelljs@0.8.4 --save

情况二:

node的npm run build报错xxx is not a function
缓存或版本对应问题

  • 方式一:
删除node_modules文件夹,执行npm install重新生成
  • 方式二:

查看webpack等依赖版本
vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

  • 方式三

查看config下的index.js环境是否正确
build报错,就对应build部分;dev报错就对应dev部分

vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

②nginx启动问题

bug:如果启动Nginx如下错误

emerg] bind() to 0.0.0.0:81 failed (98: Address already in use)

表明是端口被占用了,解决办法:

  • 杀死占用端口的进程
//找到对应进程号
ps -ef|grep nginx

UID PID PPID C STIME TTY TIME CMD
root 22048 2762 0 02:08 pts/0 00:00:00 grep --color=auto nginx

UID :程序被该 UID 所拥有

PID :就是这个程序的 ID

PPID :则是其上级父程序的ID

C :CPU使用的资源百分比

STIME :系统启动时间

TTY :登入者的终端机位置

TIME :使用掉的CPU时间。

CMD :所下达的是什么指令
vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署
杀死对应进程

kill -9  PID(对应的进程号即可)
  • 停止nginx,重新启动
切换到nginx sbin目录
-- 停止
sudo ./nginx -s stop
 
-- 启动
./nginx
③vue的css不显示、中文乱码及图片路径问题
  • css不显示

这是因为前端文件在被浏览器进行渲染的时候,被当做普通文本内容来进行渲染了,并不是按照js、css来进行渲染

修改nginx.conf文件,在nginx的http模块下添加配置即可

include   mime.types;
default_type  application/octet-stream;
  • 中文乱码问题

这其实就是一个编码问题,我们也只需要修改nginx.conf即可

在server模块下添加上charset utf-8;

  • 我的nginx.conf配置,大家可以参考
http {
   server {
        # 监听的端口号
        listen       8080;

        # 服务名称 生产环境要修改成 公网ip 如 47.105.134.120
        server_name 192.168.145.13;

        # 配置根目录的地址是以 nginx 下的 html 文件夹为根目录来查找的
        root html;

        # 配置默认的主页显示 比如 47.105.134.120:8080 显示的 index 页面
        location / {
            try_files $uri $uri/ /index.html;	    
        }
        # 配置我们的 admin 的前台服务 比如 47.105.134.120:8080/admin/index.html
        location ^~ /music-manage {
            # 处理 Vue 单页面应用 路由模式为 history 模式刷新页面 404 的问题
            try_files $uri $uri/ /music-manage/index.html;
        }
        # 如果你想配置多个项目的话,可以复制上面的,修改一下就可以同时部署多个前端项目了
        # 比如
        # location ^~ /blog {
            # 处理 Vue 单页面应用 路由模式为 history 模式刷新页面 404 的问题
            # try_files $uri $uri/ /blog/index.html;
        # }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

	#css样式不显示问题解决
	 include   mime.types;
     default_type  application/octet-stream;
	#中文乱码问题
	charset utf-8;
    }

    include servers/*;
}

  • 图片路径问题

我在Login.vue中写了一个样式,通过相对路径指向图片位置,但是发现build之后访问路径有问题,因此导致我后台的背景图片无法显示

解决办法:在build/utils.js文件中添加如下一行代码即可

publicPath:'../../'

vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

④vue出现Uncaught SyntaxError: Unexpected token <

开发 测试 启动 npm run dev 能正常访问

打包 npm run build 部署到nginx上后访问页面出现空白,浏览器F12 查看报错

Uncaught SyntaxError: Unexpected token <

主要是js引用问题:
npm run build 的打包时掉了 js文件的前面的引用路径

找到 build: 配置节点(一般在config/index.js文件下),
将assetsPublicPath的值从 '/',改为./即可

assetsPublicPath: './',

然后重新打包再部署。
vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署

⑤端口未开放,防火墙未关,云服务器安全组未开放对应端口

查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld

启动防火墙

systemctl start firewalld

注意:直接关闭防火墙当然可以给我们省下很多事情,我们不用一个一个的去开放对应的端口,但是也会有被黑客攻击的危险。因此如果是部署在公网上的项目还是建议通过开放指定端口来实现访问项目的目的。

开放指定端口

firewall-cmd --zone=public --add-port=8081/tcp --permanent

①- -zone 作用域
②- -add-port=8081/tcp 添加端口,格式:端口/通讯协议
③- -permanent 永久生效,没有此参数,重启之后失效

查看已经开放的端口

netstat -nupl (UDP类型的端口)

netstat -ntpl (TCP类型的端口)

查看指定端口的使用情况

netstat -ntulp | grep 8081

云服务器开放端口(安全组)
vue项目打包部署到linux并启动,demo,vue.js,前端,linux,项目部署文章来源地址https://www.toymoban.com/news/detail-768305.html

到了这里,关于Linux部署前端Vue项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微服务部署】四、Jenkins一键打包部署NodeJS(Vue)前端项目步骤详解

      本文介绍使用Jenkins一键将NodeJS(Vue)前端项目打包并上传到生产环境服务器,这里使用的是直接打包静态页面,发送到远程服务器Nginx配置目录的方式,首先确保服务器环境配置好,安装Nginx,运行目录,日志存放目录等。 一、服务器环境配置   Nginx安装也有多种方式

    2024年02月10日
    浏览(34)
  • Gitlab CI/CD 自动化打包部署前端(vue)项目

    一、虚拟机安装 1.vmware下载 2.镜像下载 3.Ubuntu 4.新建虚拟机 一直点下一步,直到点击完成。 5.分配镜像 二、Gitlab CI/CD 自动化部署项目 1.配置GitLab CI/CD: 2.生成SSH密钥对: 如果尚未生成,请在本地机器上生成一个SSH密钥对: 3.将SSH私钥添加到GitLab: 4.更新GitLab CI/CD配置: 5

    2024年03月13日
    浏览(47)
  • 【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

             Nginx 是一款高性能的 Web 服务器和 反向代理服务器 ,也可以充当负载均衡器、HTTP 缓存和安全防护设备。它的特点是内存占用小、稳定性高、并发性强、易于扩展,因此在互联网领域得到了广泛的使用。 总结出以下三点: 负载均衡 :流量分摊 反向代理 :处理外

    2024年02月06日
    浏览(31)
  • 关于前端vue打包项目以及静态网站部署项目到阿里云ECS云服务器初学简单教程

    准备工作: 1.首先进入https://ecs.console.aliyun.com/ 领取或者购买一台简单的ECS云服务器。 进入网站注册登录后拉到页面最下面或者顶部搜索免费云服务器领取立即试用 ,当然富哥花钱买一台服务器也行。   创建完了以后可以进入云服务ECS工作台,然后就是以下界面   点击右边

    2024年02月04日
    浏览(41)
  • SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

    记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源,在开发的时候,一般选择前后端分离的方式,前端使用vue 后端使用SpringBoot,通常情况下,部署都是前端通过http去请求后端资源,涉及到http请求,那么肯定需要资源的目标地址IP,一般云端部署给到I

    2024年02月09日
    浏览(58)
  • docker持久化部署vue前端nodejs后端项目-- 01. docker以及docker-compose在window以及linux的安装

    本章节主要来讲述docker desktop 界面版本使用以及docker-compose 的安装和使用 GIT地址:添加链接描述 docker 专栏:点击此处 章节 1 docker以及docker-compose在window以及linux的安装 2 项目对应的docker-compose结构 3 怎么将docker-compose项目部署到服务器上 4 配置服务器JENKINS环境 额外篇 章节

    2024年02月04日
    浏览(36)
  • Linux部署VUE项目

    记录一次部署VUE项目的过程 部署VUE项目之前,首先要部署一下Nginx,用Nginx来做代理转发 一、安装教程 1、官网下载地址:nginx: download 2、下载教程: 1)选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系统中 2)在linux环境中使用命

    2024年02月08日
    浏览(21)
  • Linux 部署Vue+Spring Boot项目

    部署Vue+ Spring Boot项目 输入客户端进行测试: 设置redis密码(临时方法,重启redis后密码会失效,需要重新设置): 需要永久配置密码的话就去redis.conf的配置文件中找到requirepass这个参数,如下配置: 修改redis.conf配置文件,requirepass foobared,requirepass 123 指定密码123,重启后就

    2024年02月16日
    浏览(33)
  • 如何在Linux服务器上部署Vue项目

    1. 在本地将Vue项目打包 以项目运行在vscode为例,在调试窗口输入  npm run build 待命令执行完毕之后,在项目目录下会生成dist文件夹,如下图   2. 创建一个运行文件,名字是:server.js  server.js中的内容如下: const express = require(\\\'express\\\'); const app = express(); app.use(express.static(\\\'./di

    2024年02月01日
    浏览(32)
  • idea编译打包前端vue项目

    网上download了一个前端vue项目 第一次接触前端记录一下编译打包遇到的问题 1、idea前端项目打包一般是依赖                 groupIdorg.codehaus.mojo/groupId                 artifactIdexec-maven-plugin/artifactId                 version3.0.0/version 这个maven插件 里面可以定义要执行的打包步

    2024年01月23日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包