PyCharm進行遠程開發和調試linux服務器

簡介:

或許我也應該遷移到linux環境去開發。python

最近寫的一些小東西,在wnidows上開發,在windows上調試,都很正常。但是一旦放進linux服務器,就歇菜了。linux

那麼咱們有什麼辦法處理這個windows和linux的兼容問題呢?在linux開發,或者在linux環境下開發。看着差很少,可是意思真不同。docker

在linux開發,那就是用linux操做系統進行開發。windows

在linux環境下開發,那就不限於在linux操做系統進行開發,咱們能夠在windows下寫代碼,放在linux環境中執行。安全

不去換操做系統了,直接在windows下寫代碼,用linux環境執行吧。bash

查着開放了docker的2375,2376,使用了SSL證書,結果發現只是用pycharm管理docker服務,還沒我用daocloud管理方便,廢棄了。服務器

一:建立linux環境鏡像

雖然我有個NUC跑着fedora(linux),可是我喜歡部署到alpine-docker裏面去,並且也不但願任何開發環境再把個人nuc搞亂,那麼仍是用docker建立一個能夠用來執行python解析的環境吧。app

1.docerfile

from alpine:3.8
MAINTAINER jackadam<jackadam@sina.com>
#變動源
# 安裝包源切到中科大, 國內訪問加速
RUN { \
        echo 'http://mirrors.ustc.edu.cn/alpine/v3.8/main'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/v3.8/community'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/main'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/community'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/testing'; \
    } > /etc/apk/repositories

# 設置默認時區爲亞洲/上海 (沒有北京可選)
RUN apk upgrade   && \
    apk add --no-cache apk-tools tzdata openssh && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    apk del tzdata  && \
#修改root密碼
    echo root:123456 | chpasswd  && \
#生成KEY
    ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -P '' -N '' && \
#容許遠程登陸
    sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config
#開放22端口
EXPOSE 22

CMD /usr/sbin/sshd -D

使用這個dockerfile建立一個docker鏡像。ssh

2019-10-24更新,添加  apk upgrade,解決部分庫版本不兼容的問題。測試

2.build.sh

#使用docker
echo
中止容器 docker stop ssh echo 刪除容器 docker rm ssh echo 臨時禁用selinux setenforce 0 echo 重建鏡像 docker build -t ssh . echo 恢復啓用selinux setenforce 1 echo 啓動容器 docker run -d -t --restart=always --privileged --name ssh -p 2222:22 ssh #下面使用docker-compose #!/bin/bash echo 暫停selinux setenforce 0 echo 中止容器 docker-compose -f ssh.yaml down echo 重建鏡像 docker-compose -f ssh.yaml build echo 啓動容器 docker-compose -f ssh.yaml up -d echo 從新打開selinux setenforce 1

 

使用這個腳原本建立鏡像,並啓動容器。由於我老忘記selinux,重啓,刪除……

反正用着方便。

更新使用docker-compose

3.嘗試遠程登陸,並安裝python

Winscp,putty,均可以正常登陸這個2222端口的容器便可。

安裝python的命令是:apk add python3

二:安裝python3

1.修改dockerfile

from alpine:3.8
MAINTAINER jackadam<jackadam@sina.com>
#變動源
# 安裝包源切到中科大, 國內訪問加速
RUN { \
        echo 'http://mirrors.ustc.edu.cn/alpine/v3.8/main'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/v3.8/community'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/main'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/community'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/testing'; \
    } > /etc/apk/repositories

# 設置默認時區爲亞洲/上海 (沒有北京可選)
RUN apk upgrade   && \
    apk add --no-cache apk-tools tzdata openssh && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    apk del tzdata  && \
#修改root密碼
    echo root:123456 | chpasswd  && \
#生成KEY
    ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -P '' -N '' && \
#容許遠程登陸
    sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config
    
#這裏增長python3 RUN apk add python3 sudo &&\
    pip3 install -i http://pypi.douban.com/simple --upgrade --trusted-host pypi.douban.com pip setuptools 

#開放22端口 EXPOSE 22 CMD /usr/sbin/sshd -D

