ps : 项目要在云服务器上部署,博主自己是用的腾讯云,大家可以选择购买合适的服务器进行部署
目录
一、AC终端操
1、ssh登录服务器
2、创建新用户
3、分配用户 sudo 权限
4、配置免密登录(SSH)
5、传递祖传文件给服务器
6、安装软件(tmux,docker)
二、Git Bash 配置
1、ssh 免密登录
三、配置 Docker 环境
1、加载docker镜像
2、给容器创建用户
3、配置docker中的acs
4、Git Bash 配置免密登录 docker
5、祖传文件传到 docker 中
四、配置部署环境
1、安装 、配置 MySQL
2、安装jdk
五、上线后端
1、统一api格式
2、修改网关
3、 打包项目
六、配置nginx
1、配置文件
2、启动 / 加载 nginx
3、测试
七、上线前端
ssh root@IP地址
输入密码:XXXX
如报错:则执行: rm .ssh/known_hosts 删除原有的 ssh 信息
linux 命令列出用户:
cat /etc/passwd |cut -f 1 -d:
一般来说,最下面这几个就是你自己创建过的用户
下面给出几个常见命令:
- 创建用户: adduser 用户
- 设置用户密码: passwd 用户,然后输入密码即可
- 验证、查看用户:cat /etc/passwd |cut -f 1 -d:
sudo给用户提供了一种机制,可以在不分享 root 用户密码情况下,为您信任的用户提供管理权限
- cd /etc/sudoers
- chmod u+w sudoers
- vim /etc/sudoers
- 找到 root ALL=(ALL) ALL
- username ALL=(ALL) ALL
- 配置免密使用 sudo 命令
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
#下面的user是你的用户名 添加这一行就能免密sudo了
user ALL=(ALL:ALL) NOPASSWD: ALL
如何查看当前用户是否具有 sudo 权限?
sudo cat/etc/sudoers
- 生成密钥: ssh-copy-id myserver
- 回车输入密码,将 .ssh/id_rsa.pub 的内容传到服务器 ./ssh/authorizes_keys,如果没有则通过 ssh - kygen 生成
- 输入命令:ssh myserver1
scp .bashrc .vimrc .tmux.conf myserver1
更新软件列表:
sudo yum update
安装tmux:
sudo yum update
sudo yum install tmux
测试 tmux 安装?
tmux
安装docker:
1.打开
tmux
。(养成好习惯,所有工作都在tmux
里进行,防止意外关闭终端后,工作进度丢失)2.刷新软件源:
sudo yum update
2.在云服务器的
acs
用户下:然后在tmux
中根据docker
安装教程安装docker
即可。tmux
ctrl shift A +shift %分屏
3.
Centos
安装Docker
网址
Centos的Docker安装4.步骤如下:在下面。
5.测试:
docker --version
6.配置docker sudo权限,
sudo usermod -aG docker $USER
,要不然使用docker所有命令都要sudo7.
ctrl + d
返回acwing服务器,再次通过ssh命令进入自己服务器,此时docker可以正常使用了。执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo
权限。
本地创建密钥,如果以前创建过密钥,跳过此步:ssh-keygen(本地执行过一次ssh-keygen)
自动配置服务器密钥:
ssh-copy-id myserver
输入云服务上的密码即可。
测试:登录云服务器:
ssh myserver1
返回acwing服务器,进入
/var/lib/acwing/docker/images
,通过命令:scp django_lesson_1_0.tar 别名:
加载tar文件为docker镜像文件:
docker load -i django_lesson_1_0.tar
,
通过docker images
查看docker镜像创建spring boot的docker:
docker run -p 20000:22 -p 443:443 -p 80:80 -p 3000:3000 -p 3001:3001 -p 3002:3002 -itd --name kob_server django_lesson:1.0
进入容器:
docker attach kob_server
最终我们的程序是部署在容器中的,因为可以便于我们迁移,当我们要换服务器时,我们就把容器压缩包上传到新的docker即可
此时这个容器才是我们的开发环境,我们还需添加用户、给用户添加sudo权限。
- 添加用户:
adduser 用户名
,输入两次密码,五次回车,输入Y- 添加sudo权限:
usermod -aG sudo 用户名
- 通过命令
ctrl + p + ctrl + q
挂载容器,注意不是ctrl d
(关闭容器)- 去腾讯云,开放端口80,443,20000端口
1、vim config:
Host 别名
HostName ip
User 用户名
Port 200002、免密登录 ssh-copy-id 别名
3、ssh 别名
1、vim config:
Host 别名
HostName ip
User 用户名
Port 200002、免密登录 ssh-copy-id 别名
3、ssh 别名
scp .bashrc .vimrc .tmux.conf myserver1_docker1:
进入 docker:
- 更新软件源;
sudo apt-get update
- 安装:
sudo apt-get install mysql-server
- 启动:
sudo service mysql start
- 登录mysql:
sudo mysql -u root
- 设置root用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
- 创建数据库:create database kob;
use kob;
show tables;
- 创建表
- 在idea中打开数据库,右键kob -> SQL脚本 -> 将DDL生成到剪贴板
- 在docker容器中acs下创建create_table.sql:
vim create_table.sql
- 输入命令:
:set paste
进入粘贴模式- 按i进入编辑模式,按下
shift + insert
粘贴内容,:wq保存并退出
前提要先选择好数据库,use kob
;- 在mysql命令行中输入命令:
source /home/acs/create_table.sql
- 创建成功
- 命令:
sudo apt-get install openjdk-8-jdk
- 测试:
java -version
- 将GetRanklistController、GetRecordListController、InfoController、GetListController的GetMapping中的地址前加上/api
- 将LoginController、RegisterController、AddController、RemoveController、UpdateController的PostMapping中的地址前加上/api
以 backend 为例:在pom.xml 中加入:
backend/pom.xml
...
backend
jar
...
org.springframework.boot
spring-boot-maven-plugin
com.kob.backend.BackendApplication
repackage
提示:打包前记得删除匹配玩家时输出的语句
打开右侧Maven,点开backendcloud -> 生命周期 -> 双击clean -> 双击package
用本地终端,传给docker下的acs:
scp backend-0.0.1-SNAPSHOT.jar myserver1_docker1:
scp botrunningsystem-0.0.1-SNAPSHOT.jar myserver1_docker1:
scp matchingsystem-0.0.1-SNAPSHOT.jar myserver1_docker1:
登录Docker下的acs:
cd ~
mkdir kob
cd kob
mkdir backendcloud
mkdir web
mkdir acapp
cd backendcloud
mv ~/*.jar .
运行后端:
java -jar backend-0.0.1-SNAPSHOT.jar
java -jar matchingsystem-0.0.1-SNAPSHOT.jar
java -jar botrunningsystem-0.0.1-SNAPSHOT.jar
- cd /etc/nginx
- sudo vim nginx.conf
- 在命令行模式输入命令:ggdG
- 复制y总讲义nginx配置文件内容(在下面)
- 使用命令粘贴:
sudo scp .bashrc .vimrc .tmux.conf /root
将文件传给root- 使用:set paste进入粘贴模式
- 按i进入编辑模式
- shift + insert粘贴
- esc退出编辑模式
- dd删除无关行内容
- :wq保存内容
- 将server_name的编号改成acwing创建应用界面的AppID,共有两处
或者自己的域名注意:若用户名不是acs,需要将nginx.conf配置文件中的acs全部改成你的用户名
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen 80;
server_name XXXXXXXXXX替换app2703.acapp.acwing.com.cn;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl;
server_name XXXXXXXXXX替换app2703.acapp.acwing.com.cn;
ssl_certificate cert/acapp.pem;
ssl_certificate_key cert/acapp.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
charset utf-8;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
client_max_body_size 10M;
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /websocket {
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 36000s;
}
location / {
root /home/acs/kob/web;
index index.html;
try_files $uri $uri/ /index.html;
}
}
}
sudo /etc/init.d/nginx start
在浏览器中输入域名测试,若提示403 forbidden则表示成功,并测试放行端口显示405
https://snake.mycomputer.top/api—>403
https://snake.mycomputer.top/api/user/account/register/—>405
- 在vscode中,
ctrl + shift + f
全文搜索127.0.0.1或localhost,将http://127.0.0.1:3000替换
为https://appxxxx.acapp.acwing.com.cn/api- 将ws://127.0.0.1:3000
替换
为wss://appxxxx.acapp.acwing.com.cn- 打开vue脚手架,停止server,在任务界面选择
build
,运行- 通过scp命令将
dist文件夹
上传到服务器:scp -r dist/ springboot:kob/web/- 将dist内容移出到web下:mv dist/* .
- 在web下刪除dist文件
- 访问域名就可以访问前端网页了!