在云服务器部署自己的JavaWeb项目 查询了许多的资料,但多数只有片段的描述,
更好的去理解 以及日后的学习 是挺有必要写成一篇博客来记录一下自己的学习过程
为了通用性、也为了日后可能更改云服务器、减少学习成本出发 选取目前腾讯云/阿里云的通用Centos7.6版本
本文使用阿里云实例
Centos7.6 Nginx PHP 配置
其中 安装Tomcat是可以省略的, 前提是使用Springboot将web项目打包成jar包 发布到云服务器上通过 命令:nohup java -jar xxx.jar & 运行项目;但我这篇博客是使用Springboot打包成war 然后部署到Tomcat上运行的 如果使用jar部署的可以不在云服务器上安装Tomcat
登录到阿里云 购买云服务器 如果是学生的话 可以试一下领取6个月的免费云服务器阿里云高校 学生在校实践计划;
创建成功后 点击右上角的控制台 进入云服务器管理界面 并且点击对应的云服务器实例 进入以下界面 点击更多重置密码 远程连接可以在浏览器操作Linux
通过浏览器远程连接云服务器 ,成功连接后执行 命令:yum -y install lrzsz 用于后面SecureCRT上传war项目
yum -y install java-1.8.0-openjdk.x86_64
//安装完毕后 通过java -version 查看java版本
选择Tomcat合适的版本
//将Tomcat安装到 /opt 目录下
cd /opt
//下载Tomcat
wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
//解压Tomcat
tar xzf apache-tomcat-9.0.34.tar.gz
//可以调用 ls 来查看 /opt目录下的 tomcat文件名 然后通过mv命令 修改文件名
mv apache-tomcat-9.0.34 tomcat9.0
//参考win10 tomcat的启动命令 bin/startup.bat Linux启动命令是bin/startup.sh来启动Tomcat
cd ~
/opt/tomcat9.0/bin/startup.sh
//在浏览器输入 公网IP:8080 验证是否成功
默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid
下载MYSQL
//通过wget下载mysql rpm包
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
//下载mysql 5.7
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
//到此目录下执行安装命令
cd /etc/yum.repos.d/
yum install mysql-server
//启动mysql服务
systemctl start mysqld
//开机启动
systemctl enable mysqld
配置MYSQL
//目前我们并未设置密码 可以随便输入一下
mysql -u root -p //提示输入密码 但我们并未设置
//出现密码错误
//输出临时密码
grep "password" /var/log/mysqld.log
//重新执行 并输入临时密码
mysql -u root -p
//进入 MYSQL后 修改密码
alter user user() identified by "MYSQL密码";
//开放远程连接权限
grant all privileges on *.* to 'root'@'%' identified by 'MYSQL密码' with grant option;
flush privileges;
//修改 MYSQL编码
vim /etc/my.cnf
//最后添加
character_set_server=utf8
init_connect='SET NAMES utf8'
//重启mysql服务
systemctl restart mysqld
//通过 Navicat 远程连接 检测是否成功
准备:
检查Springboot的html中的异步请求 和 yml配置文件中的数据库 ip 信息是否正确
如果是部署Tomcat到的话 ajax的url实例:http:公网ip:8080/war名/…
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- war -->
<packaging>war</packaging>
<!-- war -->
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- WAR web config -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- WAR web config -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
</dependencies>
<build>
<!-- war名 -->
<finalName>Test</finalName>
<!-- war名 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
@SpringBootApplication
@MapperScan("com.example.demo.repository")
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
}
双击Maven Package打包 在项目目录下的target 生成一个 Test.war的文件
Test war名
//启动 SecureSRT/XShell 连接 云服务器
//停止Tomcat服务
/opt/tomcat9.0/bin/shutdown.sh
//参考win10环境下Tomcat对web项目部署
cd /opt/tomcat9.0/webapps
//在 SecureSRT/XShell 执行 rz命令 将项目上传
//启动Tomcat服务
/opt/tomcat9.0/bin/start.sh
//在浏览器输入 公网IP:8080/war名/... 来测试是否部署成功
在实现的过程中 参考挺多安装的教程 许多教程习惯将Java Tomcat Nginx PHP MYSQL等等自定义安装在 /usr/local/xxx 目录下 这种安装软件比较方便用户进行管理 但大多数需要修改配置文件 以及建立软连接
使用 命令:whereis xxx 发现yum直接安装是/usr/share/xxx目录下 比较傻瓜式的安装 也无需关心太多配置
欢迎指出文章错误 有空修改/回复 [Doge][Doge][Doge]