记录一次搭建站点的过程

data: 2020-7-21

又是美好的一天.

需求是: 搭建一个 xx 系统的测试站点

1. 拉取到最新的代码:(前后端都是一样的)

git remote add origin git地址

2. 使用打包脚本进行打包, 将前端的代码和后端代码打包到一起

#!/bin/bash
# 进入到前端文件夹中
cd  E:/JiaXue_DaiMa/program04-task/task-manage-web-show-project
# 更新一下代码, 保证最新状态
git pull
# 使用 阿里的脚手架拉取前端所需要的包 相当于 cnpm install
cnpm i
# 使用前端的打包命令 进行打包
cnpm run build
#进到前端打包完,存放包的位置
cd E:/JiaXue_DaiMa/program04-task/task-manage-web-show-project/dist
# 删除原来后端文件夹中存的前端的包
# 注意查看此路径下的 static 这个文件夹是否存在
rm -rf E:/JiaXue_DaiMa/program04-task/task-manage/src/main/resources/static/_nuxt/*
# 将前端打好的包 移动到后端的存放静态资源的位置
mv -f * E:/JiaXue_DaiMa/program04-task/task-manage/src/main/resources/static
# 进入到后端文件夹中
cd E:/JiaXue_DaiMa/program04-task/task-manage
# 拉取最新代码, 保证最新
git pull
# 删除上次打包的文件
rm -rf target/*
# 使用 maven 的打包命令进行打包
mvn clean package -Dmaven.test.skip=true
# 进入到打包完成的文件夹中
cd target

3. 将打好的前后端在一起的一个jar包上传到服务器上(命令行形式通用)(必会)

公司使用的 jar 路径为 /var/opt/xx 下

scp [可选参数] file_source file_target

scp local_file remote_username@remote_ip:remote_file 

# 上传到远程, 但不改变文件名称
scp 1.mp3 root@www.runoob.com:/home/root/others/music

# 上传到远程, 在指定文件夹下,且更改文件名 
scp 1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 
# 使用 scp 命令实现,本地到远程的加密上传文件的操作
scp xx-0.0.1-SNAPSHOT.jar root@192.168.1.110:/var/opt/xx/xx.jar

使用 Xshell 可以实现拖拽直接上传到指定的位置(会用)

4. 将上传后的文件修改权限, 使其可执行, 我本地上传后是一个压缩文件而已,不可以被运行

注:
红色的文件 === 压缩文件
绿色的文件 === 可执行文件
蓝色的文件 === 文件夹
白色的文件 === 普通的文件

# sudo 以超级管理员执行此命令
# chmod linux基础, 修改文件的权限
# 权限数字 , linux 基础
# 可读    r ------------4
# 可写    w ------------2
# 可执行  x ------------1
# 无权限  - ------------0
sudo chmod 权限数字 文件名
sudo chmod 755 xx.jar
# 复制一份留着, 万一出问题可以快速修复
cp xx.jar xx.jar.back

5. 将项目的配置文件找一份过来,在linux中进行配置完成, 放于 xx.jar 同一文件夹中

通常是 application-dev.properties 这个配置文件, 在配置文件中进行自己的配置. 比如: 数据库的配置, 端口号的配置,等等 此文件的优先级最高,覆盖原本项目中的其他的配置文件的配置,当这个文件中没有配置时,低优先级的才会生效. 优先级:
记录一次搭建站点的过程_第1张图片

  1. 数据库的配置,由数据库名, 用户名, 密码等等组成
  2. 配置好了 以后 , 去mysql中创建对应的数据库
  3. 建库
# 进入数据库
mysql -u root -p
# 显示mysql中已经存在的数据库名称
show databases;
# 创建对应项目 jar 的数据库
create database xx
  1. 查看端口的占用情况
# 没有回显则, 此端口没有被使用
lsof -i:端口号

# linux中没有提示是最好的提示, 证明没有问题, 有问题才会提示.漂亮.

6. 将可执行的 xx.jar 软连接到,启动的文件夹中对应的文件上

软链接文件有类似于Windows的快捷方式.不占内存

ln -s 源文件 目标文件

使用的是 /etc/init.d/ 这个文件夹下的对应文件

ln -s xx.jar /etc/init.d/xx

将 xx.jar 文件在/etc/init.d/这个文件夹中创建了一个叫 xx 的快捷启动方式
在任意位置使用
./etc/init.d/xx
可以启动对应的项目 xx

7. 使用 tail 查看启动的日志文件(已经进入到日志文件的目录中了)

# tail -显示的数量f 文件名称

tail -100f app.log
  1. 项目启动以后, 可以由 管理员 开放对应的端口来访问你的项目了
# 使用 如下命令: 来查看对应项目的启动情况
# 使用ps -ef | grep+服务名 来查看对应服务是否正常运行
# ps -ef是显示所有进程的消息
# | 管道符, 将前面的信息作为输入结果传给后面
# grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 
ps -ef | grep java 
  1. 也可以使用 nginx 配置来实现反向代理, 那样就不用管理员来开端口了

    nginx 只会抄 ,还不会 以后在写

本次, 搭建的时候遇见的问题:

  1. 在打包的时候 ,没有看打包的日志文件, 以为打包完成,其实没有,打包是有问题的, 不存在 对应的后端的 static 这个文件夹, 导致前端的包没有放进去, 找了很久.
  2. 忘记了很多linux的命令, 上传的文件 是红色的压缩文件都没看出来, 低级问题
  3. 第一次搭建站点, 不知道配置文件应该怎么弄 , 区别的地方拷贝一份, 改成你自己的啊 C V 工程兵…
  4. 检测端口号占用的命令 lsof -i:端口号
  5. 查看项目是否启动成功 ps -ef | grep java

over!

你可能感兴趣的:(后端,发布项目,shell)