方案一
一、方案简介
一台nginx服务,主要负责主入口分发
两台应用服务器:
1.服务器一部署-nginx、前端应用、后端应用
2.服务器二部署-nginx、两个后端服务器
一台数据库服务器:mysql、redis
本文档以ruoyi前后端分离项目为准
注意:
- vim编辑命令操作
vim 四种模式
vim 文件 处于正常模式
在正常模式下输入:i I a A等键,进入插入模式,可以进行文档修改,按esc键退出插入模式返回正常模式
在正常模式下按:(英文冒号)或/,进入命令模式
常用命令:q(退出) q!(强制退出,不保存) w(保存) wq(保存并退出)- 修改profile环境变量时,切记能复制就复制,不要手写,可能存在系统崩溃的风险
二、软件安装
1.nginx安装
- 环境准备
- 下载地址:
- https://nginx.org/en/download.html
- https://nginx.org/download/nginx-1.18.0.tar.gz
- 安装vim、make、ifconfig等工具:
yum install -y vim make net-tools wget
- 安装依赖:
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
- 关闭selinux(阿里云默认关闭):
- 进入目录:
cd /etc/selinux
- 编辑文件:
vim config
- 设置文档:
SELINUX=disabled
- 编译修改文件或重启系统
- 安装步骤
- 将下载好的文件传入到指定文件夹(直接使用wget下载)
cd /home/packages wget https://nginx.org/download/nginx-1.18.0.tar.gz
- 进入该文件夹下并解压:
- 进入目录:
cd /home/packages
–没有目录需要创建:mkdir packages
- 解压文件:
tar -zxvf nginx-1.18.0.tar.gz
- 进入解压后的文件夹:
cd /home/packages/nginx-1.18.0/
- 隐藏nginx信息:
- 进入目录:
cd /home/packages/nginx-1.18.0/src/core/
- 找到文件:
nginx.h
- 编辑文件:
vim nginx.h
#define NGINX_VERSION "" -- 隐藏版本号 #define NGINX_VER "" NGINX_VERSION -- 隐藏服务名 ... #define NGINX_VAR "" --
- 返回目录: cd /home/packages/nginx-1.18.0/
- 配置nginx:./configure --prefix=/home/nginx [–with-http_ssl_module 支持HTTPS协议]
./configure --prefix=/home/nginx --with-http_ssl_module 出现如下显示说明配置成功 Configuration summary + using system PCRE library + OpenSSL library is not used + using system zlib library ...
- 编译安装: make && make install
- 进入目录: cd /home/nginx
- 查看文件: ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
- 执行启动命令: ./sbin/nginx
- 验证是否安装成功
ps -ef | grep nginxroot 155361 1 0 Jul14 ? 00:00:00 nginx: master process ./nginx nobody 235997 155361 0 09:18 ? 00:00:00 nginx: worker process root 236900 236148 0 13:57 pts/1 00:00:00 grep --color=auto nginx
- 重启
- 注册服务
- 进入目录: cd /lib/systemd/system/
- 创建文件: vim nginx.service
- 复制以下内容并保存退出:
[Unit] ## 描述 Description=nginx - high performance web server ## 文档地址 Documentation=http://nginx.org/en/docs/ After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ## nginx.pid位置,一般在logs下,可不写 PIDFile=/home/nginx/logs/nginx.pid ## 启动前的准备 ExecStartPre=/home/nginx/sbin/nginx -t -c /home/nginx/conf/nginx.conf ## nginx启动命令 ExecStart=/home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf ## nginx重启 ExecReload=/bin/kill -s HUP $MAINPID ## nginx停止 ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
- 执行命令:
systemctl daemon-reload
- nginx命令:
在执行前请确认nginx是否启动 ps -ef | grep nginx root 155361[进程号] 1 0 Jul14 ? 00:00:00 nginx: master process ./nginx nobody 235997[进程号] 155361 0 09:18 ? 00:00:00 nginx: worker process root 236900 236148 0 13:57 pts/1 00:00:00 grep --color=auto nginx 需要杀死进程 # kill -9 进程号 kill -9 155361 235997 systemctl start nginx.service systemctl restart nginx.service systemctl stop nginx.service
- 加入开机自启:
systemctl enable nginx.service # 出现该行证明成功 # Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
2.mysql安装
- 安装步骤
进入
home
目录,创建packages
目录cd /home mkdir packages cd packages
下载repo文件
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
进行repo安装
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
安装mysql服务
yum install mysql-server -y --nogpgcheck
启动mysql服务
systemctl start mysqld
配置mysql服务开机自启
systemctl enable mysqld
- 配置mysql
查看mysql临时密码(mysql8.* 密码默认为空,直接回车即可)
grep 'temporary password' /var/log/mysqld.log # 2022-08-18T13:29:02.125493Z 1 [Note] A temporary password is generated for root@localhost: q1ezp=/yzh_O 注意:不要放过任何特殊字符
使用命令进入mysql控制台
mysql -uroot -p
登陆成功后先修改密码(mysql7和mysql8修改密码方式不一样)
mysql7 修改密码方式
1.首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可:set global validate_password_policy=LOW;
2.当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可:
set global validate_password_length=6;
注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,只要设置 密码的长度小于 3 ,都将自动设值为 4。
3.修改密码(mysql8直接执行此步骤即可)ALTER USER '[用户名]'@'[主机地址]' IDENTIFIED BY '[密码]'; 示例: ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
4.开启远程访问
方式一:use mysql; select host,user from user; update user set host='%' where user='root';
方式二:
grant all privileges on 数据库名.表名 to 创建的用户名(root)@"%" identified by "密码"; 示例: grant all privileges on *.* to "root"@"%" identified by "123456";
5.最后刷新一下:
flush privileges;
3.redis安装
- 安装步骤
1.使用yum源安装
yum install -y redis
2.配置redis
打开redis配置文件 vim /etc/redis.conf 必须在显示模式 开启行号显示 :set number 搜索 /bind 按键盘I键进入编辑模式 # 注释第61行,开启远程链接,也可以绑定IP地址,禁止其他访问,绑定多个IP地址 跟空格即可 # bind 127.0.0.1 bind 127.0.0.1 192.168.0.1 修改128行 开启redis进程守护 daemonize yes 修改480行,开启密码登陆 requirepass 123456 注意:密码强度要高 按esc返回显示模式 输入:wq + enter 保存退出
- 开启redis服务
systemctl start redis
- 开启开机自启动
systemctl enable redis
4.jdk安装
- 下载地址
https://www.oracle.com/java/technologies/downloads/
https://talktu.top/downloadFile/jdk-8u341-linux-x64.tar.gz
- 安装步骤
进入
packages
文件夹:cd /home/packages
下载下来的安装包上传到指定文件夹下
使用xftp 上传下载的文件到指定文件夹(这里上传至/home/packages
)解压文件:
tar -zxvf jdk-8u341-linux-x64.tar.gz
移动文件夹至home文件夹下:
mv jdk1.8.0_341/ ../
- 配置环境变量
- 使用命令打开
profile
文件vim /etc/profile
- 在配置文件的最下面加入配置信息
# java environment export JAVA_HOME=/home/jdk1.8.0_341 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin
- 执行命令让环境变量生效
source /etc/profile
或./etc/profile
4. 检查是否配置成功java -version java version "1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
5.maven安装(项目打包)
- 下载地址
https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
- 安装步骤
- 进入
packages
文件夹cd /home/packages
- 使用
wget
下载安装包wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
- 使用tar命令解压文件
tar -zxvf apache-maven-3.8.6-bin.tar.gz
- 将文件夹移动至home目录下
mv apache-maven-3.8.6 ../
- 环境变量配置
- 使用命令打开
profile
文件vim /etc/profile
- 在配置文件的最下面加入配置信息
# maven environment export MAVEN_HOME=/home/apache-maven-3.8.6 export PATH=${PATH}:${MAVEN_HOME}/bin
- 执行命令让环境变量生效
source /etc/profile
或./etc/profile
- 检查是否配置成功
mvn -version Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63) Maven home: /home/apache-maven-3.8.6 Java version: 1.8.0_341, vendor: Oracle Corporation, runtime: /home/jdk1.8.0_341/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.18.0-348.20.1.an8_5.x86_64", arch: "amd64", >family: "unix"
- 使用maven打包(建议使用Windows电脑下载idea进行项目打包)
写在前面: 一定要修改
数据库,redis
等配置文件后上传,或者上传后使用vim
命令修改
- 将项目上传至指定目录
使用xftp上传至指定目录(这里将ruoyi上传至/home/programs
),没有programs文件夹,需要新建- 使用命令进入项目
RuoYi-Vue-master
cd /home/programs/RuoYi-Vue-master
- 使用maven命令进行后端项目打包(如果中途卡住,ctrl+C停止后重试该命令)
mvn clean package -DskipTests [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for ruoyi 3.8.3: [INFO] [INFO] ruoyi .............................................. SUCCESS [ 0.114 s] [INFO] ruoyi-common ....................................... SUCCESS [ 13.553 s] [INFO] ruoyi-system ....................................... SUCCESS [ 0.455 s] [INFO] ruoyi-framework .................................... SUCCESS [ 2.854 s] [INFO] ruoyi-quartz ....................................... SUCCESS [ 0.192 s] [INFO] ruoyi-generator .................................... SUCCESS [ 0.268 s] [INFO] ruoyi-admin ........................................ SUCCESS [ 13.529 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 33.692 s [INFO] Finished at: 2022-08-20T13:52:22+08:00 [INFO] ------------------------------------------------------------------------
- 打包后的文件地址(*表示项目名)
/home/programs/RuoYi-Vue-master/ruoyi-admin/target/*.jar
6.node.js安装(项目打包)
- 下载地址
https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz
- 安装步骤
- 进入
packages
文件夹cd /home/packages
- 使用
wget
下载安装包wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz
- 使用tar命令解压文件
tar xf node-v16.17.0-linux-x64.tar.xz
- 将文件夹移动至home目录下
mv node-v16.17.0-linux-x64 ../
- 环境变量配置
- 使用命令打开
profile
文件vim /etc/profile
- 在配置文件的最下面加入配置信息
# node environment export NODE_HOME=/home/node-v16.17.0-linux-x64 export PATH=${PATH}:${NODE_HOME}/bin
- 执行命令让环境变量生效
source /etc/profile
或./etc/profile
- 检查是否配置成功
node -v v16.17.0 npm -v 8.15.0
- 使用node打包(建议使用Windows电脑下载idea进行项目打包)
- 进入
ruoyi-ui
目录cd /home/programs/RuoYi-Vue-master/ruoyi-ui
执行
npm install
命令,下载环境npm install --registry=https://registry.npmmirror.com added 1600 packages in 45s npm notice npm notice New minor version of npm available! 8.15.0 -> 8.18.0 npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.18.0 npm notice Run npm install -g npm@8.18.0 to update! npm notice
- npm打包项目
npm run build:prod Images and other types of assets omitted. DONE Build complete. The dist directory is ready to be deployed. INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html
- 将生成的文件夹
dist
修改名称并移动至前端项目目录mv dist ruoyi-ui mv ruoyi-ui /home/nginx/html/
node 打包完成
四、系统配置
1.nginx服务器配置
upstream prod-api {
# 服务器一内网地址
server 127.0.0.1;
# 服务器二内网地址
server 127.0.0.1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /prod-api {
proxy_pass http://prod-api;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
# 服务器一内网地址
proxy_pass http://127.0.0.1;
}
}
服务器一 nginx配置
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
# 后端项目访问
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 本地项目地址:端口号
proxy_pass http://localhost:8080/;
}
# vue2前端静态资源文件
location / {
# 前端项目存放地址 /home/nginx/html/ruoyi-ui
root /home/nginx/html/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# ---------vue3需要的配置
location @router {
rewrite ^.*$ /index.html last;
}
location / {
alias /home/nginx/html/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# ---------vue3需要增加的配置 end
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
服务器二 nginx配置
upstream prod-api {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
# 后端项目访问
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://prod-api/;
}
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}