代码同步

开发机配置方式一:写一个py脚本(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: UTF-8 -*-
import sys
import os

# 添加pyftpdlib安装路径到Python路径
sys.path.append('/home/opt/deck/1.0/python/2.7.17/lib/python2.7/site-packages')

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer


def main():
# 初始化验证器
authorizer = DummyAuthorizer()

# 创建有读写权限的用户和只读权限的匿名用户
authorizer.add_user('dongjiaqi04', 'Weilexierwanasi1', '.', perm='elradfmwMT')
# 允许匿名登录,不要允许,安全部会扫描匿名登录!
# authorizer.add_anonymous(os.getcwd())

# 实例化 FTPHandler 类
handler = FTPHandler
handler.authorizer = authorizer

# 自定义提示信息
handler.banner = "pyftpdlib based ftpd ready."

# Specify a masquerade address and the range of ports to use for
# passive connections. Decomment in case you're behind a NAT.
#handler.masquerade_address = '151.25.42.11'
handler.passive_ports = range(8300, 8400)

# FTP 服务监听于 0.0.0.0:2121
address = ('', 8999)
server = FTPServer(address, handler)

# 连接限制
server.max_cons = 256
server.max_cons_per_ip = 20

# 开启 FTP 服务
server.serve_forever()

if __name__ == '__main__':
main()
1
2
3
4
5
6
7
8
9
10
11
12
13
# 启动
nohup python ftp.py &

#缺少依赖
# 安装兼容 Python 2.7 的旧版本 pyftpdlib
pip install "pyftpdlib<1.6.0"

#看一下
netstat -tlnp | grep 8999
ps aux | grep "[p]ython ftp.py"

#关闭
pkill -f "python ftp.py"

开发机配置方式二:安装兼容 Python 2.7 的旧版本 pyftpdlib

第二种方法可能是我代码空间权限问题,直接连连不上,而且也不能配置密码和用户,还是推荐方法一。

安装proftpd

具体方法百度或AI。

开发机修改配置文件

大概位置:/etc/proftpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ServerName                      "ProFTPD server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
DefaultServer on
DefaultRoot ~ !adm

# 用户使用平时通过ssh或者webrelay登陆的用户
User work
Group work

# 允许从任何IP访问
<Global>
<Limit LOGIN>
Allow from all
AllowUser work
</Limit>
</Global>

Port 8021
# 设置被动模式(PASV)端口范围,公司只允许暴露8000-8999的端口
PassivePorts 8000 8999
# MasqueradeAddress 公网IP #当需要公网访问的时候可以把这个地址填成公网IP,否则proftpd默认会使用内网IP

开发机验证是否配置成功

以此输入

systemctl restart proftpd

ftp localhost 8021

根据提示输入ssh或者webrelay登陆的用户名和密码。

登陆成功后显示如下:

1
2
3
ftp> 
#执行ls后显示出/home/work目录下的文件,表示成功
ftp> ls

本地验证是否成功

mac上打开终端,依次输入如下命令,进行验证:

1
2
3
4
5
brew install lftp #使用homebrew安装的,如果没有homebrew,先安装homebrew
lftp -u work -p 8021 你的虚拟机IP
# 密码还是work用户的登录密码。
lftp -u anonymous -p 8021 你的虚拟机IP

登陆成功后显示如下:

1
lftp work@10.118.141.177:~>

输入ls,能够输出正确的文件列表表示成功。


本地goland连接

启动开发机的ftp后,进入goland设置代码同步

先安装这两个插件。

20260128193138
选择工具-部署-配置,设置ftp连接。

20260128193154
配置ftp连接,填自己开发机ip和启动的ftp地址,用户名与密码,测试连接。

20260128193211
设置代码映射

20260128193223
开启自动上传

20260128193233
开启以后手动推送一次,以后执行cmd+s 改动就能自动同步了

20260128193245

一、为什么需要远程调试?

很多时候服务只能运行在Linux环境,或者部署在开发机的情况下,需要在开发时使用远程调试。该功能最好搭配远程ftp服务同步代码

二、安装Delve (世界上最好用的Go语言调试工具)

Go的代码调试工具常见的有gdbdlvdlv 是专门针对Go语言设计的调试工具,也是 Goland中内置的代码调试工具,灰常好用。 假设远程主机上已经安装了Go SDK,在远程主机上可以执行以下命令安装dlv调试工具:

1
go install github.com/go-delve/delve/cmd/dlv@latest

三、启动远程调试程序

安装成功dlv后,在远程主机上的程序目录内执行以下命令启动服务,需要注意的是如果程序中有参数,可以在后面加 --然后直接输入程序参数

1
2
3
4
5
#以medask为例
dlv exec --headless --listen=:8345 --api-version=2 --accept-multiclient ./output/bin/ae-app-652 -- -conf ./conf/app.toml

# 下面命令中 `--` 后面的参数为 程序的参数,`--` 代表分隔符
dlv debug --headless --listen=:8345 --api-version=2 --accept-multiclient -- -conf ./conf/app.toml

四、在Goland中创建远程调试

20260128193332
配置完成后,点击启动即可

20260128193343

五、使用

配置好之后,远程主机中先执行启动命令,然后本地debug器连接到远程的端口之后,远程机器上才开始执行代码,此时打断点即可进行调试。