IDEA连接远程服务器实现项目上传部署
Posted AA白菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA连接远程服务器实现项目上传部署相关的知识,希望对你有一定的参考价值。
将Java项目从IDEA集成开发环境远程部署到服务器上有两种比较常见的方法
前排提示,如果有需要,在服务器上提前安装好相应的jdk,maven,mysql等环境。
第一种是先将项目打成一个jar包,然后通过一些附带文件上传功能的Shell工具将jar包上传到服务器,在服务器终端执行命令运行项目。
第二种就是直接在IDEA软件内来配置部署。
方法一
1.将Java项目打包成jar包,方法有很多,这里介绍一种我常用的打包方法,在IDEA的终端输入mvn clean package。
可以自动打包,并且可以在控制台输出打包时可能会出现的错误,根据错误可以准确定位到问题的所在,去解决问题。如果打包成功,就会提示BUILD SUCCESS。
打好的jar包存放在target目录下,直接拷贝即可。
2.将jar包上传到服务器,这里就需要用一些Shell工具,墙裂推荐国产免费软件FinalShell,附安装使用教程。
(65条消息) Linux远程连接工具:finalshell_AA白菜的博客-CSDN博客
3.在服务器上进入上传项目的文件夹,在此文件夹中打开终端,执行命令
到此,通过打包远程部署项目就结束了,下面接着介绍第二种方法,直接在IDEA软件内来配置部署。
方法二
1.点击Tools->Deployment->Configuration
2.点击左上角"+"号,新建一个安全文件传输协议SFTP,输入一个名称,如Server
3.填写远程SSH服务器信息
Host 远程主机,可以是在本地hosts配置过映射的域名,也可以直接填写IP
Port 远程服务SSH开放登录端口,默认为22,如果没有设置过端口出让就不用改
Username 远程SSH登录用户名
Authentication 授权模式,默认为密码模式Password,一般都是这个,就不用改
Password 远程SSH登录用户对应密码
Root Path 根路径,是指需要进行远程工作的根位置。比如我们要实现本地快速上传jar包到Server服务器,我们现在远程服务器创建一个文件夹
上述信息填写完成,点击Test Connection测试连接,显示Successfully connected to ..字样表示信息填写无误,连接测试成功。
如果上述信息设置没错,测试连接成功,那么点击打开文件夹弹出框可以看到远程服务器的文件夹结构。
Web Server URL: 这个应该与web页面服务部署相关,这里不用修改
此时还没完,我们还需要为本地和远程文件夹建立映射关系。点击Mappings选项卡。
Local Path:本地路径,需要映射的本地路径,我们选择当前文件夹下的target文件夹,这是打包后jar包所在的文件夹,maven打包后自动生成
Deployment Path:远程部署文件夹,就是需要把本地路径的文件对应上传到远程的某个文件夹,这里我们设置为"\\"即可,即刚才所设置的根路径
Web Path:这个应该跟Web页面服务有关,目前不需要,不用更改
这样配置就完成了,目前本地文件夹和远程文件夹已经建立了映射连接,点击OK退出。
4.通过在控制台输入maven命令将项目打包,target文件夹下会出现打好的jar包。
将jar包上传到远程服务器。
5.Tools->Deployment->Browse Remot Host,远程查看服务器界面。
IDEA右侧边栏会弹出Remote Host界面,可以看到刚才上传的jar包。
6.Tools->Start SSH session...选择StormServer,可以一键登录远程SSH服务器,我们可以直接在这里操作部署命令,而不需要其他SSH工具了。
至此,直接在IDEA软件内来配置部署Java项目就介绍完了,感谢观看。
IDEA快速部署Spring Boot 项目到Docker
IDEA快速部署Spring Boot 项目到Docker
文章目录
一、IDEA 连接 Docker
我们通常使用TCP的方式连接Docker,所以我们需要配置Docker并开放端口,如果是本地虚拟机,可以简单使用http的方式进行连接(不建议),如果你是远程服务器,请务必采用安全的连接方式(https);
自己的虚拟机
如果是自己的虚拟机,可以不需要创建CA证书。可以使用http://ip:端口号
的形式连接。
1️⃣ 编辑docker.service文件
vim /usr/lib/systemd/system/docker.service
找到 [Service] 节点,修改 ExecStart 属性,增加 -H tcp://0.0.0.0:2375
这样相当于对外开放的是 2375 端口,当然也可以根据自己情况修改成其他的。
2️⃣ 重新加载Docker配置生效
systemctl daemon-reload
systemctl restart docker
3️⃣ 测试是否能访问
#浏览器访问
ip:2375/vsersion
如果访问成功证明已配置成功。
如果无妨访问,请检查防火墙是否开放2375端口:
#查看防火墙开放列表 firewall-cmd --list-ports #增加2375端口 firewall-cmd --zone=public --add-port=2375/tcp --permanent #重启防火墙 firewall-cmd --reload
4️⃣ 通过IDEA连接
远程服务器
**如果是远程服务器,一定要创建CA证书。**使用https://ip:端口号
的形式连接。(否则你的Docekr任何人都可以推送镜像,分分钟取挖矿)
下面我将命令都抽离出来,方便运行。[ip]
替换为你的服务器ip
(如果想看更详细的分步骤运行,请看[这篇文章](Docker开启远程安全访问 - niceyoo - 博客园 (cnblogs.com)),但是注意其中5.2章节的一个错误:extfile.cnf 这里不能用官方给的,不要DNS)
#1、创建CA私钥和CA公钥
mkdir -p /usr/local/ca
cd /usr/local/ca
#2.然后在Docker守护程序的主机上,生成CA私钥和公钥:执行完后,这里会要我们输入密码,请牢记,例如我这里输入wang123
openssl genrsa -aes256 -out ca-key.pem 4096
#3.补全CA证书信息,执行后需要输入,访问密码、国家、省、市、组织名称、单位名称、CommonName、邮箱等
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
#4.生成server-key.pem
openssl genrsa -out server-key.pem 4096
#5.用CA签署公钥:
openssl req -subj "/CN=[ip]" -sha256 -new -key server-key.pem -out server.csr
#6.匹配白名单,允许指定的ip可以连接到服务器中的docker,这里允许所有携带ca的ip
echo subjectAltName = IP:[ip],IP:0.0.0.0 >> extfile.cnf
#7.将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证:
echo extendedKeyUsage = serverAuth >> extfile.cnf
#8.生成签名证书,执行完后需要输入密码,上面我们设置的密码(wang123)
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \\
-CAcreateserial -out server-cert.pem -extfile extfile.cnf
#9. 生成客户端的key.pem
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
#10.使秘钥适合客户端身份验证
echo extendedKeyUsage = clientAuth >> extfile.cnf
echo extendedKeyUsage = clientAuth > extfile-client.cnf
#11.生成签名证书,执行完后需要输入密码
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \\
-CAcreateserial -out cert.pem -extfile extfile-client.cnf
#12.删除不需要的文件
rm -v client.csr server.csr extfile.cnf extfile-client.cnf
#13.设置权限
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
#14.归集服务器证书
cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/
创建完证书之后,我们需要修改Docker配置:
#使Docker守护程序仅接收来自提供CA信任的证书的客户端的链接
vim /lib/systemd/system/docker.service
将 ExecStart
属性值进行替换:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重新加载daemon并重启docker
systemctl daemon-reload
systemctl restart docker
注意,请检查防火墙和安全组是否都开放了此端口:2375
然后将ca证书下载到本地:
配置完就可以取IDEA的Docker中进行配置:
二、Maven插件与Dockerfile
docker-maven-plugin
我们IDEA已经可以连接Docker,我们想在package的时候,把打包镜像推送到Docker当中,我们需要配置Maven插件:
<plugin><!--制作docker镜像的maven插件-->
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>$project.artifactId</imageName><!--镜像名-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerCertPath>./ca</dockerCertPath><!--证书所在的目录-->
<dockerDirectory>$project.basedir</dockerDirectory><!--Dockerfile所在的目录-->
<dockerHost>https://ip:2375</dockerHost><!--docker所在的宿主机地址-->
<resources>
<resource><!--这里配置的就是打包后jar所在的位置-->
<targetPath>/</targetPath>
<directory>$project.build.directory</directory>
<include>$project.build.finalName.jar</include>
</resource>
</resources>
</configuration>
</plugin>
Dockerfile
FROM java:8
#作者
MAINTAINER wangze
#挂在
VOLUME /tmp
#将jar包添加到容器中并更名
ADD project-manage-service-0.0.1-SNAPSHOT.jar pms.jar
#运行jar
RUN bash -c 'touch /pms.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/pms.jar"]
三、项目打包上传镜像
当我们执行package
操作后,会自动将jar包作为image上传到Docker中:
可以在IDEA右下角的服务中,找到Docker连接,查看镜像
四、容器的创建与运行
容器的创建
先找到刚才打包的镜像:
然后右键创建一个容器:
这里端口格式为:
主机端口:容器端口
例如你的项目在容器中是8080端口,你主机的8080已经被占用,你可以这样写:
#访问的时候 http://ip:8090/ 8090:8080
运行容器,我们可以看到对应的日志:
环境的检查
首先检查服务器的防火墙:
firewall-cmd --list-ports
如果主机端口没有开放,则开放防火墙:
firewall-cmd --zone=public --add-port=8090/tcp --permanent
#重启防火墙
firewall-cmd --reload
PS: 如果是远程服务器,记得配置安全组
访问项目检验
访问项目的地址,可以正常访问即为成功
参考文章:
Docker开启远程安全访问 - niceyoo - 博客园 (cnblogs.com)
以上是关于IDEA连接远程服务器实现项目上传部署的主要内容,如果未能解决你的问题,请参考以下文章
Idea 2019.2 (Ultimate Edition) 部署项目到远程Linux服务器tomcat 详解