如何在PyCharm中自动为Dreamhost Flask应用生成tmp/restart.txt?
嘿,我刚好折腾过类似的场景,给你几个在PyCharm里直接实现自动刷新Passenger缓存的实用办法,亲测在Dreamhost上能用:
方法1:利用PyCharm部署后自动执行SSH命令(最直接)
这应该是最贴合你需求的方案,每次PyCharm部署代码(手动或自动)后,自动帮你执行touch tmp/restart.txt:
- 打开PyCharm的部署配置:
File → Settings → Build, Execution, Deployment → Deployment - 选中你已经配置好的Dreamhost服务器,切换到Tools标签页
- 在「Deployment」下方的「After deployment」区域,点击
+号添加一个操作 - 选择「Run SSH external tool」,然后配置你的Dreamhost SSH连接(填服务器地址、用户名、密码/密钥,和你平时SSH登录的信息一致)
- 在命令输入框里填:
touch /绝对路径/到你的Flask应用目录/tmp/restart.txt,一定要用绝对路径,避免路径错误 - 保存配置后,下次你手动触发部署(或者开启自动部署时),PyCharm会在文件上传完成后自动执行这个命令,帮你刷新Passenger缓存
方法2:结合Git钩子实现代码同步+自动刷新
就是你看到的用Git仓库的方案(其实不用GitHub,直接服务器端Git仓库就行),适合习惯用Git管理代码的场景:
- 在Dreamhost服务器上创建裸Git仓库:
登录SSH终端,执行:mkdir ~/myapp-repo.git && cd ~/myapp-repo.git && git init --bare - 添加post-receive钩子:
进入裸仓库的hooks目录:cd ~/myapp-repo.git/hooks
创建post-receive文件,写入以下内容(替换成你的应用绝对路径):
给钩子文件加执行权限:#!/bin/bash # 把代码同步到应用目录 GIT_WORK_TREE=/绝对路径/到你的Flask应用目录 git checkout -f # 刷新Passenger缓存 touch /绝对路径/到你的Flask应用目录/tmp/restart.txtchmod +x post-receive - 在PyCharm里配置远程Git仓库:
在PyCharm的Git设置里,把刚才创建的服务器裸仓库添加为远程仓库(地址类似ssh://你的用户名@你的Dreamhost域名/~/myapp-repo.git)
之后每次在PyCharm里push代码到这个远程仓库,服务器端的钩子就会自动把代码同步到应用目录,同时执行touch命令刷新缓存
方法3:配置远程工具手动触发(适合偶尔手动刷新)
如果你不想每次部署都自动刷新,只想在需要的时候手动执行,可配置PyCharm的远程外部工具:
- 打开
Settings → Tools → Remote Tools - 点击
+号新建一个远程工具,配置你的Dreamhost SSH连接 - 在「Command」里填:
touch /绝对路径/到你的Flask应用目录/tmp/restart.txt - 保存后,你可以通过顶部菜单
Tools → Remote Tools找到这个工具,点击就能直接执行,不用再开SSH终端
小提醒
- 确保你的SSH用户对应用目录下的
tmp文件夹有读写权限 - 所有路径务必用绝对路径,不然很容易因为工作目录不同导致命令执行失败
- 如果开启自动部署,记得在PyCharm的部署配置里勾选「Upload changed files automatically to the default server」
内容的提问来源于stack exchange,提问作者rsgny
相关产品推荐
相关产品推荐

