阿里云服务器部署前后端分离项目
Posted 经理,天台风好大
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云服务器部署前后端分离项目相关的知识,希望对你有一定的参考价值。
阿里云服务器部署 【若依】 前后端分离项目
文章目录
一、域名解析
- 详情参考:阿里云官网
二、服务器操作系统置空
- 此处选择的是CentOS 7.5 + 版本
- 详情参考阿里云官网
三、部署方式
- 使用Redis + nginx
四、需安装环境配置
- JDK1.8+
- Maven3.6+
- mysql(5.5.62+)
- Nginx(1.19.8)
- Redis(6.2.1)
- Tomcat
- …
五、Linux服务器安装相应内容(具体安装步骤)
(一)安装JDK(3种方式)
使用Yum安装(推荐)
# 查看是否有JDK环境
java -version
# 卸载现有环境
# (如果java -version出现-bash: /usr/local/java: No such file or directory可以省略此步骤)
rpm -qa | grep java
# .noarch文件可以不用管,卸载下面四个
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.322.b06-1.el7_9.x86_64
# 这里以openjdk8为例
yum install java-1.8.0-openjdk
#不想确认的带上 -y
yum install -y java-1.8.0-openjdk
# 安装完之后重新检查一下环境
使用rpm包安装
- Oracle JDK所有版本下载
- OracleJDK8下载
- Oracle官方站点下载需要登录【百度一个】
将下载的rpm包上传到服务器上
# rpm包的安装命令
rpm -ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
--nodeps 不检测依赖性
# 执行下面的命令安装 (jdk-8u311-linux-x64.rpm替换成你当前要安装的文件名)
rpm -ivh jdk-8u311-linux-x64.rpm
# 安装完检查环境配置
java -version
使用JDK压缩包(相对复杂,容易出错)
# 这里使用wget命令下载
wget -c https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz
下载Oralce JDK(方式2 中有下载地址)
# 解压gz压缩包 jdk-8u311-linux-x64.tar.gz替换为你当前实际的文件名
tar -zxvf jdk-8u311-linux-x64.tar.gz
# 创建文件夹 (你可以自己定义)
mkdir -p /usr/local/java/jdk1.8.0_311
# 复制jdk到上一步创建的文件夹
cp -r ./jdk1.8.0_311/ /usr/local/java/
配置环境变量
# 编辑全局变量文件
vim /etc/profile
# 将下载的gz压缩包上传到服务器并解压
(PS:JAVA_HOME的 “/usr/local/java/jdk1.8.0_311” 为上一步创建的目录,使用你当时创建的目录名。)
export JAVA_HOME=/usr/local/java/jdk1.8.0_311
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
(二)安装Maven
安装(推荐方式)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解压Maven
tar -zxvf apache-maven-3.6.3-bin.tar.gz
添加一对localRepository,用来添加本地仓库路径;
<localRepository>/soft/maven/repo</localRepository>
切换镜像源
# 修改settings.xml文件(匹配你自己的路径)
vi /soft/apache-maven-3.6.3/conf/settings.xml
# 找到【mirrors】标签对,【添加】一下代码
<mirror> <!--阿里云仓库-->
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror> <!--maven国内镜像-->
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置环境变量
vi /etc/profile
#你的maven路径
MAVEN_HOME=/usr/local/maven/apache-maven-3.6.1
export PATH=$MAVEN_HOME/bin:$PATH
# 重启
source /etc/profile
# 查看结果
mvn -version
(三)安装Mysql
安装
Centos7默认安装 mariadb,为防止和MySQL冲突,需要先卸载。
# 查看mariadb版本信息
rpm -qa | grep mariadb
# 卸载(mariadb-libs-5.5.65-2.el7.x86_64这一个是根据你查到的版本信息填写,每个系统有差异)
sudo rpm -e mariadb-libs-5.5.65-2.el7.x86_64 --nodeps
在云服务器里下载MySQL安装包有两种方式:
- wget 或 curl
- 还可以在官网下载然后手动上传**(不建议手动上传)**
# 官网下载地址(下载完上传即可)
https://dev.mysql.com/downloads/mysql/
# 下载完,上传,解压
例:tar -xvf mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar
# wget方式下载
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar
# curl方式下载
curl -O https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar
安装5个rpm,有安装顺序,依赖嵌套
# 3个依赖包
rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm
# 客户端和服务端
rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm
# 此步骤一般情况不用管,当前yum仓库没有包含mysql-server相关包时,才需要安装。其实前面步骤只要正确部署,就不存在yum仓库没有包含mysql-server相关包的情况。
(1)查看yum仓库有没有包含mysql-server相关包:
yum whatprovides mysql-server
(2)没有就安装 mysql-server:
yum -y install mysql-server
- 在安装第三个的时候如果出现
【libcrypto.so.10()(64bit) 被 mysql-community-libs-8.0.11-1.el7.x86_64 需要】类似的错误,要改变一下命令:
安装的时候最好在root权限下安装,需要在rpm包后面添加
--nodeps --force
- 在安装第五个之前要先安装
yum install libaio
修改密码
MySQL刚安装是没有密码的,需要初始化一个临时密码,再去修改。
# 生成临时密码
sudo mysqld --initialize
启动mysql
systemctl start mysqld.service
查看MySQL运行状态,运行状态如图:
systemctl status mysqld.service
检查一个叫 Active 的参数,如果状态是 loaded
,代表启动成功
不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
切记:一定要把临时密码保存下来
grep "password" /var/log/mysqld.log
如下命令进入数据库:
mysql -uroot -p
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功
执行以下命令开启远程访问限制(注意:下面命令开启的IP是 192.168.1.1,如要开启所有的,用%代替IP):
mysql> grant all privileges on *.* to 'root'@'192.168.1.1' identified by 'password' with grant option;
然后再输入下面两行命令
mysql> flush privileges;
mysql> exit
为防火墙添加开放端口
# 添加mysql端口3306和Tomcat端口8080
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 重新加载
firewall-cmd --reload
更改mysql语言
mysql -uroot -p
# 登陆之后,输入:
status
如果是utf8
,就代表没问题
如果是latin1
,就到 /etc
目录下的my.cnf
文件下修改一下文件内容
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
保存文件后,重启mysql
service mysqld restart
安装完成
(四)安装Nginx
安装前环境检测
安装之前先检查有没有C++,没有的话安装先安装
安装C++
//安装c++
yum install gcc-c++ -y
//查看版本
gcc -v
安装ssl
yum install -y openssl openssl-devel
安装zlib
yum install -y zlib zlib-devel
//查看信息
cat /usr/lib64/pkgconfig/zlib.pc
安装pcre
yum install -y pcre pcre-devel
//查看版本号
pcre-config --version
下载nginx
nginx下载地址
下载解压
tar -xvf nginx-1.20.2.tar.gz
安装nginx
# 进入目录
cd nginx-1.20.2
# 执行命令
./configure
# 执行make命令
make
# 执行make install命令
make install
查看目录
cd /usr/local/nginx
ls
启动、关闭、重启nginx
cd /usr/local/nginx/sbin
# 启动
./nginx
# 关闭
./nginx -s stop
# 重启
./nginx -s reload
配置防火墙
开放nginx所需的80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
验证端口是否开放成功
firewall-cmd --zone=public --query-port=80/tcp
在浏览器输入你的服务器IP地址,nginx默认端口是80,只需要输入IP地址即可!
配置开机自启动
即在rc.local
增加启动代码就可以了。
vi /etc/rc.local
增加一行 /usr/local/nginx/sbin/nginx
设置执行权限:
chmod 755 rc.local
(五)安装Redis
环境确认
由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装
yum install -y gcc
下载redis
都知道服务器可以使用 wget
命令直接联网下载 但是这个下载路径也很重要 所以一定要自己进入官网复制 网上很多教程都是直接给的一个下载命令,但是那个命令里面的版本不一定还在,所以必须要自己去复制一下这个下载路径,然后输入wget + 复制的下载路径
回车进行下载
wget https://download.redis.io/releases/redis-7.0.8.tar.gz
如果报错提示 Connecting to download.redis.io (download.redis.io)...Permission denied
,没有权限,那就需要切换root用户下载
解压redis
下载完后使用解压命令进行解压
tar -zvxf redis-7.0.8.tar.gz
因为 redis一般放在 /usr/local/redis
路径下 所以要使用命令将文件移动过去 这里我的文件在opt下
mv /opt/redis-7.0.8 /usr/local/redis
cd
到/usr/local
目录下可以查看到当前目录已经多了一个 redis 子目录
安装redis
进入到redis目录输入make执行编译命令
cd /usr/local/redis
make
make PREFIX=/usr/local/redis install
启动redis
1、直接启动
cd bin
./redis-server
2、指定redis.conf文件启动
从 redis 的源码目录中复制 redis.conf
到 redis 的安装目录
cp /opt/redis-6.2.5/redis.conf /usr/local/redis/bin/
修改 redis.conf
文件,把 daemonize no
改为 daemonize yes
vi redis.conf
运行
./redis-server redis.conf
查看Redis是否正在运行
ps -ef | grep redis
或者
ps -aux | grep redis
# 杀掉redis进程
kill 15376
设置开机自启动
在/etc
目录下新建redis目录
mkdir redis
将 /usr/local/redis/redis.conf
文件复制一份到 /etc/redis
目录下,并命名为6379.conf
cp /usr/local/redis/redis.conf /etc/redis/6379.conf
将redis的启动脚本复制一份放到 /etc/init.d
目录下
cp /usr/local/redis/utils/redis_init_script /etc/init.d/redisd
设置redis开机自启动, 先切换到/etc/init.d
目录下, 然后执行自启命令
cd /etc/init.d
# 执行自启命令
chkconfig redisd on
redis-cli
./redis-cli
是连接本地redis服务的一个命令,通过该命令后可以既可控制redis的脚本控制台
如果 Redis报错:-bash: redis-cli: command not found
将redis-cli拷贝到bin下,让redis-cli指令可以在任意目录下直接使用
cp /opt/redis-7.0.8/src/redis-cli.c /usr/local/redis/bin
操作命令总结
systemctl start redis.service #启动redis服务
systemctl stop redis.service #停止redis服务
systemctl restart redis.service #重新启动服务
systemctl status redis.service #查看服务当前状态
systemctl enable redis.service #设置开机自启动
systemctl disable redis.service #停止开机自启动
六、启动后端
首次启动
前端
新建一个文件夹web,把项目打包,解压,放到服务器上即可
后端
- 在服务器中新建一个文件夹,把jar包传进去
- 新建一个文件,存放日志记录
ruoyi_log.out
- 新建一个脚本,方便启停项目(此步骤可选,可以不操作)
- 启动项目即可;
# 启动的是你的jar包名称,
nohup java -jar ruoyi-admin.jar > ruoyi_log.out 2>&1 &
重启后端
方式一:(传统方式)
- 过滤端口号
netstat -tnlp | grep :8090
或者使用ps -ef | grep java
查看正在运行的进程号,重启服务的时候直接杀掉。 - 然后执行
Kill -9 进程号
杀掉进程,重新启动。
方式二:(如果会的话,建议此方式)
使用脚本。
大概设计思路就是在脚本里面执行外层的逻辑,先查询进程号kill,在重新启动
七、可能出现的问题
防火墙问题
通常情况下,CentOS 系统部署完成后,关闭并禁用防火墙。但有些特殊情况需要保持防火墙的启用。
- 检查防火墙开启的端口
# 查看开放端口
firewall-cmd --list-ports
- 参考命令
# 打开防火墙
systemctl start firewalld
# 启用防火墙
systemctl enable firewalld
# 查看已经开放的端口
firewall-cmd --list-ports
# 开启指定端口
firewall-cmd --zone=public --add-port=[端口号]/[协议] --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
--zone=<zone> # 指定 zone
--add-port=<portid>]/<protocol> # 端口id / 协议
--permanent # 永久开启,不添加则重启失效
# 关闭指定端口
firewall-cmd --zone=public –remove-port=[端口号]/[协议] --permanent
firewall-cmd --zone=public –remove-port=80/tcp --permanent
# 查看所有 zone ,默认有9个 zone
firewall-cmd --get-default-zones
# 重新加载防火墙 *重新加载过后才能生效
systemctl reload firewalld
# 测试端口是否开放成功
ssh -v -p [端口] [用户名]@[ip]
ssh -v -p 8080 root@47.128.209.xx
Nginx问题
- server 配置问题
- Vue打包之后路径跳转不到“location /”问题,需要单独指向一个路径
- 前后端分离项目,要写两个location,不要影响到业务的跨域
若依解决登录页面验证码不出现检查思路
① Redis没启动
② 看一下浏览器或者日志,有没有调到接口,没有的话检查一下nginx反向代理,能不能跳转过去,以及防火墙有没有开相应的端口
到此为止
以上是关于阿里云服务器部署前后端分离项目的主要内容,如果未能解决你的问题,请参考以下文章
阿里云(win server)部署前后端分离项目(springboot + vue + android)
阿里云(win server)部署前后端分离项目(springboot + vue + android)
前后端分离 -- SpringBoot + Vue实战项目 部署至阿里云服务器
项目部署Vue+SpringBoot前后分离个人博客项目实战部署保姆教程 Linux+docker安装部署启动一条龙教程