分类 技术杂烩 下的文章

注意点:

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


出于无法使用XXQG,于是就对闲鱼430购买的Pixel 4XL进行还原重置,买的有网络锁的机器,需要重新解锁,用来记录。

1、重置,离线进入手机,开启USB调试模式

2、执行卸载配置

adb shell pm uninstall -k --user 0 com.google.android.apps.work.oobconfig

3、安装相关内容

adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204"

4、重启手机、插卡正常使用


为了记录一些自己的事情,再使用了notion、wolai以及其他一些工具后,还是习惯于搭建自己的博客,故才有了这些记录。建议切换到root用户进行操作。

一、Nginx环境搭建

此部分内容可参考上一篇文章:Nginx配置和SSL证书配置(ACME)

二、PHP环境搭建

此步仅需安装PHP环境搭建,此处安装Mysql和SQLite3两类扩展

apt install -y php7.4-cli php7.4-fpm php7.4-cgi php7.4-mysql php7.4-curl php7.4-json php7.4-mbstring php7.4-imagick php7.4-xml php7.4-zip php7.4-opcache php7.4-sqlite3

三、上传typecho文件即可

下载压缩包并解压到/var/www/html文件夹即可。

鉴于近期1M的华盛顿小鸡访问速度太慢,申请了Azure的机器(Debian)来重新部署,因此需要搭建一套Typecho,首先要做的就是完成基础Nginx的部署和SSL证书的访问。以下操作建议切换至root,避免权限问题。

一、Nginx环境搭建。

目标:通过IP或者域名能够以80端口打开Nginx初始页面

1、更新系统环境

apt update

2、自动化安装Nginx

apt install nginx

3、此时已能正常打开页面(index.html)

二、配置SSL证书并自动更新

该章节内容主要基于Githubhttps://github.com/acmesh-official/acme.sh进行执行,适当根据需要做了部分调整。

1、执行acme.sh,将email后的邮箱调整为自己邮箱

curl https://get.acme.sh | sh -s [email protected]

执行完毕该脚本后,可看到①当前目录下生成了.acme.sh/;②自动创建了cronjob定任务, 每天 0:00 点自动检测所有的证书并更新。

2、生成证书,本初主要采用手动DNS方式

Ⅰ、调用发行命令获取CDN(Cloudflare)所需配置信息,将mydomain.com调整为自己的域名。并在Cloudflare添加一条TXT记录(见下图1、图2)。若出错则执行source ~/.bashrc

acme.sh --issue --dns -d mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

1692373773344383.png

图1

1692373887236508.png

图2


Ⅱ、Cloudflare配置完并保存后,执行renew命令,则可生成证书

acme.sh --renew -d mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

Ⅲ、至此证书申请环节已完成,放置在域名文件夹下

三、Nginx配置SSL

1、将上一步生成的证书拷贝到Nginx目录下。新建文件夹并执行命令。

touch /etc/nginx/ssl_key/
acme.sh --install-cert -d example.com --key-file /etc/nginx/ssl_key/key.pem --fullchain-file /etc/nginx/ssl_key/cert.pem --reloadcmd "systemctl force-reload nginx"

2、修改ngxin配置文件。此处需注意默认配置文件的defaul情况。此处采用新建配置文件形式。

cd /etc/nginx/conf.d/
touch my_blog.conf

3、调整配置文件内容,本配置以php为准,因用于搭建typecho。

server {
    # 监听HTTP默认的80端口
    listen 80;
    # 如果80端口出现访问该域名的请求
    server_name myexample.com;
    # 将请求改写为HTTPS(这里写你配置了HTTPS的域名)
	rewrite ^(.*)$ https://www.leaou.com;
}

server {
	listen 443 ssl;#设置SSL功能
	server_name leaou.com www.leaou.com;  #localhost修改为证书绑定的域名
	root /var/www/html;
	index index.php;
		
	ssl_certificate /etc/nginx/ssl_key/cert.pem;   #证书的文件名
	ssl_certificate_key /etc/nginx/ssl_key/key.pem;   #证书的密钥文件名
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #加密套件
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #配置协议
	ssl_prefer_server_ciphers on;   

	access_log /var/log/nginx/leaou.com_access.log;
	error_log /var/log/nginx/leaou.com_error.log;

	client_max_body_size 64M;
		
    location = /favicon.ico {
		log_not_found off;
		access_log off;
    }

	location = /robots.txt {
		allow all;
       	log_not_found off;
       	access_log off;
	}

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_read_timeout 3600s;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 128k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
    }
	
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }
}

4、重启Nginx即可

systemctl restart nginx

至此已完成Nginx的配置和正常SSL的证书访问,之后也可通过Cloudflare再次进行配置。