本地环境
Ubuntu20.04
服务器环境
CentOS7.6
购买服务器
以阿里云轻量服务器(适合初学者)为例,自行选择规格进行购买
购买完成后,获取服务器公网IP,同时重置密码,设置服务器密码
配置防火墙
点击实例ID,点击
防火墙>添加规则
添加
80、443(HTTPS)、3306(MYSQL)、8088(后端端口)、22(远程连接端口)
远程连接服务器
Windows系统下通常使用Xshell进行连接,Linux可以直接使用ssh,连接更便捷
(1)生成ssh密钥
ssh-keygen -t rsa
生成的ssh密钥存储在用户目录下的
.ssh
中,其中id_rsa 文件是私有密钥,id_rsa.pub 是公开密钥,可以通过cat ~/.ssh/id_rsa.pub
查看
(2)远程连接服务器
ssh -p 22 root@ip # 22为端口号,root为服务器用户账号,ip为服务器公网IP地址,如112.126.71.196
注:如果已经远程连接过服务器后,重新配置了服务器(例如重置系统等),会报错WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
,
此报错是由于远程的主机的公钥发生了变化导致的。
ssh服务是通过公钥和私钥来进行连接的,它会把每个曾经访问过计算机或服务器的公钥(public key),记录在~/.ssh/known_hosts 中,当下次访问曾经访问过的计算机或服务器时,ssh就会核对公钥,如果和上次记录的不同,OpenSSH会发出警告。
解决方案
# 清除连接记录
ssh-keygen -R ip # ip为连接过的服务器ip
(3)将密钥添加到服务器中,实现免密快捷登录
当我们频繁需要使用SSH连接到同一个服务器时,通过配置免密登录可以节省时间并提升工作效率
# 将密钥复制到服务器中
ssh-copy-id root@ip # root为服务器用户账号,ip为服务器公网IP地址,如112.126.71.196
# 免密登录
ssh root@ip
配置JDK环境
Windows下可以通过xftp传输文件,Linux直接使用sftp
更加方便
xftp连接服务器
xftp root@112.126.71.196
xftp操作:服务器端使用linux命令操作即可,本机操作需在命令前额外+l,例如
# 进入服务器的admin文件夹,创建jdk文件夹
cd /home
mkdir server && cd server
# 进入本地下载文件夹
lcd Downloads
# 将本地jdk安装包上传到服务器中,上传为put,下载为get
put jdk1.8.0.tar.gz /home/server
# 检查压缩包是否存在
ls
将压缩包上传完成后,根据Linux配置JDK环境进行操作即可
安装nginx
sudo yum -y install nginx
安装Docker
1.卸载旧版本依赖
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.设置仓库
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3.设置稳定的阿里云仓库
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装最新版Docker Engine-Community和containerd
sudo yum install docker-ce docker-ce-cli containerd.io
5.启动docker
# 启动docker
systemctl start docker
# 验证安装是否成功
docker version
# 将用户加入Docker用户组
sudo usermod -aG docker $USER
# 设置开机自启
systemctl enable docker
6.阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
# 输入如下
{
"registry-mirrors":["https://3n4m4jry.mirror.aliyuncs.com"]
}
EOF
# 重新加载并重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker命令
# 查看docker镜像
docker images
# 查看docker进程
docker ps
Docker安装Mysql
安装MySQL
docker pull mysql:8.0
启动Mysql,设置初始密码
# --name 容器名称
# -p 3308:3306 物理机端口:容器内部端口
# -e 运行参数 初始化 root 用户密码
# -d 后台运行 mysql:8.0 镜像名称加标签
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=初始密码 -d mysql:8.0
进入容器
# 查看正在运行的容器,找到mysql的CONTAINER ID
docker ps
# 进入容器
docker exec -it 4569ee6814fd /bin/bash # 4569ee6814fd为CONTAINER ID
登录mysql,登录成功即代表容器创建成功
mysql -uroot -p初始密码
使用Mysql可视化工具即可连接服务器Mysql(以navicat为例),若出现连接失败,检查
服务器防火墙/工作组是否开启对应接口
复制数据库(可选)
打开localhost,选中
源数据库
的所有表,拖动到server的demo(目标数据库,需新建)
上,选择复制数据和结构
,打开数据传输界面
关闭docker的Mysql容器
docker stop 容器id
修改项目配置
自行根据实际情况将SpringBoot项目的路径、端口、账号密码、ip等信息进行修改(localhost改为公网IP地址)
添加Plugin
在pom.xml的build>plugins
下确保添加了如下plugin,用户构建项目时生成jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
构建、打包本地后端项目
cd maven项目目录
mvn clean package -DskipTests
构建完成后在该目录下target文件夹下会生成jar
使用
java -jar
可执行jar包
sftp root@112.126.71.196 # sftp连接服务器
lcd code/shixun/springboot/shixun/target
# 将jar移动到服务器
put shixun-0.0.1-SNAPSHOT.jar /home/server
# 执行jar,启动SpringBoot(在服务器终端启动,而不是sftp)
chmod +x shixun-0.0.1-SNAPSHOT.jar
java -jar shixun-0.0.1-SNAPSHOT.jar
静默后台启动、关闭后端项目
此时项目的启动在终端中,关闭终端服务器停止运行,开启jar静默后台启动
# 静默启动
nohup java -jar shixun-0.0.1-SNAPSHOT.jar &
# 查看日志
cat nohup.out
# 查看运行进程
ps -ef | grep java
# 关闭进程
kill -9 进程号
# 构建、打包本地前端项目
cd code/shixun/springboot/shixun/vue
# 构建vue项目,生成dist文件
npm run build
本地验证打包文件有效性(自选)
安装anywhere前端静态资源服务器插件
npm install anywhere -g
cd dist
# 将前端项目挂载到本地8080端口运行(确保端口不冲突)
anywhere -p 8080
将给定的url输入到浏览器中即可访问(注:需要同时启动后端服务)
将dist上传到服务器
sftp root@112.126.71.196
lcd /home/insight/code/shixun/springboot/shixun/vue
# 将dist目录上传服务器
put -r dist /home/server
# 启动nginx
cd /usr/sbin
./nginx
# 查看运行进程
ps -ef | grep nginx
# 配置端口信息
cd /etc/nginx
vim nginx.conf
新增如下信息:
# 重启nginx
cd /usr/sbin
./nginx -s reload