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

查看nginx 进程命令

ps aux | grep server_name

1. 安装MySQL

1.1 下载压缩包

官网下载

1.2 解压

上传并解压好放在指定位置

创建soft文件夹

bash 复制代码
mkdir /soft

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

bash 复制代码
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文件夹

bash 复制代码
cd /soft/mysql-8.3.0

安装 rpm 包之前需要下载插件,mysql 里面 rpm 的安装依赖于该插件。

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

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

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

1.4 连接 MySQL

sql 复制代码
mysql -u root -p

输入密码后修改密码

sql 复制代码
 ALTER  USER  'root'@'localhost'  IDENTIFIED BY '@********';

1.5 设置可远程连接

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

sql 复制代码
use mysql
sql 复制代码
update user set host = '%' where user = 'root';

刷新权限

sql 复制代码
flush privileges; 

查询确认权限

sql 复制代码
select host,user from user;

完成退出sql

sql 复制代码
exit

2. 安装Nginx

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

一次性安装

bash 复制代码
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

分次安装

bash 复制代码
#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,如果没有安装:

bash 复制代码
yum install wget

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

bash 复制代码
wgte https://nginx.org/download/nginx-1.27.0.tar.gz

解压

bash 复制代码
tar xvf nginx-1.27.0.tar.gz
cd nginx-1.27.0

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

bash 复制代码
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

不需要https则运行下列代码

bash 复制代码
./configure 

编译和安装

bash 复制代码
make
bash 复制代码
make install

查看安装路径

bash 复制代码
whereis nginx

编辑服务文件

