• 项目实战——项目上线


    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、测试

    七、上线前端


    一、AC终端操

    1、ssh登录服务器

    1. ssh root@IP地址
    2. 输入密码:XXXX

    如报错:则执行:   rm .ssh/known_hosts 删除原有的 ssh 信息

    2、创建新用户

    linux 命令列出用户:

    cat /etc/passwd |cut -f 1 -d:

     

    一般来说,最下面这几个就是你自己创建过的用户 

     下面给出几个常见命令:

    • 创建用户: adduser 用户
    • 设置用户密码: passwd 用户,然后输入密码即可
    • 验证、查看用户:cat /etc/passwd |cut -f 1 -d:

    3、分配用户 sudo 权限

    sudo给用户提供了一种机制,可以在不分享 root 用户密码情况下,为您信任的用户提供管理权限

    1. cd /etc/sudoers
    2. chmod u+w sudoers
    3. vim /etc/sudoers
    4. 找到 root ALL=(ALL) ALL
    5. username ALL=(ALL) ALL
    6. 配置免密使用 sudo 命令
    1. # User privilege specification
    2. root ALL=(ALL:ALL) ALL
    3. # Members of the admin group may gain root privileges
    4. %admin ALL=(ALL) ALL
    5. # Allow members of group sudo to execute any command
    6. %sudo ALL=(ALL:ALL) ALL
    7. #下面的user是你的用户名 添加这一行就能免密sudo了
    8. user ALL=(ALL:ALL) NOPASSWD: ALL

    如何查看当前用户是否具有 sudo 权限?

    sudo cat/etc/sudoers

    4、配置免密登录(SSH)

    1. 生成密钥: ssh-copy-id myserver
    2. 回车输入密码,将 .ssh/id_rsa.pub 的内容传到服务器 ./ssh/authorizes_keys,如果没有则通过 ssh - kygen 生成
    3. 输入命令:ssh myserver1

    5、传递祖传文件给服务器

    scp .bashrc .vimrc .tmux.conf myserver1

     6、安装软件(tmux,docker)

    更新软件列表:

    sudo yum update
    

    安装tmux:

    1. sudo yum update
    2. 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所有命令都要sudo

    • 7.ctrl + d返回acwing服务器,再次通过ssh命令进入自己服务器,此时docker可以正常使用了。执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo权限。

    二、Git Bash 配置

    1、ssh 免密登录

    • 本地创建密钥,如果以前创建过密钥,跳过此步:ssh-keygen(本地执行过一次ssh-keygen)

    • 自动配置服务器密钥:ssh-copy-id myserver

    • 输入云服务上的密码即可。

    • 测试:登录云服务器:ssh myserver1

    三、配置 Docker 环境

    1、加载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

    最终我们的程序是部署在容器中的,因为可以便于我们迁移,当我们要换服务器时,我们就把容器压缩包上传到新的docker即可

    此时这个容器才是我们的开发环境,我们还需添加用户、给用户添加sudo权限。

    2、给容器创建用户

    • 添加用户:adduser 用户名,输入两次密码,五次回车,输入Y
    • 添加sudo权限:usermod -aG sudo 用户名
    • 通过命令ctrl + p + ctrl + q挂载容器,注意不是ctrl d(关闭容器)
    • 去腾讯云,开放端口80,443,20000端口

    3、配置docker中的acs

    1、vim config:

    Host 别名
    HostName ip
    User 用户名
    Port 20000

    2、免密登录 ssh-copy-id 别名

    3、ssh 别名

    4、Git Bash 配置免密登录 docker

    1、vim config:

    Host 别名
    HostName ip
    User 用户名
    Port 20000

    2、免密登录 ssh-copy-id 别名

    3、ssh 别名

    5、祖传文件传到 docker 中

    scp .bashrc .vimrc .tmux.conf myserver1_docker1:

    四、配置部署环境

    进入 docker:

    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
      • 创建成功

    2、安装jdk

    • 命令:sudo apt-get install openjdk-8-jdk
    • 测试:java -version

    五、上线后端

    1、统一api格式

    • 将GetRanklistController、GetRecordListController、InfoController、GetListController的GetMapping中的地址前加上/api
    • 将LoginController、RegisterController、AddController、RemoveController、UpdateController的PostMapping中的地址前加上/api

    2、修改网关

    • .antMatchers(“/api/user/account/token/”, “/api/user/account/register/”).permitAll()

    3、 打包项目

    以 backend 为例:在pom.xml 中加入:

    1. backend/pom.xml
    2. "1.0" encoding="UTF-8"?>
    3. <project xmlns="http://maven.apache.org/POM/4.0.0"
    4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    6. ...
    7. <artifactId>backendartifactId>
    8. <packaging>jarpackaging>
    9. ...
    10. <build>
    11. <plugins>
    12. <plugin>
    13. <groupId>org.springframework.bootgroupId>
    14. <artifactId>spring-boot-maven-pluginartifactId>
    15. <configuration>
    16. <mainClass>com.kob.backend.BackendApplicationmainClass>
    17. configuration>
    18. <executions>
    19. <execution>
    20. <goals>
    21. <goal>repackagegoal>
    22. goals>
    23. execution>
    24. executions>
    25. plugin>
    26. plugins>
    27. build>
    28. project>

    提示:打包前记得删除匹配玩家时输出的语句
    打开右侧Maven,点开backendcloud -> 生命周期 -> 双击clean -> 双击package

    用本地终端,传给docker下的acs:

    1. scp backend-0.0.1-SNAPSHOT.jar myserver1_docker1:
    2. scp botrunningsystem-0.0.1-SNAPSHOT.jar myserver1_docker1:
    3. scp matchingsystem-0.0.1-SNAPSHOT.jar myserver1_docker1:

    登录Docker下的acs:

    1. cd ~
    2. mkdir kob
    3. cd kob
    4. mkdir backendcloud
    5. mkdir web
    6. mkdir acapp
    7. cd backendcloud
    8. mv ~/*.jar .

     运行后端:

    1. java -jar backend-0.0.1-SNAPSHOT.jar
    2. java -jar matchingsystem-0.0.1-SNAPSHOT.jar
    3. java -jar botrunningsystem-0.0.1-SNAPSHOT.jar

    六、配置nginx

    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全部改成你的用户名

    1. user www-data;
    2. worker_processes auto;
    3. pid /run/nginx.pid;
    4. include /etc/nginx/modules-enabled/*.conf;
    5. events {
    6. worker_connections 768;
    7. # multi_accept on;
    8. }
    9. http {
    10. sendfile on;
    11. tcp_nopush on;
    12. tcp_nodelay on;
    13. keepalive_timeout 65;
    14. types_hash_max_size 2048;
    15. include /etc/nginx/mime.types;
    16. default_type application/octet-stream;
    17. ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    18. ssl_prefer_server_ciphers on;
    19. access_log /var/log/nginx/access.log;
    20. error_log /var/log/nginx/error.log;
    21. gzip on;
    22. include /etc/nginx/conf.d/*.conf;
    23. include /etc/nginx/sites-enabled/*;
    24. server {
    25. listen 80;
    26. server_name XXXXXXXXXX替换app2703.acapp.acwing.com.cn;
    27. rewrite ^(.*)$ https://${server_name}$1 permanent;
    28. }
    29. server {
    30. listen 443 ssl;
    31. server_name XXXXXXXXXX替换app2703.acapp.acwing.com.cn;
    32. ssl_certificate cert/acapp.pem;
    33. ssl_certificate_key cert/acapp.key;
    34. ssl_session_timeout 5m;
    35. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    36. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    37. ssl_prefer_server_ciphers on;
    38. charset utf-8;
    39. access_log /var/log/nginx/access.log;
    40. error_log /var/log/nginx/error.log;
    41. client_max_body_size 10M;
    42. location /api {
    43. proxy_pass http://127.0.0.1:3000;
    44. proxy_set_header X-Real-IP $remote_addr;
    45. proxy_set_header Host $http_host;
    46. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    47. }
    48. location /websocket {
    49. proxy_pass http://127.0.0.1:3000;
    50. proxy_set_header X-Real-IP $remote_addr;
    51. proxy_set_header Host $http_host;
    52. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    53. proxy_http_version 1.1;
    54. proxy_set_header Upgrade $http_upgrade;
    55. proxy_set_header Connection "upgrade";
    56. proxy_read_timeout 36000s;
    57. }
    58. location / {
    59. root /home/acs/kob/web;
    60. index index.html;
    61. try_files $uri $uri/ /index.html;
    62. }
    63. }
    64. }

    2、启动 / 加载 nginx

    sudo /etc/init.d/nginx start
    

    3、测试

    在浏览器中输入域名测试,若提示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文件
    • 访问域名就可以访问前端网页了!
  • 相关阅读:
    eladmin容器部署超详细过程
    MTO与MTS下的需求不汇总及在排产中的应用
    开源啦!JFinal论坛网,非常适合学习
    Js与Jq实战:第十讲:jQuery制作动画
    系统编程 day12 (linux ) 消息队列 的函数 与知识
    C#:winform 检查DataGridView单元格是否为空
    “蔚来杯“2022牛客暑期多校训练营2补题记录(DGHJKL)
    多线程知识点总结之温故而知新
    可视化数据科学平台在信贷领域应用系列六:自动机器学习(上篇)
    Part3_理解MATSIM_第49章 MATSim中的选择模型
  • 原文地址:https://blog.csdn.net/qq_59539549/article/details/128054160