仅支持md格式预览,可以下个typora,就能正常显示图片了
# codesheep 视频笔记
* 包含 项目下载、运行、配置、构建、打包、部署:全步骤实战演示。前后端分离式项目实战部署
* nginx、tomcat部署配置
###### [视频链接](https://www.bilibili.com/video/BV1uK411p7Bp)
![codesheep](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626111359256.png)
## 下载
---
[项目下载地址](https://gitee.com/y_project/RuoYi-Vue)
文件结构![image-20200626130133931](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626130133931.png)
## 运行
## 配置
###### 建立修改数据库
![image-20200626130452124](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626130452124.png)
###### 修改redis配置
![image-20200626131246709](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626131246709.png)
###### 修改日志路径 和 encoding 视频10分钟处
![image-20200626132750707](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626132750707.png)
成功启动
我只有一台服务器,所以就在一台上操作了,羊哥是一台放前端文件,两台放后端文件 存放路径均保持一致
将前端文件ruoyi-ui打包成zip传到服务器root/workspace文件夹【打包是为了防止隐藏文件丢失】
unzip ruoyi-ui.zip 【解压】
rm -rf ruoyi-ui.zip 【删除压缩包】
后端文件同样传到root/workspace
## 打包
#### 前端部分
1. 安装前端依赖
* cd ruoyi-ui
* npm install --unsafe-perm --registry=https://registry.npm.taobao.org
2. 前端打包[打生产环境的包]
* cd ruoyi-ui
* npm run build:prod
```shell
实际操作下来,npm run build:prod 会报错(如下),所以我就在自己机子上打war包,再传到服务器里
ERROR Build failed with errors.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build:prod: `vue-cli-service build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-06-26T06_22_28_069Z-debug.log
```
* 可以看到当前目录下会生成 dist 目录 ,这个就是前端的打包成品
![image-20200626141300869](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626141300869.png)
前端打包完成
---
#### 后端部分
##### 方案一 直接打jar包【简单】
* cd ../ruoyi [切到后端文件夹]
* mvn package [打包命令]
* 当前文件下生成 target 文件夹,里面有jar包【jar包可以直接运行】
![image-20200626142139427](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626142139427.png)
* 把ruoyi.jar复制一份到上级目录 【防止被清理掉 指令mvn clean 会清理掉target目录 】
##### 方案二 打war包,部署到外置tomcat的环境【需要改pom.xml文件配置】
###### 1.改打包方式
![image-20200626144329858](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626144329858.png)
###### 2.添加dependency
将自带的tomcat排除掉,这样才能部署到外置的tomcat [前提是服务器上已经装好了tomcat]
![image-20200626144820242](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626144820242.png)
###### 3. 创建项目的辅助类使指向原先的启动类
创建一个类SpringBootStartApplication,位置如图
代码部分:
```java
package com.ruoyi;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(RuoYiApplication.class); //RuoYiApplication.class 是原来的启动类
}
}
```
4. 将服务器中pom.xml包替换,然后在对应目录下添加新的class类
* cd ../ruoyi [切到后端文件夹]
* mvn package [打包命令]
* target目录下生成war包
![image-20200626150846786](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626150846786.png)
后端打包完成
## 部署
### jar包部署
#### 部署前端项目 视频25分处
* cd /usr/local/nginx
* vim conf/nginx.conf
* 【用于复制: /root/workspace/ruoyi-ui/dist】
第二行 # user nobody 改成 user root 保存
然后
改成
启动nginx
* cd sbin/ 【切入sbin目录】
* ./nginx 【nginx启动了】
```shell
[root@iz2ze6jovvkf388jd1uypoz sbin]# ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
说明80 端口已经在使用了,我们要把它关掉
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[root@iz2ze6jovvkf388jd1uypoz sbin]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6387/nginx: master
[root@iz2ze6jovvkf388jd1uypoz sbin]# kill 6387
[root@iz2ze6jovvkf388jd1uypoz sbin]# ./nginx
成功启动
```
* 直接输入自己的ip地址,不要带端口,出现页面,则前端布置成功
* 如果页面无法访问,那可能nginx.conf 文件里location里面的root设置的不对 需要确认下dist文件的位置
![image-20200626152117797](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626152117797.png)
前端部署完成
#### 部署后端项目
切换到ruoyi目录
* cd root/workspace/ruoyi 【要到有ruoyi.jar的文件夹下!! 】
* nohup java -jar ruoyi.jar &
【nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行 &代表在后台运行。】
```java
出现
[root@iz2ze6jovvkf388jd1uypoz target]# nohup: ignoring input and appending output to ‘nohup.out’
没关系
```
#### 前后端关联 视频27分处
![image-20200626152614228](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626152614228.png)
需要到nginx里配置下代理,让前端通往后端
* cd /usr/local/nginx
* vim conf/nginx.conf
凡是请求 /pord-api/的转发路径全都代理到 http://192.268.31.100:8080后端
```shell
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Fordwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.268.31.100:8080/; #改成自己的ip地址!!!
}
```
![](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200626153200182.png)
* 文件重新加载下
/usr/local/nginx/sbin/nginx -s reload
* 重新访问页面,成功连接
### war包后端项目部署
cd /usr/local/tomcat/
cd appache-tomcat
将war包放到/webapps下
unzip ruoyi.war -d ruoyi 【-d 解压到文件夹】
cd webapps
cp /root/workspace/ruoyi/ruoyi.war ./ 【将war包复制到当前目录】
![image-20200626192104809](C:%5CUsers%5C10852%5CDesktop%5Ccodesheep%20%E8%A7%86%E9%A2%91%E7%AC%94%E8%AE%B0%5Cimage-20200626192104809.png)
service tomcat start
访问页面,如果能看到这两张图片,说明你的tomcat正常启动了,你的后端也是可以正常访问的
![image-20200628101755338](https://gitee.com/zhangfk/tuchuang/raw/master/img/image-20200628101755338.png)
我们改成根目录访问的方式,这样访问后端就可以直接用 ip:8080访问了
进入/usr/local/tomcat/apache-tomcat-8.5.55/conf 修改server.xml文件 将代码放到 154行【只要是在
```xml
```
service tomcat stop
service tomcat start
后端部署war包完成
> war包前后端关联操作步骤在上面小标题 “前后端关联 视频27分处”
# 个人实际部署问题总结
阿里云服务器端口8080没有开放导致以下问题
**jar包部署中**,当正常执行java -jar ruoyi.jar 时,进程会被Kill掉,如下
当执行 nohup java -jar ruoyi.jar &时 进程过几秒或者去打其他命令也会显示被kill掉
**war包部署中** 若webapps中不存放war包,则tomcat是可以正常启动的,正常显示tomcat页面
存放war包后,执行service tomcat start 正常,然后执行service tomcat stop会报错显示tomcat没有在运行,
自己也用ps -aux|java 看了下,确实是假启动!!
这问题花了我两天时间,最后才发现是自己阿里云平台的服务器没有开8080端口,如果一开始用的是自己的虚拟机,更着上面走毫无问题。
# linux命令总结
2. 前端打包[打生产环境的包]
* cd ruoyi-ui
* npm run build:prod
2. 后端打包
cd ruoyi
mvn package [打包命令]
3.启动nginx
* cd sbin/ 【切入sbin目录】
* ./nginx 【nginx启动了】
* /usr/local/nginx/sbin/nginx -s reload 【重新加载】
启动jar
* cd /workspace/ruoyi 【要到有ruoyi.jar的文件夹下!! 】
* nohup java -jar ruoyi.jar &
【nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行 &代表在后台运行。】
复制目录
假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下所有文件复制到dir2下了
如果dir2目录不存在,则可以直接使用
cp -r dir1 dir2
即可。
如果dir2目录已存在,则需要使用
cp -r dir1/. dir2
如果存在文件删除
rm -rf 名字
3.如果某个进程起不来,可能是某个端口被占用
查看使用某端口的进程
```
lsof -i:8080
```
netstat -ap|grep 8090
查看到进程id之后,使用netstat命令查看其占用的端口
```
netstat -nap|grep 7779
```
查询进程
ps -aux | grep java
ps -l 列出与本次登录有关的进程信息;
ps -aux 查询内存中进程信息;
ps -aux | grep *** 查询***进程的详细信息;
top 查看内存中进程的动态信息;
kill -9 pid 杀死进程。
## 32分开始部署第二台后端虚拟机