CentOS 上 Python Web 开发从零到部署
一 环境准备与 Python 安装
sudo yum install -y epel-release gcc openssl-devel bzip2-devel libffi-devel zlib-develsudo yum install -y python3 python3-pippython3 -m pip install --upgrade pipwget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz
tar -xzf Python-3.9.7.tgz
cd Python-3.9.7
./configure --prefix=/usr/local/python3.9
make && sudo make altinstall
sudo ln -s /usr/local/python3.9/bin/python3.9 /usr/bin/python3.9python3.9 --version、pip3.9 --version二 创建项目与虚拟环境
mkdir -p ~/myproj && cd ~/myprojvenv):python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -U setuptools wheel
pip install flask gunicorn(或 pip install django)pip freeze > requirements.txt,便于复现环境。三 编写并运行示例应用
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Flask on CentOS!"
if __name__ == "__main__":
# 开发时仅本机访问;生产请用 Gunicorn/uWSGI + Nginx
app.run(host="127.0.0.1", port=5000, debug=False)
python app.pygunicorn -b 127.0.0.1:8000 app:apphttp://127.0.0.1:5000(Flask 开发服务器)或 http://127.0.0.1:8000(Gunicorn)。四 生产部署 Nginx + Gunicorn(或 uWSGI)
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
gunicorn -b 127.0.0.1:8000 app:appserver {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000;
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_set_header X-Forwarded-Proto $scheme;
}
}
sudo systemctl reload nginx[uwsgi]
module = app:app
master = true
processes = 4
socket = /tmp/myapp.sock
chmod-socket = 660
vacuum = true
die-on-term = true
uwsgi --ini myapp.inilocation / {
include uwsgi_params;
uwsgi_pass unix:/tmp/myapp.sock;
}
sudo yum install -y supervisor
# /etc/supervisord.d/myapp.ini
[program:myapp]
command=/path/to/venv/bin/gunicorn -b 127.0.0.1:8000 app:app
directory=/home/youruser/myproj
user=youruser
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/myapp.log
sudo systemctl start supervisord && sudo supervisorctl reread && sudo supervisorctl update。五 数据库与框架选择建议
pip install mysqlclient(推荐)或 pymysql;ORM 用 SQLAlchemy。pip install psycopg2-binary;ORM 用 SQLAlchemy。