很多小伙伴写了前后台分离项目,需要部署,往往第一次部署都会有许多坑要踩,我第一次部署也是踩了许多坑,先在把我自己踩的坑和步骤列出来(仅仅代表个人踩坑和所遇见的问题)
1.首先打包好vue前台项目,使用npm run build
打包,如果是淘宝镜像用自己的方式打包,如下:
[出现这个字样代表打包成功,因为我是已经打包了的,所以是这样。
找到打包好的文件路径拖至服务器。
2.找到自己的springboot项目进行后台打包,如果打包需要在自己的指定路径下则需要配置pom文件
<build>
<finalName>项目名称</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>*.properties</exclude>
<exclude>*.yml</exclude>
<exclude>*.xml</exclude>
</excludes>
<archive>
<manifest>
<!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
<mainClass>启动类</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
</manifest>
<manifestEntries>
<!-- 在Class-Path下添加配置文件的路径 -->
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-xmls</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/conf</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>*.properties</include>
<include>*.yml</include>
<include>*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>target/lib/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
这样就会指定打包到所在文件下面。之后将lib下面的jar和启动类全部上传至服务器(服务器的规范不指定出来)。
3.开设端口
开设好自己所需要的的端口,因为我是通过nginx代理端口,前后端端口开设的不一样。
注意:前端访问的端口一定是nginx所代理的。
4.配置nginx 这里只展示关键的配置
server {
listen 2000(前端所监听的端口);
server_name xxxx.net;(自己的域名)
underscores_in_headers on;
add_header X-Cache $upstream_cache_status; #添加这行即可
charset utf-8;
location /{
root /xxx/xxx/dist;//前端所在服务器的四至
index index.html index.htm; #默认访问文件
try_files $uri $uri/ /index.html; #目录不存在则执行index.html;
#include mime.types;
#default_type application/octet-stream;
}
location /api{
proxy_pass http://127.0.0.1:xxxxx/;//后台程序制定路径(端口为后台配置文件中的端口)
}
location /socket/ {
proxy_pass http://127.0.0.1:xxxx/;后台启动的配置(端口为后台配置文件中的端口)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location ~ ^/(WEB-INF)/ { #这个很重要,不然用户就可以访问了
deny all;
}
配置好之后,要么重启nginx,要么重新加载(命令/nginx -s reload
)
完成之后,可以通过域名加端口号访问自己的前台,看是否配置成功。
之后启动后台,注意:后台配置文件的指定端口一定是nginx中所指向的,否则启动也访问不了(如上如写的(端口为后台配置文件中的端口))。
启动命令有多种,我自己喜欢用
nohup java -jar /文件目录/xxxx.jar --spring.config.location=/文件目录/conf/application.properties >/自定义文件夹/xxxxlogs/xxx.log &
注意:application.properties配置了那种为生产环境(dev,prod),自己根据需求而定
最后看日志是否成功,则完成!
以上仅仅是个人笔记。(务杠!!!!!!)