Pycharm远程连接服务器

1 远程文件夹映射

# linux上的文件修改
 可通过Pycharm 或者 sublime等工具远程连接 下载-->修改-->上传
 

# eg: Pycharm 
    
1.选项卡:Tools ---> Deployment ---> Configuration

2.增加SFTP模式连接:SSH Configuration
  ip地址、端口(22)、用户名、密码
    
3.配置映射:Mapping   # 将本地文件夹和远程映射关联上

4.工作目录栏 ---> 右键---> Deployment  # 就可以将远程或者本地文件上传下载


# 配置 自动上传文件
选项卡:Tools ---> Deployment ---> Automatic upload

# 配置 排除一些文件上传
选项卡:Tools ---> Deployment --->  Configuration  

---> Exclude Paths  ---> local path(选择本地一些不用上传的文件)

2 Pycharm远程连接Linux服务器开发

原理差不多 都是SSH配置 + SFTP 安全文件传输协议

参考地址:https://blog.csdn.net/hehedadaq/article/details/118737855

# 以远程服务器的python解释器 运行代码
1.选项卡:File ---> Settings---> Python Interpreter

2.添加解释器: SSH Interpreter  ---> 选择新的ssh用户配置 或 已存在的ssh用户配置


3.选择远程服务器的python解释器 所在位置
  # Add Python Interpreter 窗口下
  ---> Interpreter: /usr/bin/python   

  # 将会让代码以root权限执行
  勾选 Execute code using this interpreter with root privileges via sudo


  # 注:Linux服务器上 查看 命令的所在文件夹位置
        whereis python3
         >>> python3: /usr/bin/python3 /usr/bin/python3.6  /usr/local/python3


4.目录配置映射:Mapping   # 将本地文件夹和远程映射关联上
  # Add Python Interpreter 窗口下
  ---> Sync folders  ---> 本地目录 映射到 远程目录

3 pycharm远程连接Docker开发

3.1 通过ssh服务,连接已在运行中的docker容器

# 原理
1.pycharm 通过ssh远程连接服务,直接连接 服务器上 docker已启动的容器   # 注:是直接连接 docker的一个容器

2.并设置pycharm的python interpreter 为 SSH Interpreter
  >>> 通过ssh(ip + 容器映射到服务器上的端口),指定为 docker容器内的 python解释器 


# 前提
docker已启动的容器内 需要支持的服务:ssh服务、以及python环境

参考地址:https://blog.csdn.net/Thanours/article/details/109265315

参考地址:https://cloud.tencent.com/developer/article/1649280

  • 1.创建并运行一个带有ssh和python的docker容器 eg: centos7 或者 pytorch
### 1.先创建一个支持SSH服务的镜像 centos:7-ssh

# 1.1 制作带有ssh 的centos镜像
# 创建基础centos容器
docker run -di --name centos7 centos:7   # 错误
docker run -di --name centos7 --privileged=true -p 2222:22 centos:7 /usr/sbin/init  
  # 要以特权模式创建,不然ssh服务,用systemctl启动不了

# 进入容器装软件   
docker exec -it centos7 /bin/bash  

# 安装openssh-server
yum update -y && yum install openssh-server -y

# 启动ssh服务
systemctl start sshd  # status、restart、enable

# 设置为开机自启动
systemctl enable sshd

# 修改容器内root的密码
passwd 
1

# 把容器做成镜像
docker commit centos7 centos:7-ssh   

# eg:
docker run -d --name centos7-ssh -p 2222:22 centos:7-ssh /usr/sbin/sshd -D 
        
        
# 1.2 或 使用Dockerfile 创建带有ssh的镜像
# 编写Dockerfile
vim Dockerfile
# 生成的新镜像以centos7镜像为基础
FROM centos:7
# 升级yum
RUN yum -y update
# 安装openssh-server
RUN yum -y install openssh-server

# 生成sshkey    不然 /usr/sbin/sshd -D 启动不了
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

# 变更root密码
RUN echo 密码 | passwd --stdin root
# 开放窗口的22端口
EXPOSE 22
# 运行脚本,启动sshd服务
CMD  ["/usr/sbin/sshd", "-D"]

# 构建镜像
docker build -t centos:7-ssh .

# eg:
docker run -d --name centos7-ssh -p 2222:22 centos:7-ssh  
    
    
### 2.基于ssh的centos镜像,再创建带有 python3环境的镜像 python_env

