应用发布前得在内网的服务器上测试,之前一直都是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模块的文件夹,令我感到意外的是在同一级菜单发现了另一个有意思的东西:
5. 设置ftp:
6. 查看Remote Host: 点图一的“browse remote host" 或 右边的:
点击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了。
相关推荐
文档不仅涵盖了安装配置、基础操作,还深入到了插件应用、快捷键操作、项目管理以及DevOps实践等多个方面,对于任何希望使用IntelliJ IDEA提高开发效率的Java开发者来说,这份指南都是一个宝贵的资源。
JRebel插件支持热部署功能,使得开发人员在开发Web应用时可以不用重启服务器即能看到代码更改的效果,极大地提高了开发效率。 在常用技巧方面,IntelliJ IDEA提供了许多便捷功能。例如,Debug跟踪可以设置条件变量...
由于Spring框架在Java开发中的广泛应用,IntelliJ IDEA 提供了专门针对Spring的支持,比如SpringBeanExplorer等工具,用于管理和查看Spring项目中的bean。 综上所述,IntelliJ IDEA 不仅是一个功能全面的Java IDE,...
- **服务器配置**: 文档中提到需要配置Tomcat6服务器,意味着需要在IntelliJ IDEA中设置服务器环境,使项目能够在服务器上部署并运行。 - **部署选项**: 在IDEA中,通常可以设置部署方式(如war包部署)、部署位置...
### IntelliJ IDEA 使用教程知识点...- **核心知识点回顾**:概括本教程覆盖的主要内容,强调学习IntelliJ IDEA的重要性和实际应用场景。 - **后续学习路径**:推荐进一步学习资源和技术方向,鼓励读者不断探索和发展。
- 配置运行/调试配置,如Java应用程序、Web应用、远程调试等。 - 支持打包为可执行JAR或WAR文件,方便部署。 11. **集成开发工具** - IntelliJ IDEA集成了许多开发工具,如Maven、Gradle构建工具,JUnit测试框架...
2. 使用Tomcat远程部署到远程CentOS服务器:配置IntelliJ IDEA以远程部署到服务器,修改Tomcat配置文件,并在服务器上进行测试。 附录部分: 1. IntelliJ IDEA基础配置及概念:包括如何修改代码编辑的字体、设置...
IntelliJ IDEA是一款强大的Java...通过以上步骤,你可以轻松地在IntelliJ IDEA中创建、配置和部署Web应用到Tomcat服务器,享受到高效且流畅的开发流程。不断学习和掌握这些技巧,将极大地提升你的开发效率和代码质量。
这是一个提高开发效率的重要特性,尤其在进行Web应用开发时。 4. 常用技巧: 教程中提到了一些高效开发的技巧,比如Debug跟踪条件变量、LiveTemplate的使用、代码分析、代码重构等。 5. 版本控制/本地历史: 本...
IntelliJ IDEA 远程 debug 连接 Tomcat 实现单步调试的应用场景非常广泛,例如在开发 Web 项目时,可以使用这种方法来调试程序,在生产环境中,可以使用这种方法来排查错误等。 7. IntelliJ IDEA 远程 debug 连接 ...
2. **Java热部署插件JRebel**:介绍了如何安装和使用JRebel来实现Java应用的热部署。 3. **特殊快捷键Alt+Enter**:强调了Alt+Enter组合键在IDEA中的强大功能。 #### 教程总结与使用建议 1. **教程总结**:回顾了...
一旦安装成功,用户可以在IntelliJ IDEA的工具栏上看到新的菜单项或者快捷键,用于触发补丁的部署。在使用之前,需要配置插件的参数,包括远程服务器的地址、端口号、用户名、密码以及目标目录。这些信息通常保存在...
IntelliJ IDEA是一款由JetBrains公司开发的Java集成开发环境(IDE),被广泛应用于各种Java应用的开发,包括Web应用、企业级应用、Android应用等。2017版的IntelliJ IDEA在功能和用户体验上都有了显著的提升,为...
教程会展示如何在IDEA中配置和运行Web应用,以及如何进行前端资源的管理和预览。 在项目构建方面,IDEA支持Maven和Gradle等构建工具,教程会详细介绍如何在IDEA中配置和执行构建任务,包括打包、部署等。 最后,...
- 创建新项目时,需选择项目类型(如Java应用、Web应用、Spring Boot等)和构建系统(Maven或Gradle)。 - 配置项目的源代码目录(src/main/java、src/main/resources等)和其他设置。 3. **代码编辑**: - ...
settings配置文件通常位于C:\Users\{User}\.IntelliJIdea12目录下。 接下来,用户需要选择版本控制插件。IntelliJ IDEA支持多种版本控制系统,包括Git、Subversion(SVN)、ClearCase、CVS、Mercurial(hg4idea)、...
在开发完毕后,可以通过IntelliJ IDEA的部署功能将应用部署到本地或远程的Tomcat服务器上进行测试和运行。整个开发流程遵循最佳实践,能够使开发工作更加系统化、规范化。 总的来说,使用IntelliJ IDEA开发...
6. **配置Tomcat**:对于Web应用,IntelliJ IDEA提供方便的Tomcat服务器集成,可以配置Tomcat路径、部署路径以及启动和停止服务器。 7. **模块间依赖关系**:在项目中,可以管理不同模块之间的依赖,例如对Spring、...
- **配置Tomcat**:IntelliJ IDEA可以集成Tomcat服务器,方便地部署和运行Web应用程序。 - **配置编译class的环境**:设置编译选项,如源代码和目标兼容性,以及编译过程中的其他参数。 - **配置web环境**:针对...