项目实战——项目上线

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登录服务器

ssh root@IP地址
输入密码: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 命令
# 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

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:

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所有命令都要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 中加入:

backend/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...

    <artifactId>backend</artifactId>
    <packaging>jar</packaging>

    ...

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--这里写上main方法所在类的路径-->
                <configuration>
                    <mainClass>com.kob.backend.BackendApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

提示:打包前记得删除匹配玩家时输出的语句
打开右侧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

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

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;
        }
    }
}

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文件
  • 访问域名就可以访问前端网页了!
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值