【Linux】rouyiVue 项目部署全过程(含MySQL,Nginx等中间件部署)

查看nginx 进程命令
ps aux | grep server_name

1. 安装MySQL

1.1 下载压缩包

官网下载
在这里插入图片描述

1.2 解压

上传并解压好放在指定位置
创建soft文件夹

mkdir /soft

上传文件,在该目录下再创建一个mysql文件夹,将安装包解压到新文件夹中

mkdir /soft/mysql-8.3.0
tar -xvf mysql-8.3.0-1.el9.x86_64.rpm-bundle.tar -C mysql-8.3.0

1.3 安装

解压完成后,进入mysql-8.3.0文件夹

cd /soft/mysql-8.3.0

在这里插入图片描述
安装 rpm 包之前需要下载插件,mysql 里面 rpm 的安装依赖于该插件。

yum install openssl-devel # 阿里云不能升级,会出现无法远程登录
yum -y install libaio perl net-tools

安装完插件后,依次执行命令安装 rpm 包

rpm -ivh ****.rpm //每个都要执行,个别报错先无视
  • 启动 MySQL 服务:systemctl start mysqld
  • 重启 MySQL 服务:systemctl restart mysqld
  • 关闭 MySQL 服务:systemctl stop mysqld
    安装 MySQL 会自动生成一个随机密码,可在 /var/log/mysqld.log 这个文件中查找该密码
cat /var/log/mysqld.log

在这里插入图片描述

1.4 连接 MySQL

mysql -u root -p

输入密码后修改密码

 ALTER  USER  'root'@'localhost'  IDENTIFIED BY '@********';

1.5 设置可远程连接

修改root或者要可以远程连接的账号权限

use mysql
update user set host = '%' where user = 'root';

刷新权限

flush privileges; 

查询确认权限

select host,user from user;

完成退出sql

exit

2. 安装Nginx

2.1 安装必须的插件,之前安装过可跳过或者更新

一次性安装

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

分次安装

#gcc 可以编译 C,C++,Ada,Object C和Java等语言,编译依赖 gcc 环境
yum install gcc-c++ 
#pcre pcre-devel pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式
yum install -y pcre pcre-devel 
#zlib zlib-devel zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel
#ssl支持
yum install -y openssl
#openssl openssl-devel OpenSSL 是一个强大的安全套接字层密码库,密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用
yum install -y openssl-devel

2.2 推荐直接安装,不通过安装包,有特殊需求可以用.tar.gz安装包

确保系统已经安装了wget,如果没有安装:

yum install wget

下载nginx安装包,可以进官网选择不同的版本官网下载

wgte https://nginx.org/download/nginx-1.27.0.tar.gz

解压

tar xvf nginx-1.27.0.tar.gz
cd nginx-1.27.0

配置(需要https模块再配置,如不需要则跳过)

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

不需要https则运行下列代码

./configure 

编译和安装

make
make install

查看安装路径

whereis nginx

编辑服务文件

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx service
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

说明:
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
加入开机自启动

systemctl enable nginx.service

2.3 Nginx基本操作

#启动服务
systemctl start nginx.service  
#停止服务
systemctl stop nginx.service        
 #重新启动服务
systemctl restart nginx.service      
#查看所有已启动的服务
systemctl list-units --type=service    
#查看服务当前状态
systemctl status nginx.service         
 #设置开机自启动
systemctl enable nginx.service     
 # 停止开机自启动
systemctl disable nginx.service     

2.4 nginx.conf https 配置

    server {
        listen       443 ssl;
        server_name  localhost;
 		#根证书地址(默认把证书放在conf目录)
        ssl_certificate      cert.pem;
        #证书秘钥(默认把证书放在conf目录)
        ssl_certificate_key  cert.key;
 
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
 
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
    }

2.5 将 http 重定向 https

server {
    listen 80;
    server_name localhost;
    #将请求转成https
    rewrite ^(.*) https://$server_name$1 permanent;
}

3. 安装nodejs

3.1 下载

第一种为官网下载,官网
第二种为wget下载(本文使用的方法)
创建nodejs文件夹

mkdir /soft/nodejs

下载

wget https://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.gz

解压

tar zxvf node-v16.18.0-linux-x64.tar.gz

复制到对应文件夹