# 2.1 编写Dockerfile
vim Dockerfile
# Using Centos for base image
FROM centos:7-ssh

# author label
MAINTAINER Edmond

# install timezone gcc
ENV ENVIRONMENT DOCKER_PROD
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && yum makecache \
  && yum install -y wget aclocal automake autoconf make gcc gcc-c++ python-devel mysql-devel bzip2 libffi-devel epel-release \
# install python 3.7.1
  && wget https://npm.taobao.org/mirrors/python/3.7.1/Python-3.7.1.tar.xz \
  && tar -xvf Python-3.7.1.tar.xz -C /usr/local/ \
  && rm -rf Python-3.7.1.tar.xz \
  && cd /usr/local/Python-3.7.1 \
  && ./configure && make && make install \
# install pip3
  && yum install -y python-pip \
  && yum install -y python-setuptools \
  && pip3 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
  && pip3 install setuptools==33.1.1 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
  && yum clean all

# copy project
COPY . /project

# 运行脚本,启动sshd服务
CMD    ["/usr/sbin/sshd", "-D"]

# 2.2 构建执行镜像
docker build -t python_env .


### 3.基于自定义好的docker镜像,创建容器
docker run -di --name python_env -p 2222:22 python_env

docker exec -it python_env /bin/bash

cd /project
  • 2.配置Pycharm的调试环境,使用SSH连接上python_env
# 1.选择菜单栏的File > Setting > Project Interpreter > Add > 添加解释器: SSH Interpreter
    
    
# 2.配置添加SSH调试环境    选择新的ssh用户配置 或 已存在的ssh用户配置
ip地址、端口(2222 容器映射到服务器上的端口)、用户名(root)、密码


# 3.配置添加SSH调试环境中,使用的python3路径
首先在容器中,查看一下python3的执行文件路径:whereis python3

  # Add Python Interpreter 窗口下
  ---> Interpreter: /usr/bin/python  


# 4.配置目录映射:  # 将本地文件夹和远程映射关联上
  # Add Python Interpreter 窗口下
  ---> Sync folders  ---> 本地目录 映射到 远程目录(/project)

3.2 通过TCP socket,连接docker服务,pycharm运行代码再自动创建容器

参考地址:https://www.cnblogs.com/cqzlei/articles/16811603.html

# 原理
1.pycharm 通过socket连接,直接连接 服务器上的docker   # 注:是连接 docker服务,而不是连接的docker的一个容器

2.设置pycharm的python interpreter 为 docker
  再具体选择 带有python环境的 镜像
    
  或 根据自定义docker的Dockerfile文件,构建镜像  
  # 一般是这种,因为上面docker仓库中带python的镜像,无法安装模块
    
3.pycharm运行代码时,会根据选择的镜像,自动临时创建容器


# 前提
1.需要修改docker服务的配置,使得能通过远程 socket连接
2.本地需要Dockerfile文件,来构建创建容器所需的镜像
  • 1.服务器上,配置docker远程服务
# 两种方式,使得docker能被远程socket连接


### 方式1:直接修改docker服务的配置文件
# 1.修改docker服务配置
vim /lib/systemd/system/docker.service
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock

# 2.设置环境变量  
echo 'export DOCKER_HOST=tcp://0.0.0.0:2376' >> /etc/profile
source /etc/profile   # 刷新

# 3.重启docker服务
systemctl daemon-reload && systemctl restart docker


            
### 方式2:新增 自定义docker daemon的守护进程 的设置文件    推荐
# 1.添加docker daemon配置
vim /etc/docker/daemon.json
{
  "hosts": ["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"]
}

# 2.修改docker服务配置   不修改会启动失败,daemon.json与docker服务配置 设置冲突
vim /lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

# 3.重启docker服务
systemctl daemon-reload 
systemctl restart docker


# 测试
curl 127.0.0.1:2376/version
  
http://192.168.45.200:2376/version
  • 2.配置Pycharm的调试环境

1.配置连接远程的docker

选择TCP socket >> 填入:tcp://101.133.225.166:2376 >> Certificates folder暂时不填 >> Path mappings:暂时删掉 >> 点击ok

2.配置文件的调试环境

3.可自定义容器运行时的配置

包括绑定端口、目录挂载、环境变量等

4.部署或者直接运行调试代码

注:可以看到服务器内由pycharm远程连接,拉取的镜像 和 创建的容器

posted @   Edmond辉仔  阅读(281)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示