迁移部署项目

最近有需要部署一个项目到一个新买的服务器上, 项目是springBoot项目+jdk1.8+mysql, 服务器用阿里云的,先免费试用一个月刚好可以练练手。记录一下操作过程,方便以后再次操作和分享。

一、 通过Xshell连接服务器
阿里云控制台创建实例后,得到实例静态的公网和内网IP地址。在Xshell里输入服务器的公网IP以及账号密码进行登录。 如果出现如下界面,登录阿里云去重置一下密码和修改配置
在这里插入图片描述
1.1 重置实例密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.2 修改配置允许root使用密码进行登录
编辑 /etc/ssh/sshd_config 文件配置,找到是否可以密码认证选项 PasswordAuthentication yes ,如果被#注释就放开,如果是no 就改成yes 。然后重启sshd服务,重启命令是 service sshd restart

二、运行环境准备
2.1 检查jdk是否安装。输入命令 java -version 回车,若提示-bash: hj: command not found则是没安装jdk,完全是个空机器(创建实例的时候没选预装软件)。执行命令 yum -y install java-1.8.0* ,安装Java运行环境。回车后Xshell会一直打印安装进度,直到出现Complete!表示安装完成。 此时在输入 java -version 回车,会显示jdk的版本信息如下图,表明安装成功。
在这里插入图片描述
2.2 数据库安装
2.2.1 mysql为例,安装命令如下

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server

若第三步显示 Public key for mysql-community-server-5.7.37-1.el7.x86_64.rpm is not installed 则执行如下
在这里插入图片描述

# 升级
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022    
# 启动
yum install mysql-server   或者    yum -y install mysql-community-server

第三步中会显示安装数据库的一些信息如下,若觉得没问题就输入 y 回车, 继续完成安装。
在这里插入图片描述

2.2.2 安装成功后启动数据库服务 systemctl start mysqld.service
2.2.3 查看mysql的初始密码 grep "password" /var/log/mysqld.log
在这里插入图片描述
2.2.4 修改初始密码与授权

# 登录数据库 执行后用刚才的初始默认密码登录
mysql -uroot -p
# 修改密码安全策略为低(只校验密码长度,至少8位)。
set global validate_password_policy=0;  
# 修改密码为 12345678
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
# 授予远程管理权限,不然navicate等工具连不上
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';
# 退出数据库
exit

提示: 若IP账号密码都正确但navicate连接超时,参考步骤 2.5 开放访问端口 或者 先用ssh 绕过去

2.3 tomcat的安装
2.3.1 下载安装包 wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz
2.3.2 安装tomcat(解压即可用)

