python服务器开发debug_PyCharm进行远程开发和调试linux服务器

简介:

或许我也应该迁移到linux环境去开发。

最近写的一些小东西,在wnidows上开发,在windows上调试,都很正常。可是一旦放进linux服务器,就歇菜了。

那么我们有什么办法处理这个windows和linux的兼容问题呢?在linux开发,或者在linux环境下开发。看着差不多,但是意思真不一样。

在linux开发,那就是用linux操作系统进行开发。

在linux环境下开发,那就不限于在linux操作系统进行开发,我们可以在windows下写代码,放在linux环境中执行。

不去换操作系统了,直接在windows下写代码,用linux环境执行吧。

查着开放了docker的2375,2376,使用了SSL证书,结果发现只是用pycharm管理docker服务,还没我用daocloud管理方便,废弃了。

一:创建linux环境镜像

虽然我有个NUC跑着fedora(linux),但是我喜欢部署到alpine-docker里面去,而且也不希望任何开发环境再把我的nuc搞乱,那么还是用docker创建一个可以用来执行python解析的环境吧。

1.docerfile

from alpine:3.8

MAINTAINER jackadam

#变更源

# 安装包源切到中科大, 国内访问加速

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镜像。

2019-10-24更新,添加  apk upgrade,解决部分库版本不兼容的问题。

2.build.sh

#使用docker

echo停止容器

docker stopssh

echo删除容器

dockerrm ssh

echo临时禁用selinux

setenforce0

echo重建镜像

docker build-t ssh.echo恢复启用selinux

setenforce1

echo启动容器

docker run-d -t --restart=always --privileged --name ssh -p 2222:22 ssh#下面使用docker-compose

#!/bin/bashecho暂停selinux

setenforce0

echo停止容器

docker-compose -f ssh.yaml downecho重建镜像

docker-compose -f ssh.yaml buildecho启动容器

docker-compose -f ssh.yaml up -decho重新打开selinux

setenforce1

使用这个脚本来创建镜像,并启动容器。因为我老忘记selinux,重启,删除……

反正用着方便。

更新使用docker-compose

3.尝试远程登录,并安装python

Winscp,putty,都可以正常登录这个2222端口的容器即可。

安装python的命令是:apk add python3

二:安装python3

1.修改dockerfile

from alpine:3.8MAINTAINER jackadam#变更源

# 安装包源切到中科大, 国内访问加速

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 &&\

#生成KEYssh-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 python3sudo &&\

pip3 install -i http://pypi.douban.com/simple --upgrade --trusted-host pypi.douban.com pip setuptools

#开放22端口

EXPOSE22CMD/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.7MAINTAINER jackadam#变更源

# 安装包源切到中科大, 国内访问加速

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密码

RUNecho root:123456 |chpasswd

#生成KEY

RUNssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -P '' -N ''#允许远程登录

RUNsed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config

#开放22端口

EXPOSE22#这里增加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方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值