家里装了移动送的300Mbps宽带,8月份特殊时期结束以后,突然发现Github的代码提交成了一大难点,还是用了VPN等方式,仍然存在概率性问题。特此记录此方法。

1、查找真实IP

Github网站可以打开,但是提交代码就不行。先查看ssh.github.com 这个域名对应的ip是哪个?

这个可以直接在 https://ipaddress.com/website/ssh.github.com。查到该ip。

2023-09-16_225415.png

2、查找该IP是否可用。

ssh -T -p 443 [email protected]
The authenticity of host '[140.82.114.36]:443 ([140.82.114.36]:443)' can't be established.
ECDSA key fingerprint is SHA256:p2QA
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[140.82.114.36]:443' (ECDSA) to the list of known hosts.
XXXXXX

到此基本可以确定为有用的了,则进行配置直接访问该地址

3、这时候,找到当前用户目录下的.ssh/config 文件,如果没有就自己建一个。只要将Hostname ssh.github.com换成ip地址140.82.112.35即可。

Host github.com
Hostname 140.82.112.35
Port 443


基于Python在Win环境下总是出现各类问题,想着采用新的WSL环境来部署运行Python项目。

一、安装WSL系统,参考微软官方教程

wsl --install

安装完成后即可等待重启,然后运行Unbutu,首次会提示初始化,并设置用户名和密码,之后可在计算机里看到Linux目录。

二、安装pip等工具

Unbutu系统自带了python3,但是发现无pip命令,执行安装(sudo apt install python3-pip)时报错,报错如下

Package python3-pip is not available but is referred to by another package.
This may mean that the package is missing, has been obsoleted, oris only available from another source
E: Package 'python3-pip' has no installation candidate

执行以下命令后,即可

sudo apt-get update
sudo apt-get upgrade  #Optional
sudo apt install python3-pip

三、后续安装virtualenv时会提示警告,导致无法使用该命令

WARNING: The script virtualenv is installed in '/home/desk/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

解决方案如下:

echo 'export PATH=$PATH:$HOME/.local/bin' >>~/.bashrc
source ~/.bashrc


Homebrew 是适用于 MacOS和 Linux 下的软件包管理工具,类似与 Yum,Apt等,安装软件非常方便快捷。MacOS 使用 Homebrew 需要先安装,但是使用官网提供的安装命令,在国内直接就会返回失败。

/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
# 卸载
/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/uninstall.sh)"


注意点:

1、需要保证两边环境一致,仅以Win为例进行了测试,按理应该一样。

2、安装完毕后没有虚拟环境,可先将全局包进行安装。

3、虚拟环境和系统正式环境操作一致,区别仅在于是否激活虚拟环境,即当前pip是针对的什么环境,可通过pip list进行查看

一、具体步骤

1. 生成安装包列表文件

    # 安装包列表保存到文件requirements.txt中,文件名是自己定义,
    # 如果文件已经存在会被覆盖更新,不存在会自动创建
    # 虚拟环境目录下执行这个命令,则打包的虚拟环境的内容
    # 否则生成的文件内容是系统python版本使用的安装包列表
    pip freeze > requirements.txt

2. 将包列表文件中的所有包下载到文件夹下

    # [.\packages]为保存安装包的路径,不存在会被创建
    # [requirements.txt]为前一步生成的包列表文件
    pip download -d  .\packages  -r requirements.txt

3. 将①和②中生成的包列表文件和安装包文件夹复制到另一台上

4. 依据包列表文件以及安装包文件夹来安装包


1、首先确保已正确安装nginx,supervisor,并正常启用nginx和supervisor

yum install nginx supervisor
systemctl start nginx
systemctl enable nginx
systemctl start supervisor
systemctl enable supervisor

2、新建Flask项目和相关虚拟环境包等

virtualenv venv #新建虚拟环境
. venv/bin/activate
pip install gunicorn

3、修改app.py文件

import os
from flask import Flask, request, jsonify

app = Flask(__name__)

# gitEE中webhooks的secret
gitee_secret = 'XXXX'

@app.route('/hooks', methods=['POST'])
def post_data():
    # 认证签名是否有效
    signature = request.headers.get('X-Gitee-Token', '')
    print("获取到访问token:%s", signature)

    if signature != gitee_secret:
        return "token认证无效", 401
    # 运行shell脚本,更新代码
    os.system('sh deploy.sh')
    return jsonify({"status": 200})

if __name__ == '__main__':
    app.run()

4、新建deploy.sh文件

echo '========Start DEPLY========'
echo '--------enter Dir ------------'
cd /home/opc/XXXX
echo '--------start git pull------------'
git pull
echo '--------init requirements------------'
. venv/bin/activate
pip install -r requirements.txt
deactivate
echo '-----ex root-----'
sudo -i
echo '-----restart supervision-----'
supervisorctl restart XXXX
echo '----- reload nginx-----'
nginx -s reload
echo '========END DEPLY========'

5、新建supervisor.ini文件(也可省略,手工启动即可)

;[include]
;files = relative/directory/*.ini
[program:XXXX]directory=/home/opc/XXXX
command=/home/opc/XXXX/venv/bin/python3 /home/opc/XXXX/venv/bin/gunicorn -b 127.0.0.1:1111 app:app
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true

6、将supervisor.ini文件拷贝到/etc/supervisor.d/目录下,并重启supervisord