diff --git a/.readme.md b/.readme.md deleted file mode 100644 index 6bbfc52..0000000 --- a/.readme.md +++ /dev/null @@ -1,590 +0,0 @@ -@[TOC](如何部署Spring Boot + Vue项目:Centos为例) -> 😊😊😊欢迎来到本博客😊😊😊 -📫作者简介:阿斯卡码,专注于研究Java框架/Vue,就读于河南中医药大学,刚刚入门项目开发📫 -🏆 CSDN编程比赛奖章获得者/Java领域创作者🏆 -🔥计划学习:深入学习Spring全家桶,Vue, mybatis,Mysql等领域。(目前涉及不深入)🔥 -👍如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~ - - ->先总结: ->- ssh登录步骤: -> - 1.`vim config`配置别名 -> - 2.`ssh-copy-id myserver`配置免密登录 -> - 3.若出错,删除文件,重新`ssh-keygen` ->- 服务器和Docker创建acs&&赋予sudo: -> - 方法不同,因为镜像,服务器不同(Centos) -> - 先登录服务器下的acs,还得登录Docker下的acs -> - 祖传文件: -> - 第一次:传到服务器下的acs用户 -> - 第二次:传到Docker下的acs用户 -> -# 一:项目上线:Centos版 -## 1.ACterminal端: -### 1.1ssh登录服务器 -```java -ssh root@IP地址 -输入密码:XXXX -``` - -如出现以下报错:则执行:`rm .ssh/known_hosts ` - -```java -acs@2889803f8420:~$ ssh root@IP -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! -Someone could be eavesdropping on you right now (man-in-the-middle attack)! -It is also possible that a host key has just been changed. -The fingerprint for the ECDSA key sent by the remote host is -SHA256:Lb/lDeBWaAhVm9Xkfpa6dCkjsVcIENwxRiFgsml7NWc. -Please contact your system administrator. -Add correct host key in /home/acs/.ssh/known_hosts to get rid of this message. -Offending ECDSA key in /home/acs/.ssh/known_hosts:4 - remove with: - ssh-keygen -f "/home/acs/.ssh/known_hosts" -R "119.91.226.142" -ECDSA host key for 119.91.226.142 has changed and you have requested strict checking. -Host key verification failed. -``` -### 1.2创建acs新用户(第一次创建) ->**Linux命令列出所有用户**:`cat /etc/passwd |cut -f 1 -d:` - -- 创建用户:`adduser acs(用户名)` -- 设置用户密码:`passwd acs,然后 输入密码` -- 验证:查看用户,多出acs用户,`cat /etc/passwd |cut -f 1 -d:` - ->sudo知识:sudo 命令提供了一种机制,它可以在不用分享 root 用户的密码的前提下,为信任的用户提供系统的管理权限。 -### 1.3给用户acs分配sudo权限 - -- 先找到`/etc/sudoers`位置 -- 给文件写入权限:`chmod u+w sudoers` -- 修改文件:`vim/etc/sudoers` -- 添加:在里面找到`root ALL=(ALL) ALL` -- 然后在其下面增加`username ALL=(ALL) ALL` -- 配置免密使用`sudo`命令: -```java -# 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 -``` - -- 将文件的写入属性撤销:`chmod u-v sudoers` - -- 通过`su xx`切换回自己的用户名,再使用`sudo`命令时,就可以使用了 - ->**chmod知识:** -XXX代表一个数,XXXXXXXXX代表三个数 -**查看文件的权限:** -`ll` 不包含点开头的文件 -`ll -a` 包括点开头的文件 -具体一个文件:`ll 文件名` -![在这里插入图片描述](https://img-blog.csdnimg.cn/81fa3a71b1484d618069aee6c7ad26cc.jpeg#pic_center) -![在这里插入图片描述](https://img-blog.csdnimg.cn/004fe590d0c5409b9e4a14fe04a7eb5a.jpeg#pic_center) -**如何查看acs具有sudo权限呢?** -执行:`sudo cat /etc/sudoers` -![在这里插入图片描述](https://img-blog.csdnimg.cn/b20d303a99db49a193752fc740f99c2f.jpeg#pic_center) - - - - -### 1.4配置别名登录(登录acs) -`vim config ` -![在这里插入图片描述](https://img-blog.csdnimg.cn/2afc86c8cb9743b89834f779d7a2d09c.jpeg#pic_center) -### 1.5配置免密登录(ssh:服务器下acs) -- 自动配置服务器密钥:`ssh-copy-id myserver` - -- 回车命令后输入密码,为了将`.ssh/id_rsa.pub`的内容传到目标服务器的`~/.ssh/authorized_keys`中,若没有此文件,通过命令:`ssh-keygen`生成。 - -- 测试:登录云服务器:`ssh myserver1` - -### 1.6将祖传文件传到服务器的acs下[第一次传](在Acterminal上) -- 配置`tmux、vim、bash`环境:`scp .bashrc .vimrc .tmux.conf myserver1:` -![在这里插入图片描述](https://img-blog.csdnimg.cn/269beaaa01854bddb20ba55ae40675a4.jpeg#pic_center) -### 1.7 软件安装(Ac端||本地) -> `sudo yum update` 作用:更新软件列表 -#### 1.7.1安装`tmux` -- 安装`tmux` - - 1.登录自己的服务器,然后安装`tmux`: -```java -sudo yum update -sudo yum install tmux -``` -![在这里插入图片描述](https://img-blog.csdnimg.cn/9204c359e6d34f3897fb034535f66ed8.jpeg#pic_center) -通过tmux命令测试是否安装成功 - -#### 1.7.2安装`docker` -- 安装`docker` - - 1.打开`tmux`。(养成好习惯,所有工作都在`tmux`里进行,防止意外关闭终端后,工作进度丢失) - - 2.刷新软件源:`sudo yum update` - - 2.在云服务器的`acs`用户下:然后在`tmux`中根据`docker`安装教程安装`docker`即可。 - ``tmux `` - ``ctrl shift A +shift %分屏`` - - - 3.`Centos`安装`Docker`网址 - [Centos的Docker安装](https://docs.docker.com/engine/install/centos/) - - 4.步骤如下:在下面。 - - 5.测试:`docker --version` - - 6.配置docker sudo权限,`sudo usermod -aG docker $USER`,要不然使用docker所有命令都要sudo - - 7.`ctrl + d`返回acwing服务器,再次通过ssh命令进入自己服务器,此时docker可以正常使用了。执行完此操作后,需要退出服务器,再重新登录回来,才可以省去`sudo`权限。 - -```java -########################设置存储库###################### - sudo yum install -y yum-utils - - - sudo yum-config-manager \ - --add-repo \ - https://download.docker.com/linux/centos/docker-ce.repo - - -#######################安装 Docker 引擎#################### -sudo yum update - -sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin - -##############################测试########################## -输入docker,有相关用法提示出现---》成功 -``` - - ->输入`docker status`,出现以下错误。原因是,当前用户没有添加到`docker用户组`![在这里插入图片描述](https://img-blog.csdnimg.cn/e9500fa3e1804a7fa5649105466c1020.jpeg#pic_center) -**解决办法:** -1.输入`sudo`+命令 -2.将当前用户添加到`docker`用户组: -为了避免每次使用`docker`命令都需要加上`sudo`权限,可以将当前用户加入安装中自动创建的docker用户组(可以参考官方文档): -`sudo usermod -aG docker $USER` - - - -## 2.本地Git Bash端 -### 2.1ssh别名登录(ssh:服务器下acs) - -- >`Vim config` - >>Host 别名 - HostName ip - User 用户名 -- 本地创建密钥,如果以前创建过密钥,跳过此步:ssh-keygen(本地执行过一次ssh-keygen) - -- 自动配置服务器密钥:`ssh-copy-id myserver` - -- 输入云服务上的密码即可。 - -- 测试:登录云服务器:`ssh myserver1` - -![在这里插入图片描述](https://img-blog.csdnimg.cn/f971d7d31d0a49838803ae2ad7467c61.jpeg#pic_center) - - -## 3.Acterminal端:配置docker环境(传送Docker) - -**配置spring boot的docker环境** - -- 返回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` - -此时这个容器才是我们的开发环境,我们还需==添加用户、给用户添加sudo权限==。 - - - -### 3.1给容器创建用户acs(第二次创建) -- 添加用户:`adduser 用户名`,输入两次密码,五次回车,输入Y -- 添加sudo权限:`usermod -aG sudo 用户名` -- 通过命令`ctrl + p + ctrl + q`挂载容器,注意不是`ctrl d`(关闭容器) -- 去腾讯云,开放端口80,443,20000端口 - - -#### 3.1.1ACTerminal配置登录Docker中的acs(ssh:Docker下acs) -- >1.`vim config` - >>Host 别名 - HostName ip - User 用户名 - Port 20000 - -- 2.配置免密登录:`ssh-copy-id 别名` -- 3.`ssh 别名` - -#### 3.1.2GitBash(本地)配置登录Docker中的acs(ssh:Docker下acs) -- >1.`vim config` - >>Host 别名 - HostName ip - User 用户名 - Port 20000 - -- 2.配置免密登录:`ssh-copy-id 别名` -- 3.`ssh 别名` - - - -### 3.2将祖传文件传到docker中acs下【第二次传】(在Acterminal上) -` scp .bashrc .vimrc .tmux.conf myserver1_docker1:` - - - -## 4.本地Git Bash操作:配置docker开发环境 -在Docker下的acs中,下面的命令是apt-get,因为是ubantu镜像。 -### 4.1 安装、配置mysql -- 更新软件源;`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` - - 创建成功 -![在这里插入图片描述](https://img-blog.csdnimg.cn/a9965b119c73482db5908c55b5284718.jpeg#pic_center) - -### 4.2 安装jdk - -- 命令:`sudo apt-get install openjdk-8-jdk` -- 测试:`java -version` - - - - -## 5.上线后端(重点) -### ~~5.1.将代码执行的输入修改为文件~~ -### ~~5.2.将排行榜页面的展示个数修改为10~~ -### ~~5.3.标记玩家游戏所在处~~ -### 5.4.统一api格式 -**修改api地址** - - 将GetRanklistController、GetRecordListController、InfoController、GetListController的GetMapping中的地址前加上/api -- 将LoginController、RegisterController、AddController、RemoveController、UpdateController的PostMapping中的地址前加上/api - -**修改网关** -- .antMatchers("/api/user/account/token/", "/api/user/account/register/").permitAll() - -### 5.5.后端上线(重点) - -**配置项目打包方式eg:** - -```java -backend/pom.xml - - - ... - - backend - jar - - ... - - - - - org.springframework.boot - spring-boot-maven-plugin - - - com.kob.backend.BackendApplication - - - - - repackage - - - - - - - -``` - - -```java -botrunningsystem/pom.xml - - - - ... - - botrunningsystem - jar - - ... - - - - - org.springframework.boot - spring-boot-maven-plugin - - - com.kob.botrunningsystem.BotRunningSystemApplication - - - - - repackage - - - - - - - -``` - -```java -matchingsystem/pom.xml - - - - ... - - matchingsystem - jar - - ... - - - - - org.springframework.boot - spring-boot-maven-plugin - - - com.kob.matchingsystem.MatchSystemApplication - - - - - repackage - - - - - - - -``` -**打包** -提示:打包前记得删除匹配玩家时输出的语句 -打开右侧Maven,**点开backendcloud -> 生命周期 -> 双击clean -> 双击package** -![在这里插入图片描述](https://img-blog.csdnimg.cn/9566c773b76b4a75baf6c95a20590607.jpeg#pic_center) - - -**用本地终端,传给docker下的acs** - -```java -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** - -```java -cd ~ -mkdir kob -cd kob -mkdir backendcloud -mkdir web -mkdir acapp -cd backendcloud -mv ~/*.jar . -``` -**运行后端** - -```java -java -jar backend-0.0.1-SNAPSHOT.jar -java -jar matchingsystem-0.0.1-SNAPSHOT.jar -java -jar botrunningsystem-0.0.1-SNAPSHOT.jar -``` - -![在这里插入图片描述](https://img-blog.csdnimg.cn/0e7cfcf8a8d849b5bd6cb1f37314775d.jpeg#pic_center) -![在这里插入图片描述](https://img-blog.csdnimg.cn/c9a9e08148294a919bf12d199567f53b.jpeg#pic_center) -![在这里插入图片描述](https://img-blog.csdnimg.cn/07bdba54fc444a06b0bcc7907b8b9b68.jpeg#pic_center) -![在这里插入图片描述](https://img-blog.csdnimg.cn/77f50d8481ea42779e6009c171215202.jpeg#pic_center) - -![在这里插入图片描述](https://img-blog.csdnimg.cn/d0037d306aef4e16b865531ea86fea49.jpeg#pic_center) -## 6.获取域名及Https证书(重点) - -- 获取SSL证书,下载*.key和*.pem文件,复制粘贴到`/etc/nginx`下(我是从腾讯申请的SSL) - 如何申请SSL? - ![在这里插入图片描述](https://img-blog.csdnimg.cn/4e7bcf29c0f040cb88ab970362df55c7.jpeg#pic_center) -![在这里插入图片描述](https://img-blog.csdnimg.cn/c32bac85acd34936ac0ad43f8f07665a.jpeg#pic_center) -![在这里插入图片描述](https://img-blog.csdnimg.cn/82e9be96928e414d9c2bc910265540fe.jpeg#pic_center) - - -- >在docker->acs下: - -```java -cd /etc/nginx - sudo mkdir cert - cd cert - sudo vim acapp.key - 点击i进入编辑模式,shift + insert粘贴 - esc退出编辑模式,:wq保存并退出 - - sudo vim acapp.pem - 点击i进入编辑模式,shift + insert粘贴 - esc退出编辑模式,:wq保存并退出 -``` - -` - - - -## 7.配置nginx配置文件(重点) -### 7.1配置文件 -- 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全部改成你的用户名 - - - -```css -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; - } - } -} -``` - - -### 7.2启动并重新加载nginx - -```java -sudo /etc/init.d/nginx start -``` - -![在这里插入图片描述](https://img-blog.csdnimg.cn/9940b5b9a9184292b23448cef8652ef3.jpeg#pic_center) -### 7.3查看日志 - -```java -cd /var/log/nginx/ -sudo cat error.log -``` - - -### 7.4测试(403,405) -在浏览器中输入域名测试,若提示403 forbidden则表示成功,并测试放行端口显示405 -https://snake.mycomputer.top/api--->403 -https://snake.mycomputer.top/api/user/account/register/--->405 - - -## 8.上线前端(重点) -**修改前端请求api** -cs -- 在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文件 -- 访问域名就可以访问前端网页了! -## 9.Success!! -![在这里插入图片描述](https://img-blog.csdnimg.cn/9e7d8772835f47289119e0b1b06966d7.jpeg#pic_center) - -