阿里云部署项目
前言:ces 学校近期实训周做项目,我想着能不能把项目直接部署在云上,刚好阿里云有ECS服务器免费试用活动,不嫖白不嫖,因此记录本项目的所有部署流程,从申请服务器到部署项目,完整的流程 本次采用的是两台阿里云ECS的服务器,因为我项目采用数据库是主从复制的架构,所以需要两台服务器,刚好我也想把前台部署到第二台服务器上去,第一台服务器部署主要后台代码
阿里云服务器申请
首先去阿里云申请两台服务器,可免费使用1个月
如果不用了记得提前退订,否则超出使用的流量或者云盘内存会额外计费
ECS申请(主库SerMsMaster )
从库SerMsSlave
主库配置
通过本地连接阿里云ECS主库
网卡设置
这里不做介绍,自行百度Linux配置网卡
安装软件
vim文本工具
yum install vim
安装JDK
去oracle官网下载对应操作系统的JDK
把下载好的JDK传入Linux
执行解压命令: tar -zxvf 改成你自己上传的包名 -C /usr/local
修改系统环境变量:
vim /etc/profile
插入以下代码,注意路径修改
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 端口 后期也会用到
其余操作
停止Tomcat服务 sh shutdown.sh
安全提醒:防火墙不建议关闭,已经阿里云服务器安全组也不建议设置全部端口打开,会有一些黑客或者不正当的人入侵服务器,拿你服务器干坏事,本人就是因为此件事搞得我服务器,需要重新配置,索性也就写了这篇文章,真的不要随意打开任何一个端口!!!
安装MySQL
一样的去官网下载对应系统版本的安装包,并上传到Linux
解压MySql安装包之后会得到以下几个文件
接下来需要按照以下顺序一一安装,按照顺序必须跟我一样
安装顺序如下
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 (输入查出来的临时密码)
修改密码以及访问权限
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
外部进行连接
设置为开机启动
网上有很多教程这里就不多阐述了 点我查看教程
快捷操作
打开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
在项目根目录编写启动脚本
#!/bin/sh 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文件
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 刷新环境变量
配置开机启动
#!/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管理列表
# chkconfig --add /etc/init.d/nginx
使用service管理服务
# service nginx start 启动服务 # service nginx stop 停止服务 # service nginx restart 重启服务 # service nginx status 查询服务的状态 # service nginx relaod 刷新配置文
设置终端模式开机启动
# 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
您的支持是我不断前进的动力,如果您恰巧财力雄厚,又感觉本文对您有所帮助的话,可以考虑打赏一下本文,用以维持本博客的运营费用,拒绝白嫖,从你我做起!🥰🥰🥰
- 感谢你赐予我前进的力量