定制go get的包路径
缘由
当工程使用gitlab作为代码管理工具,各个工程会按照群组分类,但代码中引入包名的时候却不希望路径带有群组,又或者gitlab域名带有端口号。这样go get下来的路径会不美观。如:
项目路径为 |
⚠️注意:
若想要go get gitlab上的项目,需要在命令行执行如下命令。
git config --global url."git@xxx.xxx.com:".insteadOf "https://xxx.xxx.com:90/"
在~/.gitconfig文件中查看是否配置成功。
思路
利用反向代理将xxx.xxx.com:90/Gxxx映射到xxx.xxx.com上,本地只要go get xxx.xxx.com/xxx会去真实的路径上拉取代码。
实现
前置条件
1. 阿里云服务器一台(centos)
2. 服务器配置好go环境
3. 执行go get github.com/denyu95/govanityurls路径映射
路径映射由govanityurls项目完成,启动govanityurls即可。(监听8080端口)
1. 在root目录下创建govanityurls目录。
2. 放入vanity.yaml配置文件。
3. 使用Supervisord守护进程的工具启动govanityurls。代理转发
配置nginx代理转发 80端口-》8080端口
1. https 需要申请证书
2. 得到 xxx.xxx.pem 和 xxx.xxx.key 放到 /etc/nginx/ssl 目录下
3. 启动nginx配置文件
vanity.yaml
/gowechat:
repo: https://github.com/xxx/gowechat
/subscriptionserver:
repo: https://xxx.xxx.com:90/xxx/subscriptionserversupervisord.d/govanityurls.ini
[program:govanityurls]
directory = /root/govanityurls
command = /root/go/bin/govanityurls -host xxx.xxx.com
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stopasgroup=false
killasgroup=false
stdout_logfile = /root/log/go.lognginx.conf
server {
listen 80;
listen 443 ssl;
server_name xxx.xxx.com;
ssl_certificate /etc/nginx/ssl/xxx.xxx.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.xxx.key;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
补充
团队需要维护vanity.yaml配置文件,需要不断补充项目映射关系。