阿里云部署项目
前言:ces
学校近期实训周做项目,我想着能不能把项目直接部署在云上,刚好阿里云有ECS服务器免费试用活动,不嫖白不嫖,因此记录本项目的所有部署流程,从申请服务器到部署项目,完整的流程
本次采用的是两台阿里云ECS的服务器,因为我项目采用数据库是主从复制的架构,所以需要两台服务器,刚好我也想把前台部署到第二台服务器上去,第一台服务器部署主要后台代码
主库服务器 | 从库服务器 |
---|---|
后台代码 | 前台代码 |
mysql5.0主库部署 | mysql5.0从库部署 |
redis部署 | Nginx配置 |
JDK环境配置 | |
tomcat配置 | |
Maven环境配置 |
阿里云服务器申请
首先去阿里云申请两台服务器,可免费使用1个月
如果不用了记得提前退订
主库配置
通过本地连接阿里云ECS主库
网卡设置
这里不做介绍,自行百度Linux配置网卡
安装软件
vim文本工具
yum install vim
安装JDK
去[oracle][https://www.oracle.com/java/technologies/downloads/archive/]官网下载对应操作系统的JDK
把下载好的JDK传入Linux
执行解压命令: tar -zxvf 改成你自己上传的包名 -C /usr/local
修改系统环境变量:
vim /etc/profile
插入以下代码,注意路径修改
1
2
3
4 export JAVA_HOME=/usr/local/jdk1.8.0_331 (注意路径)
export JRE_HOME=/usr/local/jdk1.8.0_331/jre ((注意路径))
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
修改完后:wq退出
执行 source /etc/profile 刷新环境变量
执行 java -version 或 javac 查看是否安装成功
看到显示版本号即安装成功
安装Tomcat
官网下载对应系统版本的tomcat安装包
并上传至Linux内
执行解压命令
- tar -zxvf apache-tomcat-9.0.62.tar.gz -C /usr/local
进入到tomcat的bin目录下执行 sh startup.sh
这个时候我还需要去阿里云ECS控制台设置一下安全组规则,把8080端口开打
再去浏览器访问 服务器ip+端口号8080 比如我的是
http://47.99.194.162:8080/
(本人是把防火墙直接关闭了,所以能访问)如果还访问不到,那就得改一下防火墙的设置,设置防火墙开放8080端口
设置防火墙开机启动:
chkconfig firewalld on
开启防火墙:
systemctl start firewalld
(执行完之后,再去访问就访问不到了,所以我们需要开发8080端口)查询8080端口是否开启:
firewall-cmd --query-port=8080/tcp
开启8080端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
(–permanent永久生效,没有此参数重启后失效)重启防火墙
- firewall-cmd —reload
查看8080端口是否开启成功
- firewall-cmd —zone=public —query-port=8080/tcp
当然还可以删除指定端口
- firewall-cmd —zone=public —remove-port=端口号/tcp —permanent
再去刷新一下页面,就又可以访问了
查看已开放的所有端口
- firewall-cmd —zone=public —list-ports
索性在这里一并开放3306 / 6379 / 8888 端口 后期也会用到
其余操作
1
2 停止Tomcat服务
sh shutdown.sh安全提醒:防火墙不建议关闭,已经阿里云服务器安全组也不建议设置全部端口打开,会有一些黑客或者不正当的人入侵服务器,拿你服务器干坏事,本人就是因为此件事搞得我服务器,需要重新配置,索性也就写了这篇文章,真的不要随意打开任何一个端口!!!
安装MySQL
一样的去官网下载对应系统版本的安装包,并上传到Linux
解压MySql安装包之后会得到以下几个文件
接下来需要按照以下顺序一一安装,按照顺序必须跟我一样
- 安装顺序如下
1
2
3
4
5
6
7 rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
安装到这的时候需要安装一个依赖: net-tools,在执行最后一个安装包,直接执行则会报缺少net-tools依赖
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
- 安装完后执行内核更新:
- yum update
启动mysql
- systemctl status mysqld 查看mysql服务状态
- systemctl start mysqld 启动mysql服务
设置为开机启动
- systemctl enable mysqld
- netstat -tunlp 查看已启动的服务
- ps - ef|grep mysql 查看mysql进程
登录mysql
查阅临时密码: cat /var/log/mysqld.log | grep password
登录mysql,并修改密码,开放访问权限
mysql -uroot -p (输入查出来的临时密码)
修改密码以及访问权限
1
2
3
4
5 set global validate_password_length=4; 设置密码长度最低位数
set global validate_password_policy=LOW; 设置密码安全等级低,便于密码可以修改成root
set password = password('root'); 设置密码为root
grant all on *.* to 'root'@'%' identified by 'root'; 开启访问权限
flush privileges; 刷新权限到此就可以用Navicat进行外部连接了
安装Redis
官网下载对应系统版本的安装包,并上传至Linux系统和解压安装,在此不做阐述
安装Redis的依赖环境gcc, 执行: yum install gcc-c++
进入安装redis软件目录,进行编译,执行: make
在进入redis软件目录下的src执行: make install
redis启动与停止
- 在redis/src下执行: ./redis-server
进入redis根目录,修改配置文件
vim redis.conf
找到daemonize,修改为 yes 允许后台启动
修改配置文件,将 bind 注释 即可实现外部访问
- 将protected-mode 改为 no
启动Redis
src/redis-server ./redis.conf
外部进行连接
设置为开机启动
网上有很多教程这里就不多阐述了 点我查看教程
快捷操作
1
2
3
4
5
6
7 打开redis命令:service redis start
关闭redis命令:service redis stop
设为开机启动:chkconfig redis on
设为开机关闭:chkconfig redis off
安装Git
执行: yum install git
查看git版本: git —version
安装Mavne
自行百度
后端部署
拉取git项目到本地 git clone xxxxx
在项目根目录编写启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
echo =================================
echo 自动化部《湘约楼》署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=xyl_take_out
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 准备从Git仓库拉取最新代码
cd /usr/local/javaapp/xyl_ms_km
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 启动项目
nohup java -jar xyl_take_out-1.0-SNAPSHOT.jar &> xyl_take_out.log &
echo 项目启动完成赋予脚本最高权限,然后执行, sh xyl.sh
稍等片刻,将会打包完成
这里呢启动之后肯定是访问不到的,因为从库的sql还没配置,所以先配置从库的数据库和前端页面在来启动
从库配置
安装vim
上面有教程,这边不做阐述
安装Nginx
- 前期准备
安装依赖包
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
下载Nginx安装包
wget http://nginx.org/download/nginx-1.22.0.tar.gz
解压 tar -zxvf nginx-1.22.0.tar.gz
创建文件夹 mkdir -p /usr/local/nginx
执行安装命令: ./configure —prefix=/usr/local/nginx
执行编译: make && make install
导入静态页面到html目录配置反向代理
修改nginx.conf文件
1
2
3
4
5
6
7
8
9
10
11 location / {
root html/dist;
index index.html;
}
#反向代理配置
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://47.99.194.162:8888/
}
配置Nginx环境
- 编辑 vim /etc/profile
- export PATH=/usr/local/nginx/sbin:$PATH
- 执行 source /etc/profile 刷新环境变量
配置开机启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131>#!/bin/sh
>#
># nginx - this script starts and stops the nginx daemon
>#
># chkconfig: - 85 15
># description: NGINX is an HTTP(S) server, HTTP(S) reverse \
># proxy and IMAP/POP3 proxy server
># processname: nginx
># config: /etc/nginx/nginx.conf
># config: /etc/sysconfig/nginx
># pidfile: /var/run/nginx.pid
># Source function library.
>. /etc/rc.d/init.d/functions
># Source networking configuration.
>. /etc/sysconfig/network
># Check that networking is up.
>[ "$NETWORKING" = "no" ] && exit 0
>nginx="/usr/local/nginx/sbin/nginx"
>prog=$(basename $nginx)
>NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
>[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
>lockfile=/var/lock/subsys/nginx
>make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -n "$user" ]; then
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
>}
>start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
>}
>stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
>}
>restart() {
configtest || return $?
stop
sleep 1
start
>}
>reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $prog -HUP
retval=$?
echo
>}
>force_reload() {
restart
>}
>configtest() {
$nginx -t -c $NGINX_CONF_FILE
>}
>rh_status() {
status $prog
>}
>rh_status_q() {
rh_status >/dev/null 2>&1
>}
>case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
>esac这段代码是官方提供的,并不是我自己写的,里面有两行Nginx的路径需要改成你自己的安装路径
编写完毕之后在/etc/init.d下创建nginx文件,把上面的代码复制进去,并给予最高执行权限
使用chkconfig管理
将nginx服务加入chkconfig管理列表
1
# chkconfig --add /etc/init.d/nginx
使用service管理服务
1
2
3
4
5# service nginx start 启动服务
# service nginx stop 停止服务
# service nginx restart 重启服务
# service nginx status 查询服务的状态
# service nginx relaod 刷新配置文设置终端模式开机启动
1
# chkconfig nginx on
安装MySql
上述已经讲到,这里不做阐述
配置主从复制
配置主库
修改 vim /etc/my.nf
[mysql]
log-bin = mysql-bin #[必须]启用二进制日志
server-id=100 服务器唯一ID重启mysql服务
systemctl restart mysqld登录到主库中执行代码
GRANT REPLICATION SLAVE ON . to ‘serms’@’%’ identified by ‘Root@123456’;
上面SQL的作用是创建一个用户serms,密码为Root@123456,并且给serms用户授予 REPLICATION SLAVE权限,常用于建立复制时所需要用到的用户权限,也就是说slave必须被master授权具有权限的用户,才能提供该用户复制执行SQL,查看FIle和Position的值
show master status;至此不需要在动主库的mysql了
配置从库
修改mysql数据库配置文件
server-id=100
刷新数据库执行SQL
change master to master_host=’47.99.194.162’,master_user=’serms’,master_password=’Root@123456’,master_log_file=’mysql-bin.000001’,master_log_pos=438;
start slave;
查看数据库状态
show slave status;
到此呢主库和从库的配置就已经结束啦~
有些地方写的不是很好, 有不明白的地方请在下方留言
❤️Sponsor
您的支持是我不断前进的动力,如果您恰巧财力雄厚,又感觉本文对您有所帮助的话,可以考虑打赏一下本文,用以维持本博客的运营费用,拒绝白嫖,从你我做起!🥰🥰🥰
支付宝 | 微信 |
---|---|