更新使用豆瓣源安裝python庫

2.從新生成鏡像

還用上一節的rebuild

3.測試遠程登陸

就用winscp或putty測試

三:配置pycharm部署

1.配置Deployment-Connection

 

和WINSCP的同樣,就是SFTP的ssh配置。Test SFTP connecton,測試經過就能夠了。

2.配置Deployment-Mappings

這個是映射關係。Loacl path,就是項目的本地路徑。Deployment path,就是在服務器上的路徑。不過要加上第一個圖中connection中的Root path。

若是

Root path : /PythonPorject 

Deployment path: /test01

那麼在服務器上的路徑爲:/PythonPorject/test01

四:配置pycharm解釋器

使用 deployment configuration,選擇剛纔命名的部署配置名,設置python解釋器地址,由於我用的python3,默認的沒有python,因此改一下解釋器路徑,選擇到python3就能夠了。

五:hello world

1.編寫代碼

print('hello world.')

2.部署

 

 pycharm中  Tools--Deployment--Upload to test,

上傳完成,一個文件傳輸完成,那個test是個人部署配置名,你的可能會不同。

Automatic Upload(always)自動上傳,我勾選了。

改代碼,不用再手動上傳

3.run一下,跑起來

好了,能夠看到輸出框是遠程執行的,在ssh鏈接的192.168.1.3上執行的。

六:python包管理

1.python包管理

嘗試使用pycharm對這個遠程環境安裝python包,結果報錯。

其實也簡單,由於這個alpine linux docker鏡像沒有sudo。

2.安裝sudo

編輯dockerfile

from alpine:3.7
MAINTAINER jackadam<jackadam@sina.com>
#變動源
# 安裝包源切到中科大, 國內訪問加速
RUN { \
        echo 'http://mirrors.ustc.edu.cn/alpine/v3.7/main'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/v3.7/community'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/main'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/community'; \
        echo 'http://mirrors.ustc.edu.cn/alpine/edge/testing'; \
    } > /etc/apk/repositories && \

# 設置默認時區爲亞洲/上海 (沒有北京可選)
        apk add --no-cache --upgrade apk-tools  openssh  tzdata&& \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    apk del tzdata 
#修改root密碼
RUN echo root:123456 | chpasswd
#生成KEY
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -P '' -N ''
#容許遠程登陸
RUN sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config
#開放22端口
EXPOSE 22

#這裏增長python3
RUN apk add python3 && \
    pip3 install --upgrade pip && \
    pip3 install --upgrade setuptools &&\
    apk add sudo #sudo新增長


CMD /usr/sbin/sshd -D

 

3.測試

rebuild一下

再試試。如今應該能夠在pycharm中管理遠程docker中的python環境,並安裝python包了。

4.另外一種解決方法

不更新dockerfiler也能夠解決,由於開放了ssh鏈接,你也能夠直接ssh登陸,而後安裝sudo。效果同樣的。

七:注意事項

1.部署路徑是合併的,若是上傳失敗,多是遠程沒有這個目錄,手動去建立一下,或dockerfile 中 mkdir一下。

2.pycharm能夠經過sudo來給遠程環境安裝pythan包,可是不能安裝linux系統軟件,系統軟件要在dockerfile中安裝,如安裝sudo。

八:總結

從家裏淘到NUC之後,就一直想着怎麼最大化利用它,本身寫的一些軟件,在windows下運行良好,轉去linux,還要從新調整。直接使用pycharm的遠程解釋器,遠程部署功能,我能夠在windows上寫代碼,跑在linux下,環境也在linux下。方便之後開發linux下的python程序。

並且家裏的NUC也就是做爲家庭服務器來用的。開發一些24小時在線的,或者將來面向服務器部署的軟件。還不影響個人windows筆記本。

也就有了這篇文章。

不過也走了一些彎路,由於pycharm支持管理docker,爲了docker的安全,整那幾個證書密鑰,整了好幾天,發現pycharm管理docker還真不如daocloud方便。

相關文章
相關標籤/搜索