星际穿越

将你的JavaWeb项目发布到线上

2020-06-14

如果正在写JavaWeb项目的你有一台云服务器,恭喜你,你可以参照这篇文章将你的项目发布到你的云服务器上。这在让你获得一定成就感的同时,也更方便向其他人演示你的项目。前后端也能彻底分离,开发前端时不再需要在你的电脑上专门开一个窗口运行后端代码了。最棒的一点是它只占用你服务器的一个端口号,不会和服务器上的其他应用冲突。

本地Win10的准备工作

安装 winscp

安装 wsl 作为 Linux 环境,使用 ssh 命令远程操作云服务器

服务器上的准备工作

注意:这里选择jdk8和tomcat7.0.100作为演示,实际要选择和你本地开发环境一致的配置

使用 ssh 命令连接云服务器

1
ssh username@ip_address

更换国内源

1
2
3
4
5
6
# 备份sources.list文件
sudo cp /etc/apt/sources.list /etc/apt/sources_init.list
# 修改sources.list,推荐换成清华源或者阿里源
sudo gedit /etc/apt/sources.list
# 执行update应用更新
sudo apt update

清华源:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

阿里云:https://developer.aliyun.com/mirror/ubuntu

注意选择和自己服务器对应的版本(可以用 lsb_release -a 命令查看)

安装 jdk

1
sudo apt install openjdk-8-jdk -y

安装tomcat

运行 war 包才需要安装 tomcat,如果你要运行的是 jar 包可以跳过这一步

1
2
3
4
5
6
# 创建存放tomcat的目录
mkdir -p /usr/tomcat && cd /usr/tomcat
# 下载tomcat安装包
wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.100/bin/apache-tomcat-7.0.100.tar.gz
# 解压缩
sudo tar -xvzf apache-tomcat-7.0.100.tar.gz

Struts项目

在IDEA中选择Build->Build Artifacts,会target目录下生成war包

使用 winscp 或其他工具把 war 包上传到云服务器 tomcat 的 webapps 目录下,然后 ssh 连接云服务器启动 tomcat

1
2
3
4
5
6
7
8
9
10
# 使用scp上传war包到云服务器
scp local_path/your_project.war root@ip_address:cloud_tomcat_path/webapps/
# 使用ssh远程连接云服务器
ssh root@ip_address
# 跳转到云服务器tomcat的bin目录
cd cloud_tomcat_path/bin/
# 如果之前tomcat处于运行状态需要先关闭
./shutdown.sh
# 启动tomcat服务器
./startup.sh

这里执行 scp 和 ssh 命令时必须以 root 用户的身份,因为 tomcat 的 webapps 目录需要权限才能打开

SpringBoot项目

在IDEA中点击右侧的Maven面板,点击Lifecycle->package,会target目录下生成jar包

使用 winscp 或其他工具把 war 包上传到云服务器的任意位置,然后 ssh 连接云服务器使用 nohup 命令以后台方式运行 jar 包

1
2
3
4
5
6
7
8
9
10
11
12
# 使用scp上传war包到云服务器
scp local_path/your_project.jar root@ip_address:cloud_path/
# 使用ssh远程连接云服务器
ssh root@ip_address
# 跳转到云服务器tomcat的bin目录
cd cloud_path/
# 使用nohup命令以后台方式运行jar包
nohup java -jar your_project.jar
# 查看进程号
ps -ef|grep java
# 杀掉进程来强制关闭后台运行的jar包
kill -9 port

一些错误的参考解决办法:

待解决问题

  • tomcat修改 /conf/server.xml 中的端口号之后,shutdown时报错