Uvicorn是一个Python Web服务器和开发服务器,支持多种框架,如Flask、Django以及FastAPI,Uvicorn以其高性能和易用性收到开发者的欢迎
一、安装Uvicorn
为本机python安装venv
# apt install python-venv
为了方便与root进行隔离,新创建一般用户mysiteuser
# useradd -m mysiteuser
# passwd mysite
使用mysiteuser登陆ssh
ssh mysiteuser@123.123.123.123
创建python虚拟环境
$ python -m venv ./venv
在虚拟环境中安装uvicorn
$./venv/bin/pip install uvicorn
uvicorn配置,以下是个范例 mymodule.py,用于运行flask程序
#!/bin/python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
uvicorn.run(app,host='0.0.0.0',port=3000)
使用以下命令启动服务器:
./venv/bin/uvicorn mymodule:app --reload
其中mymodule是包含Flask应用的Python模块名称
二、安装Apache
Apache的配置文件位于/etc/apache2/sites-available/
创建文件mysite.conf
<VirtualHost *:80>
</VirtualHost>
保存配置,并启用配置
a2ensite mysite.conf
重新启动Apache以应用更改
systemctl restart apache2
三、集成
安装apache2的对wsgi的支持
apt-get install libapache2-mod-wsgi-py3
配置Apache,编辑mysite.conf
<VirtualHost *:80>
SSLEngine On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLCertificateFile "opt/ssl/server.crt"
SSLCertificateKeyFile “opt/ssl/server.key”
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
安装 CertBot
./venv/bin/pip install certbot
申请证书
./venv/bin/certbot certonly -d mysite.conf --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --config-dir /opt/ssl --work-dir /opt/ssl --logs-dir /opt/ssl
配置crontab
crontab -e
0 0 0 * * * ./venv/bin/certbot certonly -d mysite.conf --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory --config-dir /opt/ssl --work-dir /opt/ssl --logs-dir /opt/ssl