bash 复制代码
vim /lib/systemd/system/nginx.service
bash 复制代码
[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 加入开机自启动 ```bash systemctl enable nginx.service ``` ### 2.3 Nginx基本操作 ```bash #启动服务 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 配置 ```bash 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 ```bash server { listen 80; server_name localhost; #将请求转成https rewrite ^(.*) https://$server_name$1 permanent; } ``` ## 3. 安装nodejs ### 3.1 下载 第一种为官网下载,[官网](https://nodejs.org/en/download/) 第二种为wget下载(本文使用的方法) 创建nodejs文件夹 ```bash mkdir /soft/nodejs ``` 下载 ```bash wget https://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.gz ``` 解压 ```bash tar zxvf node-v16.18.0-linux-x64.tar.gz ``` 复制到对应文件夹 ```bash mv /soft/nodejs/node-v16.18.0-linux-x64/* /soft/nodejs/ ``` ### 3.2 建立软链接 ```bash ln -s /soft/nodejs/bin/node /usr/local/bin ln -s /soft/nodejs/bin/npm /usr/local/bin ``` ### 3.3 测试 ```bash node -v & npm -v ``` ### 3.4 安装nrm nrm(npm registry manager) 是 npm 的镜像源管理工具. 有时候国外资源太慢,使用 nrm 可以快速的在 npm 源之间切换。 ```bash npm install -g nrm ``` 配置成全局 ```bash ln -s /soft/nodejs/bin/nrm /usr/local/bin ``` 查看镜像源 ```bash nrm ls ``` 测试镜像速度 ```bash nrm test ``` 切换镜像 ```bash nrm use taobao ``` ### 3.4 全局安装webpack/webpack-cli ```bash # 全局安装webpack npm install -g webpack # 全局安装webpack-cli npm install webpack-cli -g ``` 配置成全局 ```bash ln -s /soft/nodejs/bin/webpack /usr/local/bin ln -s /soft/nodejs/bin/webpack-cli /usr/local/bin ``` 两个同时安装,才能检查到安装的版本 ```bash webpack -v ``` ### 3.5 全局安装vue-cli 查看可安装的版本 ```bash npm view vue-cli versions --json ``` 当前项目例子用2.6.\*版本指定所以选2.6.0,命令如下: ```bash npm install -g [email protected] ``` 安装默认最新版本 ```bash npm install -g vue-cli ``` ## 4. 安装NVM(个别云服务上失败,未找到原因) 一台服务器或者需要再多个nodejs切换时,可以安装nvm进行nodejs版本管理 ### 4.1 上传nvm安装包,这边使用的是0.38.0 [nvm github地址](https://github.com/nvm-sh/nvm) [nvm github版本地址](https://github.com/nvm-sh/nvm/releases) ### 4.2 下载 ```bash git clone https://github.com/nvm-sh/nvm.git .nvm ``` ### 4.3 配置环境 打开\~/.bashrc ```bash vi ~/.bashrc ``` 在\~/.bashrc的末尾,添加如下语句: ```bash 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 ``` 刷新配置 ```bash source ~/.bashrc ``` ## 5. 安装Java ### 5.1 确认是否安装了Java ```bash rpm -qa | grep java ``` ### 5.2 上传解压Java ```bash tar -zxvf jdk-8u411-linux-i586.tar.gz mkdir java mv /soft/jdk1.8.0_411/ /soft/java/ ``` ### 5.3 配置Java的环境变量 ```bash vi /etc/profile ``` 在profile中添加如下配置: ```bash export M2_HOME=/soft/apache-maven-3.9.6 export PATH=${PATH}:$JAVA_HOME/bin:$M2_HOME/bin ``` 刷新权限 ```bash source /etc/profile ``` 查看版本 ```bash mvn -v ``` ## 6. 安装maven ### 6.1 下载 [官网下载](https://maven.apache.org/download.cgi) ### 6.2 解压 ```bash tar -zxvf apache-maven-3.9.6-bin.tar.gz ``` ### 6.3 配置maven的环境变量 ```bash vi /etc/profile ``` 在profile中添加如下配置: ```bash export M2_HOME=/soft/apache-maven-3.9.6 export PATH=${PATH}:$JAVA_HOME/bin:$M2_HOME/bin ``` 刷新权限 ```bash source /etc/profile ``` 查看版本 ```bash mvn -v ``` ## 7. 安装Redis ### 7.1 下载Redis [Redis官网](https://redis.io/) [历史版本](http://download.redis.io/releases) ### 7.2 上传及解压缩 ```bash tar -zxvf redis-7.2.5.tar.gz ``` ### 7.3 编译安装 确保已经安装gcc-c++ ```bash yum install gcc-c++ ``` 进入文件夹编译 ```bash /soft/redis-7.2.5 ``` ```bash make ``` make install确认所有都安装完成 ```bash make install ``` ### 7.4 redis配置修改 默认安装路径:/usr/local/bin 进入Redis文件夹,修改redis.conf配置 ```bash # 允许访问的地址,默认是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 ```bash redis-server /soft/redis-7.2.5/redis.conf ``` 设置开机自启 ```bash vi /etc/systemd/system/redis.service ``` ```bash [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 ``` 重载系统服务 ```bash systemctl daemon-reload ``` 设置开机自启 ```bash systemctl enable redis ``` ### 7.6 redis的基本操作 ```bash # 启动 systemctl start redis # 停止 systemctl stop redis # 重启 systemctl restart redis # 查看状态 systemctl status redis ``` ## 8. 服务启动 ### 8.1 api端 编写脚本 ```bash cd /data/workspaces/autodeploy/rouyi/ vi api.sh ``` ```bash #!/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端 ```bash vi web.sh ``` ```bash 在这里插入代码片 ``` ### 8.3 修改Nginx配置(云服务器记得开放对应端口) ```bash cd /soft/nginx-1.27.0/conf/ vi nginx.conf ``` 插入下列语句(api端) ```bash 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端) ```bash ``` 重启Nginx ```bash systemctl restart nginx.service ```

相关推荐
小狗很可爱4 分钟前
将Django连接到mysql
android·mysql·django
LB_bei12 分钟前
linux安装配置rabbitmq
linux·运维·rabbitmq
笑远23 分钟前
DBA(数据库管理员)常用的 Linux 命令
linux·数据库·dba
石榴花上24 分钟前
mysql数据库中多张表导出成excel方式
数据库·mysql·excel
半方白28 分钟前
Nginx+Keepalive 实现高可用并启用健康检查模块
运维
ksk8521 小时前
vulhub靶机Billu_b0x
linux·安全
网络安全小吗喽1 小时前
靶场(十三)---小白心得&&思路分享---Levram
linux·运维·服务器·测试工具·安全·网络安全
故事与他6451 小时前
vulhub-Billu-b0x攻略
android·linux·运维·服务器·web安全·github
Do vis.5761 小时前
网络编程中客户端与服务器的搭建与协议包应用
运维·服务器·网络
四七伵1 小时前
高性能 MySQL 必备:COUNT(*)、COUNT(1)、COUNT(字段) 的选择法则
后端·mysql