# 解压刚刚下载Tomcat包
tar -zxvf apache-tomcat-8.5.69.tar.gz 
# 移动与修改Tomcat名字 这一步可省略 因为tomcat的安装不做要求
mv apache-tomcat-8.5.69 /usr/local/Tomcat8.5
# 授权执行权限 
chmod +x /usr/local/Tomcat8.5/bin/*.sh
# 修改访问端口 这一步可省略 默认8080
sed -i 's/Connector port="8080"/Connector port="80"/' /usr/local/Tomcat8.5/conf/server.xml

2.3.4 启动tomcat服务器

/usr/local/Tomcat8.5/bin/./startup.sh

浏览器输入外网ip+tomcat端口,看到tomcat猫就成功了(若无法访问参考步骤 2.5 开放访问端口)

2.4 安装Nginx
2.4.1 安装准备

# 安装gcc编译器
yum -y install gcc
# 安装pcre,解析正则表达式
yum install -y pcre pcre-devel
# 安装zlib 数据包进行gzip压缩和解压
yum install -y zlib zlib-devel

2.4.2 下载Nginx进行解压

wget http://nginx.org/download/nginx-1.17.10.tar.gz 
tar -zxvf nginx-1.17.10.tar.gz

2.4.3 编译安装Nginx

cd nginx-1.17.10
./configure
make && make install

2.4.5 启动

cd /usr/local/nginx/
sbin/nginx

浏览器输入外网ip 看到welcome to Nginx 就表示安装成功 (若无法访问参考步骤 2.5 开放访问端口)

2.5 开放访问端口
如果数据库、tomcat、Nginx 安装好后也正常启动运行了,但外网网页打不开、超时等等、说明他们的端口没在白名单里面。需要登录阿里云控制台 找到安全组菜单, 这个有一个默认的/自带的安全组,点击规则配置
在这里插入图片描述
入方向–手动添加,添加我们需要开放给外网访问的端口,授权对象全是0表示不校验身份(安全性不好),当然也可以限定更小的范围能控制谁可以用这个端口(灵活性不好)。这里我开放了80、8080、3306端口
在这里插入图片描述

三、项目打包上传服务器部署
3.1 打包
如下图是本地项目在ideal里面打包成jar , 当然也可以打成war,取决于pom里面的<packaging>jar</packaging>
在这里插入图片描述

3.2 上传
打包若是jar,上传服务器任意目录下即可,打包若是war,需上传至 tomcat安装目录的webapps下面。 下面以jar格式为例
3.2.1 在服务器上创建项目包存放路径

# 创建新的存放目录(用现有目录也可以)
mkdir /home/project/demo
# 授权  777是最大权限,可根据需要减小权限范围
chmod -R 777 /home/project/demo

3.2.2 上传打包文件,命令如下。(若用命令上不成功就行安装XFTP完成上传)

cd /home/project/demo
rz 
或者 
scp C:\Users\admin\Desktop\demo-1.0.0.jar [email protected]:/home/project/demo

四、启动项目
如果打包成jar格式,通过 java -jar bracelet-1.0.0.jar 即可运行
如果打包成war格式,执行如下:

# 检查tomcat是否在运行 
ps aux | grep tomcat
# 若在运行则停止tomcat
/usr/local/Tomcat8.5/bin/./shutdown.sh
# 启动tomcat
/usr/local/Tomcat8.5/bin/./startup.sh
# 查看启动日志是否启动成功 
tail -400f /usr/local/Tomcat8.5/logs/catalina.2022-10-15.log

tomcat启动后webapps下面会自动解压war包,多出一个与war包同名的文件夹,里面就是自动解压后的全部项目文件了。启动成功后,通过http://公网IP:8080/war包文件名称/某个后台接口 访问测试一下。若是改过tomcat的service.xml,则这个地址可能有些不同了,比如端口号、虚拟地址等。

五、遇到的问题以及解决方法总结

  1. tomcat启动成功但未加载springboot项目(没打印出控制台springBoot的图标)
    这种情况localhost:8080能看到汤姆猫页面,但localhost:8080/项目名称/XXX是访问404。在webapps/项目名称/新建一个index.txt随便写个字符串再把txt文件后缀改成html,通过localhost:8080/项目名称 就能看到刚才写的字符串,说明tomcat的service.xml配置、端口、访问地址都没问题,只是项目没被成功启动所以项目里面的其他的接口都无法访问。网上有人说在pom文件里面加一段标签,意思是打包的时候不要把springboot自带的tomcat相关的jar打包。但我尝试了无效,最终在启动类了添加如下解决
    在这里插入图片描述

  2. 数据库连接失败
    tomcat启动日志提示数据库连接失败的问题。第一就是检查数据库地址账号密码等;第二在数据库配置标签的url后面添加 useSSL=false, false表示可直接通过账号密码连接,true表示进行安全验证,同时会检查证书、令牌啥的;第三数据库的端口3306被限制了,参考上面的 2.5 开放访问端口 步骤在安全组里面的 出方向 下面添加一行予以放行,尤其是数据库安装在另外一台机器的情况

<property name="url" value="jdbc:mysql://127.0.01:3306/testdb?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;useSSL=false"/>
  1. 找不到项目下配置文件
    tomcat日志提示某个配置文件(比如application.properties)Notfond异常,找不到路径等问题。 首先要检查pom文件里面的resources标签是否有遗漏的配置文件
<build>
	<resources>
		<resource>
			<directory>src/main/resources</directory>			
			<excludes>
				<!-- 检查是否有遗漏的配置文件 有的话在新增一个exclude标签补充上 -->
				<exclude>conf/**/*</exclude>
			</excludes>
		</resource>		
	</resources>
<build>

其次,检查下pom以及其他会被引入的配置文件,路径前面是否需要添加 classpath:

<list>
	<!-- <value>application.properties</value> -->
	<!-- 如上改成如下 -->
	<value>classpath:application.properties</value>	 
</list>

猜你喜欢

转载自blog.csdn.net/qq_29539827/article/details/127317047