Intellij Idea 远程部署web应用

  应用发布前得在内网的服务器上测试,之前一直都是build一个war包通过ftp上传到服务器上,然后手动发布,再测试,整个流程在正常的情况下要耗掉3分钟左右的时间。然后出现问题的话得远程调试,修改后再重复步骤一,又要耗掉3分钟左右的时间(3分钟有点久,当你打开了很多窗口的时候)......这个问题我忍了很久了。

  最初为了省时,在本地搭好dns服务器, 通过nginx把域名的访问转回本地测试,在Intellij Idea中折腾了一段时间,终于让tomcat既可以在本地发布域名应用也可以在IDE调试。这种方式毕竟不适合多人合作的工作形式。而且第一次配置比较耗时,还不一定一下子就成功,因为是一种骗过Intellij Idea的手段,出现问题还要清一下缓存重启IDE,再配置。每次测试后又要还原。这个我也忍了。。。

  昨天,我不想再忍了,想寻求一种比较优雅的方式。我知道tomcat每个应用都可以配置reloadable为true,当文件变更的时候会重新发布,那么只要替换掉其运行的文件就可以了。马上就想到了ftp,下面是实现方式(用vsftpd经过一番折腾后):

    1.  为每个应用创建一个用户名,指定用户的主目录为应用发布后的目录。

        sudo useradd -d /data/app/xxx -m xxx

        sudo passwd xxx

    2. 设置vsftpd

        sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_bak        // do some backup

        sudo vi /etc/vsftpd.conf: 

        local_enable=YES

        write_enable=YES

        chroot_local_user=NO          //or yes

        chroot_list_enable=YES        //在chroot_list中指定的用户可以登录,chroot你懂的,指定了用户的根目录为上一步指定的目录

        chroot_list_file=/etc/vsftpd.chroot_list    //该文件指定chroot user

        pam_service_name=vsftpd

        allow_writeable_chroot=YES

    3. echo "xxx" | tee -a /etc/vsftpd.chroot_list

    4. systemctl restart vsftpd.service

 经过上一步设置后可以使用xxx登录ftpserver了,多个应用可以设置多个用户。下一个问题就是ftp不能上传文件夹,what the fuck...我竟然忘记了。谷狗了一下,发现Intellij Idea有个source synchronizer的插件,是通过ftp进行源码同步的。下载后发现其不能指定非java模块的文件夹,令我感到意外的是在同一级菜单发现了另一个有意思的东西:Intellij Idea 远程部署web应用_第1张图片

  5. 设置ftp:

Intellij Idea 远程部署web应用_第2张图片Intellij Idea 远程部署web应用_第3张图片

6. 查看Remote Host: 点图一的“browse remote host" 或 右边的162043_deCi_3492483.png

Intellij Idea 远程部署web应用_第4张图片

点击upload就把指定的本地目录上传到服务器目录了,tomcat发现文件变更就自动重新发布了, 整个操作只需要build一下应用,点一下上传,爽死我了。。。

然而耽搁了主要的事情。。。

后续:

参考:https://serverfault.com/questions/6895/whats-the-best-way-of-handling-permissions-for-apache-2s-user-www-data-in-var

由于每次上传的新文件都没有访问权限,对此做了如下操作:

1. 新增一个组别:    groupadd www

2. 给组别添加用户: usermod -a -G www xxx

3. 更新目录与文件权限:

    find /data/app -type d -exec chmod 2775 {} +

    find /data/app -type f -exec chmod 0664 {} +

4. 设置组别的acl,目的是使这些文件夹下新增的文件都附上可读权限(其实也可以设置umask,这里选择acl是因为不用修改系统文件,比较方便)

    sudo setfacl -R -d -m g:www:rwx /data/app        //递归设置文件夹acl

5. 至此,每次上传的新文件都能被访问了。不用手动chmod了。

   

转载于:https://my.oschina.net/eyesos/blog/1492338

你可能感兴趣的:(Intellij Idea 远程部署web应用)