偌依 项目部署及上线步骤

准备实验环境,准备3台机器

1.作为前端服务器,mysql,redis服务器--同时临时作为代码打包服务器
192.168.2.65 nginx-server

2.作为后端服务器

192.168.2.66 java-server-1
192.168.2.67 java-server-2

安装nginx/mysql

bash 复制代码
#安装nginx
[root@web-nginx ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@web-nginx ~]# yum install -y nginx

#安装mysql5.7
[root@nginx-server ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@nginx-server ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm 
[root@nginx-server ~]# vim /etc/yum.repos.d/mysql-community.repo 
将mysql8.0关闭将mysql5.7开启
enabled=1
gpgcheck=0
[root@nginx-server ~]# yum install -y mysql-community-server
[root@nginx-server ~]# systemctl start mysqld
[root@nginx-server ~]# grep pass /var/log/mysqld.log 
[root@nginx-server ~]# mysqladmin -uroot -p'HdV>.f>Ir8;h' password 'QingFeng@123!'
[root@nginx-server ~]# mysql -uroot -p'QingFeng@123!'
#创建数据库ry
mysql> create database ry character set utf8 collate  utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

#设置root允许远程登录
mysql> update mysql.user set host = '%' where user = 'root';
Query OK, 1 row affected (0.10 sec)
Rows matched: 1  Changed: 1  Warnings: 0
#刷新权限
mysql> flush privileges;
#退出
mysql> \q

安装redis

bash 复制代码
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/redis-4.0.9.tar.gz
[root@nginx-server ~]# tar xzvf redis-4.0.9.tar.gz -C /usr/local/
[root@nginx-server ~]# mv /usr/local/redis-4.0.9 /usr/local/redis
[root@nginx-server ~]# yum install -y gcc make
[root@nginx-server ~]# cd /usr/local/redis
[root@nginx-server redis]# make
[root@nginx-server redis]# cp /usr/local/redis/redis.conf /usr/local/redis/redis.conf.bak
[root@nginx-server redis]# vim redis.conf 
bind 192.168.198.160  #只监听内网IP
daemonize yes     #开启后台模式将on改为yes
port 6379                      #端口号

#启动redis, 放后台运行
[root@nginx-server redis]# src/redis-server redis.conf &
#查看端口有没有起来
[root@nginx-server redis]# netstat -lntp | egrep '3306|6379'

前后端打包环境并打包

bash 复制代码
安装后端打包工具
#安装jdk
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/jdk-8u271-linux-x64.tar.gz
[root@nginx-server ~]# tar zxvf jdk-11.0.20_linux-x64_bin.tar.gz -C /usr/local
[root@nginx-server ~]# mv /usr/local/jdk-11.0.20 /usr/local/java
[root@nginx-server ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
[root@nginx-server ~]# source /etc/profile
[root@nginx-server ~]# java -version

#下载maven包
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/apache-maven-3.9.6-bin.tar.gz
[root@nginx-server ~]# tar zxvf apache-maven-3.9.6-bin.tar.gz -C /usr/local
[root@nginx-server ~]# mv /usr/local/apache-maven-3.9.6 /usr/local/maven
#设置环境变量
[root@nginx-server ~]# vim /etc/profile
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_HOME PATH
[root@nginx-server ~]# source /etc/profile
#检测maven是否安装成功
[root@nginx-server ~]# mvn -version

#安装node.js前端打包工具命令npm
[root@nginx-server ~]# wget https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz
[root@nginx-server ~]# tar xf node-v12.18.4-linux-x64.tar.xz -C /usr/local/
[root@nginx-server ~]# mv /usr/local/node-v12.18.4-linux-x64 /usr/local/node
#设置变量
[root@nginx-server ~]# vim /etc/profile
NODE_HOME=/usr/local/node
PATH=$NODE_HOME/bin:$PATH
export NODE_HOME PATH
[root@nginx-server ~]# source /etc/profile
#查看版本
[root@nginx-server ~]# node --version

#下载偌依代码包,也可以下载git仓库拉取代码包
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/RuoYi-Vue-master.zip
[root@nginx-server ~]# yum -y install unzip
[root@nginx-server ~]# unzip RuoYi-Vue-master.zip
[root@nginx-server ~]# cd RuoYi-Vue-master/
[root@nginx-server RuoYi-Vue-master]# cd RuoYi-Vue
[root@nginx-server RuoYi-Vue]# cd ruoyi-admin/src/main/resources/
编辑代码配置文件修改数据库与redis连接地址
1.修改redis
[root@nginx-server resources]# vim application.yml
# redis 配置
  redis:
    # 地址
    host: 192.168.2.65	#需修改
    # 端口,默认为6379
    port: 6379
    # 密码
    password:
2.修改mysql
[root@nginx-server resources]# vim application-druid.yml
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://192.168.2.65:3306/(ry)?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull(&useSSL=false&)serverTimezone=GMT%2B8
                username: root
                password: QianFeng@123!
#另外打括号的地方是需修改的地方
`ry 是数据库的名字,需要和数据库名字一致`
&useSSL=false& 改成取消加密
同时注意数据库连接这里是否启动加密连接,如果启用了加密连接有可能会造成代码与数据库连接不上。修改为:
&useSSL=false&

打包前端代码

bash 复制代码
[root@nginx-server ~]# cd RuoYi-Vue-master/ruoyi-ui/
#替换为国内淘宝镜像源
[root@nginx-server ruoyi-ui]# npm install --unsafe-perm --registry=https://registry.npm.taobao.org
#正式环境打包前端代码
[root@nginx-server ruoyi-ui]# npm run build:prod

构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 xxx.js 、xxx.css、index.html 等静态文件。

通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。
[root@nginx-server ruoyi-ui]# ls
babel.config.js  build  node_modules  package-lock.json  README.md  vue.config.js
bin              dist   package.json  public             src
[root@nginx-server ruoyi-ui]# cd dist/
[root@nginx-server dist]# ls   ----前端代码完成
favicon.ico  index.html  robots.txt  static

打包后端代码

bash 复制代码
[root@nginx-server ~]# cd RuoYi-Vue-master/
[root@nginx-server RuoYi-Vue-master]# cd sql/
[root@nginx-server sql]# ls
quartz.sql  ry_20200920.sql
#导入数据给创建的数据库里面
[root@nginx-server sql]# mysql -uroot -p'QianFeng@123!' ry < quartz.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@nginx-server sql]# mysql -uroot -p'QianFeng@123!' ry < ry_20200920.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

#开始后端打包jar包
[root@nginx-server ~]# cd RuoYi-Vue-master/
[root@nginx-server RuoYi-Vue-master]# mvn package  ---后端打包命令 ----时间较长
#然后会在项目下生成 target文件夹包含 war 或jar (多模块生成在ruoyi-admin)
[root@nginx-server RuoYi-Vue-master]# cd ruoyi-admin/
[root@nginx-server ruoyi-admin]# ls
pom.xml  src  target
[root@nginx-server target]# ls
classes  generated-sources  maven-archiver  maven-status  ruoyi-admin.jar  ruoyi-admin.jar.original

准备后端java服务

bash 复制代码
两台机器修改主机名
# hostnamectl set-hostname java-server
关闭防火墙和selinux
[root@java-server ~]# systemctl stop firewalld
[root@java-server ~]# setenforce 0
两台机器上传idk
[root@java-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/jdk-8u271-linux-x64.tar.gz
[root@java-server ~]# tar zxvf jdk-8u271-linux-x64.tar.gz -C /usr/local
[root@java-server ~]# mv /usr/local/jdk1.8.0_271 /usr/local/java
#设置环境变量
[root@java-server ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
[root@java-server ~]# source /etc/profile
查看版本信息
[root@java-server ~]# java -version

后端机器上都创建
#创建工作目录以及代码上线目录
[root@java-server ~]# mkdir /application/java-server -p

开始上线服务

bash 复制代码
1.将前端代码放到nginx网站发布目录并启动
[root@nginx-server ~]# cd /usr/share/nginx/html/
[root@nginx-server html]# rm -rf *
#拷贝dist目录下所有文件到到当前目录
[root@nginx-server html]# cp -r /mnt/ruoyi-ui/dist/* .
[root@nginx-server html]# ls #将所有前端代码放到nginx的网站发布目录中
favicon.ico  index.html  robots.txt  static
[root@nginx-server html]# systemctl start nginx

后端服务上线

bash 复制代码
#后端机器都操作
1.将打包好的后端jar包上传到两台后端服务器中
[root@nginx-server ~]# cd RuoYi-Vue-master/ruoyi-admin/target/
[root@nginx-server target]# scp ruoyi-admin.jar 192.168.2.66:/root/
2.开始上线后端--两台机器相同操作
[root@java-server ~]# cp ruoyi-admin.jar /application/java-server/
[root@java-server ~]# cd /application/java-server/
[root@java-server java-server]# nohup java -jar -server -Xmx1024m -Xms1024m ruoyi-admin.jar &
[1] 1212
[root@java-server java-server]# tail -f nohup.out   查看日志
查看服务端口
[root@java-server java-server]# netstat -lntp 

配置反向代理

bash 复制代码
配置nginx路径转发与负载均衡
[root@nginx-server ~]# cd /etc/nginx/conf.d/
[root@nginx-server conf.d]# mv default.conf nginx.conf
[root@nginx-server conf.d]# vim upstream.conf
upstream java-web {
        server 192.168.198.162:8080 weight=1 max_fails=2 fail_timeout=5s;
        server 192.168.198.163:8080 weight=1 max_fails=2 fail_timeout=5s;
}

[root@nginx-server conf.d]# vim app.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
    }

    location /prod-api/{
      proxy_pass http://java-web/;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }

}

[root@nginx-server conf.d]# nginx -t 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx-server conf.d]# nginx -s reload

#解释:
try_files指令:可以实现自动检测网站根下是否存在用户在浏览器输入的名为URI文件和名为URI的目录,
当用户请求 http://localhost/example 时,这里的 $uri 就是 /example。 
try_file 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $root 是项目代码安装目录)的文件,就直接把这个文件的内容发送给用户。 
如果目录中没有叫 example 的文件。然后就看 $uri/,增加了一个 /,也就是看有没有名为/$root/example/ 的目录。 
若不存在则会跳转至最后一个参数,这以上例子中最后一个参数是根下的/index.html,也就是相当于 nginx 发起一个 HTTP 请求到 http://localhost/index.html
相关推荐
2301_7679026411 小时前
Ansible 自动化运维入门到实战
运维·自动化·ansible
一条懒鱼66612 小时前
Jenkins 2.528.3 与 GitLab 深度集成:实现自动构建
servlet·gitlab·jenkins
忍冬行者14 小时前
通过ansible分发免密公钥、清理不再使用的公钥及验证公钥状态
linux·服务器·ansible
Lynnxiaowen15 小时前
今天我们利用Jenkins插件调用ansible
linux·运维·ansible·jenkins
爱宇阳2 天前
在 Docker 环境中为 GitLab 实例配置邮件服务器
java·docker·gitlab
爱宇阳2 天前
使用 Docker 容器备份 GitLab 实例教程
docker·容器·gitlab
爱宇阳2 天前
使用 Docker 容器备份与 Docker Compose 升级 GitLab 实例教程
docker·eureka·gitlab
linweidong3 天前
顺丰运维面试题及参考答案
运维·nginx·容器·ansible·运维开发·防火墙·python面试
不想画图4 天前
Ansible自动化运维工具及基础用法
运维·自动化·ansible
初学者_xuan4 天前
Git&GitLab安装gitlab(rocky系统)
git·gitlab