花式使用 proxy 访问 Github - Github No.1, Proxy No.2, XXX No.7

文章目录

    转投 Sage 开发 wordpress 模板,初始化 Sage 代码目录折腾了我半天时间。

    遇到的第一个问题是, composer 无法拉取 dev-master 的代码

    $ composer create-project roots/sage your-theme-name dev-master
    

    由于我使用的是 composer 国内镜像,开始怀疑是国内镜像有问题,然后清空了 ~/.composer 切换为官方镜像,依然没有响应。

    但是拉取 release 版本,却一切正常

    $ composer create-project roots/sage your-theme-name
    

    我猜测,composer 的逻辑大概是,缓存了 release 版的代码,而 dev-master 的代码并没有及时缓存,需要从 github 服务器拉取。
    而国内近期访问 github 又有问题(要么超时,要么无法访问),所以导致无法通过 composer 初始化 Sage 的代码。

    于是,我妥协了,从 Github Web 上下载了最新的 Sage Zip 代码包,置于 themes 目录下解压,然后 rename 成 your-theme-name,
    再手动运行

    composer install
    

    果然可以了。

    然而,这只是噩梦的开始!

    使用 Yarn 安装依赖的时候,报错

    error An unexpected error occurred: “https://github.com/rmarscher/monkey-hot-loader.git: connect ETIMEDOUT 192.30.253.112:443”.

    ping 192.30.253.112
    ping 192.30.253.113
    

    均没有响应,说明 github 又被限速了。

    Fuck! 好在我电脑上永远开启着 proxy,为 git 配置一下 proxy

    git config --global http.proxy 'socks5://127.0.0.1:1080' 
    git config --global https.proxy 'socks5://127.0.0.1:1080'
    

    对应的 ~/.gitconfig 文件中,自动增加了这两个配置

    [http]
    	proxy = socks5://127.0.0.1:1080
    [https]
    	proxy = socks5://127.0.0.1:1080
    

    然而,yarn 运行超时依旧,但是我已经可以正常的 git pull/push github 上的代码了。

    这说明 yarn 实际上还有对 github 的访问逻辑,但是这些请求不是通过 git 进行的。

    那么解决的办法就是需要让终端命令也能够通过 proxy 访问 github

    Ubuntu 上让 proxy 支持终端命令

    sudo apt-get install polipo
    sudo vim /etc/polipo/config
    

    增加配置

    socksParentProxy = "localhost:1080"
    socksProxyType = socks5
    

    重启 polipo 服务,使配置生效

    sudo service polipo stop
    sudo service polipo start
    

    确认生效的方法

    $ curl ip.gs
    当前 IP:x.x.x.x 来自:中国山东烟台 联通
    $ http_proxy=http://localhost:8123 curl ip.gs
    当前 IP:x.x.x.x 来自:美国纽约州纽约 digitalocean.com
    

    然后再通过 proxy 执行 yarn

    http_proxy=http://localhost:8123 yarn
    

    终于,可以继续敲代码了。。。

    国内的程序员真是苦啊!

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式