mv /soft/nodejs/node-v16.18.0-linux-x64/* /soft/nodejs/

3.2 建立软链接

ln -s /soft/nodejs/bin/node /usr/local/bin
ln -s /soft/nodejs/bin/npm /usr/local/bin

3.3 测试

node -v & npm -v

3.4 安装nrm

nrm(npm registry manager) 是 npm 的镜像源管理工具. 有时候国外资源太慢,使用 nrm 可以快速的在 npm 源之间切换。

npm install -g nrm

配置成全局

ln -s /soft/nodejs/bin/nrm /usr/local/bin

查看镜像源

nrm ls

测试镜像速度

nrm test

切换镜像

nrm use taobao

3.4 全局安装webpack/webpack-cli

# 全局安装webpack
npm install -g webpack 
# 全局安装webpack-cli
npm install webpack-cli -g 

配置成全局

ln -s /soft/nodejs/bin/webpack  /usr/local/bin
ln -s /soft/nodejs/bin/webpack-cli /usr/local/bin

两个同时安装,才能检查到安装的版本

webpack -v

3.5 全局安装vue-cli

查看可安装的版本

npm view vue-cli versions –json

当前项目例子用2.6.*版本指定所以选2.6.0,命令如下:

npm install -g vue-cli@2.6.0

安装默认最新版本

npm install -g vue-cli

4. 安装NVM(个别云服务上失败,未找到原因)

一台服务器或者需要再多个nodejs切换时,可以安装nvm进行nodejs版本管理

4.1 上传nvm安装包,这边使用的是0.38.0

nvm github地址
nvm github版本地址

4.2 下载

git clone https://github.com/nvm-sh/nvm.git .nvm

4.3 配置环境

打开~/.bashrc

vi ~/.bashrc

在~/.bashrc的末尾,添加如下语句:

export NVM_DIR=" /soft/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  
# This loads nvm bash_completion
# nodejs下载更换淘宝镜像
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

刷新配置

source ~/.bashrc

5. 安装Java

5.1 确认是否安装了Java

rpm -qa | grep java

5.2 上传解压Java

tar -zxvf jdk-8u411-linux-i586.tar.gz 
mkdir java	
mv /soft/jdk1.8.0_411/ /soft/java/

5.3 配置Java的环境变量

vi /etc/profile

在profile中添加如下配置:

export M2_HOME=/soft/apache-maven-3.9.6
export PATH=${PATH}:$JAVA_HOME/bin:$M2_HOME/bin

刷新权限

source /etc/profile

查看版本

mvn -v

6. 安装maven

6.1 下载

官网下载

6.2 解压

tar -zxvf apache-maven-3.9.6-bin.tar.gz

6.3 配置maven的环境变量

vi /etc/profile

在profile中添加如下配置:

export M2_HOME=/soft/apache-maven-3.9.6
export PATH=${PATH}:$JAVA_HOME/bin:$M2_HOME/bin

刷新权限

source /etc/profile

查看版本

mvn -v

7. 安装Redis

7.1 下载Redis

Redis官网
历史版本

7.2 上传及解压缩

tar -zxvf redis-7.2.5.tar.gz

7.3 编译安装

确保已经安装gcc-c++

yum install gcc-c++

进入文件夹编译

/soft/redis-7.2.5
make

make install确认所有都安装完成

make install

7.4 redis配置修改

默认安装路径:/usr/local/bin
进入Redis文件夹,修改redis.conf配置

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123321
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

7.5 启动redis

redis-server /soft/redis-7.2.5/redis.conf

设置开机自启

vi /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /soft/redis-7.2.5/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重载系统服务

systemctl daemon-reload

设置开机自启

systemctl enable redis

7.6 redis的基本操作

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

8. 服务启动

8.1 api端

编写脚本

cd /data/workspaces/autodeploy/rouyi/
vi api.sh
#!/bin/bash
export build_folder=/data/workspaces/code/rouyi/databaseSync
export deploy_folder=/data/workspaces/deploy/rouyi
export jar_name=ruoyi-admin.jar
export AppName=ruoyi-admin 
export port=18800
export active=druid
export logpath=/data/workspaces/log
export encryptionSwitch=true
export debugParam="-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18000"
function stop()
{
    echo "停止服务!!!"

        PID=""
        query(){
                PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
                #PID=`ps -ef |grep $AppName|awk '{print $2}'`
        }
        query
        if [ x"$PID" != x"" ]; then
                kill -TERM $PID
                echo "停止服务 (pid:$PID) 开始..."
                while [ x"$PID" != x"" ]
                do
                        echo "杀死服务$PID"
                        kill -9 $PID
                        query
                done
                echo "服务已停止"
        else
                echo "$AppName already stopped."
        fi
}
function appStatus()
{
    echo "检查服务状态!!!"

        PID=""
        query(){
                PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
                #PID=`ps -ef |grep $AppName|awk '{print $2}'`
        }
        query
        if [ x"$PID" != x"" ]; then
                echo "服务 (pid:$PID) 已启动..."
        else
                echo "服务启动失败。。。"
        fi
}

cd $build_folder
echo '拉取GIT最新代码'
git pull origin master
mvn clean package -f $build_folder
mvn_result=$?
if [[ $mvn_result = '0' ]] ; then
        echo '停止服务'
        #curl -XPOST http://127.0.0.1:$port/actuator/shutdown
        #screen -x -R $screenName -p 0 -X stuff "echo -e \003\n"
        stop
        #echo '休眠5秒'
        #sleep 5s

        echo '部署代码'
        cp $build_folder/ruoyi-admin/target/$jar_name $deploy_folder/

        #echo '后台启动服务'
        nohup java -DencryptionSwitch=$encryptionSwitch -Xdebug  -jar $deploy_folder/$jar_name  --spring.profiles.active=$active --log.path=$logpath   --server.port=$port  > /data/workspaces/log/log.log 2>&1 &
        #nohup java -DencryptionSwitch=$encryptionSwitch $debugParam  -jar $deploy_folder/$jar_name  --spring.profiles.active=$active --log.path=$logpath   --server.port=$port  > /data/workspaces/log/log.log 2>&1 &
        #nohup java -DencryptionSwitch=$encryptionSwitch $debugParam  -jar $deploy_folder/$jar_name  --spring.profiles.active=uat --log.path=/data/web/logs  --server.port=$port  > app.log 2>&1 &
        echo "Start $AppName success..."
        echo '休眠5秒后检查服务'
        sleep 5s
        appStatus
        #tail -fn 100 /data/web/logs/fms-info.log
        #screen -x -R $screenName -p 0 -X stuff "cd $deploy_folder\n"
        #screen -x -R $screenName -p 0 -X stuff "java -jar $jar_name --spring.profiles.active=prodhc --server.port=$port\n"
fi

8.2 web端

vi web.sh
在这里插入代码片

8.3 修改Nginx配置(云服务器记得开放对应端口)

 cd /soft/nginx-1.27.0/conf/
 vi nginx.conf

插入下列语句(api端)

location /admin-api/ {
        proxy_pass http://127.0.0.1:18800;
        proxy_set_header Host $host;
        proxy_set_header Remote_Addr $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size    100m;
 }

插入下列语句(web端)


重启Nginx

systemctl restart nginx.service
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值