项目实战——项目上线
创始人
2024-02-20 19:13:29
0

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

...backendjar...org.springframework.bootspring-boot-maven-plugincom.kob.backend.BackendApplicationrepackage

提示:打包前记得删除匹配玩家时输出的语句
打开右侧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: POODLEssl_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文件
  • 访问域名就可以访问前端网页了!

相关内容

热门资讯

伊朗外长:建议美国尊重伊朗人民... 格隆汇12月15日|伊朗外交部长阿拉格齐说,伊朗从不寻求战争,而是希望通过外交途径解决问题。伊朗现在...
原创 官... 中国主导成立国际调解院,是一件对世界和平事业有着极大推动力的大好事,该国际组织一经成立,就有不少国家...
政策利好!保险股大涨! 中国平安刷新近4年新高。 A股市场今天(12月15日)上午整体窄幅震荡,保险股大涨,成为领涨市场最主...
西甲-姆巴佩破门罗德里戈建功 ... 2025年12月15日凌晨4点,2025-2026赛季西甲联赛第16轮展开一场焦点战役,皇马前往客场...
原创 俄... 在乌克兰东部的红军城,战斗依旧如火如荼。随着俄乌冲突的深入,红军城成为了一个微缩的战场,象征着更为复...
“线上平台+线下空间”一站式护... 深圳新闻网2025年12月13日讯(深圳特区报记者 戚金城)近日,深圳市委政法委联合市前海管理局搭建...
36岁男子发现女友虚报年龄,称... 据@小莉帮忙,12月13日,河南荥阳的马先生表示,自己今年36岁了,和一位43岁的姐姐恋爱,去领证的...
主动投案,国家税务总局浙江省税... 据中央纪委国家监委驻国家税务总局纪检监察组、浙江省纪委监委消息:国家税务总局浙江省税务局原党委书记、...
澳大利亚海滩枪击事件两名枪手身... 澳大利亚邦迪海滩当地时间14日发生枪击事件,目前已造成16人死亡。15日早间,新南威尔士州警察局长在...
伊朗外长:“建议美国尊重伊朗人... 新华社德黑兰12月14日电(记者沙达提)据伊朗伊斯兰共和国通讯社14日报道,伊朗外交部长阿拉格齐说,...