pycharm连接远程服务器进行django项目自动上传和部署

通常想到自动部署,人们想到的都是将代码用git传到repo,然后通过repo自动部署到服务器中,这种方式对于多人协作是非常友好的。但是如果只是想简单地将本地项目目录实时同步到远程服务器,达到实时测试的目的,pycharm给我们提供了一种更为简洁有效的方式。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

操作环境

本地环境

  • Centos7+Gnome桌面
  • Pycharm 2019.3
  • Anaconda3(Python3.7)
  • Django 2.2.10 LTS

远端环境

  • Centos7 无桌面
  • Anaconda3(Python3.7)
  • Django 2.2.10 LTS
  • IP: 172.29.56.178(允许SSH)

为了使得环境因素对测试的干扰降到最低,本地和远程的部署环境尽量保持一致。因为采用SFTP协议进行传输,需要确保本地能成功ssh到远端,不管是密码还是密钥方式。

准备工作

说明一下,出于项目隔离的目的,我对每个项目都用virtualenv创建了独立的根目录。对于virtualenv不了解的朋友可以参考我的另一篇博客《Centos7使用virtualenv创建python开发环境虚拟环境详解》

本地配置

进入本地的test环境,安装django

(test) [fuhx@testmachine test]$ pip install django==2.2.10

创建项目备用

(test) [fuhx@testmachine test]$ django-admin startproject TestAutoSync
(test) [fuhx@testmachine test]$ ll
total 8
drwxrwxr-x 3 fuhx fuhx 4096 May 27 13:16 bin
drwxrwxr-x 3 fuhx fuhx   23 May 27 13:14 lib
-rw-rw-r-- 1 fuhx fuhx  264 May 27 13:14 pyvenv.cfg
drwxrwxr-x 3 fuhx fuhx   43 May 27 13:17 TestAutoSync

这里的TestAutoSync就是我们待会要操作的目录。

远端配置

同样进入test环境(任意环境,名字不一定要是test),安装django

(test) (base) [root@ai-therm test]# pip install django==2.2.10

创建一个空目录,用来和本地的项目目录进行同步

(test) (base) [root@ai-therm test]# mkdir TestAutoSync
(test) (base) [root@ai-therm test]# ll
total 8
drwxr-xr-x 3 root root 4096 May 27 14:28 bin
drwxr-xr-x 3 root root   23 May 27 14:27 lib
-rw-r--r-- 1 root root  245 May 27 14:27 pyvenv.cfg
drwxr-xr-x 2 root root    6 May 27 14:29 TestAutoSync

需要确保ssh的用户在这个目录具有写操作权限。

Pycharm配置

ssh配置

下面用pycharm打开本地项目,注意是在manage.py的上一级目录,不然django项目会有问题

1-open.png

之后进入远程部署配置,Tools-Deployment-Configuration

2-configuration.png

点左边的加号,选择sftp

3-sftp.png

填入相关信息如下,这里将远端的Root path设定为刚才我们创建的空目录

4-info.png

如果ssh的信息无误,点击Test Connection会提示成功

5-test.png

目录映射配置

之后进入Mappings选项卡,将本地的目录和远端的目录映射起来。需要注意这里的远端目录的根目录是以上面设定的Root path为准

6-mapping.png

如果有不想同步的子目录可以去第三个选项卡Excluded Paths进行剔除,我这里就不选了。

自动创建不存在目录

打开如下Options

7-options.png

Create empty directories勾选上,当远端有目录不存在时会自动创建

8-empty.png

设置自动同步

Automatic Upload勾选上,这样只要本地目录有文件更改都会自动进行上传

9-auto.png

效果演示

首次同步先进行手动操作,将本地目录和远端目录的内容同步到一致。点击下面的按钮进行手动上传

10-upload.png

页面下方会显示同步的内容和进度

11-message.png

去远端检查,发现成功进行了同步

(test) (base) [root@ai-therm TestAutoSync]# ll
total 4
-rw-r--r-- 1 root root 632 May 27 13:17 manage.py
drwxr-xr-x 2 root root  74 May 27 15:19 TestAutoSync

下面来检测下自动同步功能,编辑urls.py文件,每次保存都会看到下面有自动同步的消息不断弹出来

12-urls.png

去远端查看发现文件成功被自动同步

(test) (base) [root@ai-therm TestAutoSync]# cat urls.py 
"""TestAutoSync URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/'),
]

这样就达到自动同步的目的了,同时因为两边的环境都是一样的,所以在本地测试正常的代码同步到远端基本也是可用的,这样就方便测试人员及时连接过去测试了。

总结

当然,除了上传到远端服务器,pycharm还可以从远端进行下载,以及两边文件的比较和同步,不过这些功能用的就比较少了。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值