首先更新系统软件包,确保基础环境最新:
sudo yum update -y
安装Python3及pip(CentOS 7及以上默认包含Python 3,若未安装可通过以下命令安装):
sudo yum install python3 python3-pip -y
验证安装:
python3 --version # 查看Python版本(建议3.6+)
pip3 --version # 查看pip版本
为避免不同项目间的依赖冲突,使用venv模块创建虚拟环境:
# 创建虚拟环境目录(以myenv为例)
python3 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 激活后,终端提示符会显示虚拟环境名称(如“(myenv)”)
根据项目需求选择轻量级(Flask)或全功能(Django)框架:
pip install Flask
pip install Django
创建项目目录并编写应用:
mkdir my_flask_app && cd my_flask_app
# 创建app.py文件
cat > app.py << 'EOF'
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, Flask on CentOS!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
EOF
运行应用:
python app.py
访问http://<服务器IP>:5000,若看到“Hello, Flask on CentOS!”则表示成功。
创建Django项目及应用:
django-admin startproject myproject # 创建项目
cd myproject
python manage.py startapp hello # 创建应用
配置URL路由:
myproject/urls.py,添加应用路由:from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('hello.urls')), # 包含应用的URL配置
]
hello目录下创建urls.py,定义具体路由:from django.urls import path
from . import views
urlpatterns = [
path('', views.hello, name='hello'),
]
hello/views.py:from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, Django on CentOS!")
运行开发服务器:
python manage.py runserver 0.0.0.0:8000
访问http://<服务器IP>:8000,若看到“Hello, Django on CentOS!”则表示成功。
开发服务器(app.run()/runserver)仅用于调试,生产环境需使用**Gunicorn(WSGI服务器)**处理Python应用,**Nginx(反向代理)**处理静态文件及负载均衡。
pip install gunicorn
用Gunicorn启动Flask应用(假设应用入口为app.py中的app对象):
gunicorn -w 4 -b 127.0.0.1:8000 app:app
-w 4:启动4个工作进程(根据CPU核心数调整);-b 127.0.0.1:8000:绑定到本地8000端口(仅允许Nginx访问)。用Gunicorn启动Django应用(入口为myproject.wsgi):
gunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi
安装Nginx:
sudo yum install nginx -y
启动Nginx并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
配置Nginx反向代理(编辑/etc/nginx/conf.d/myapp.conf):
server {
listen 80;
server_name your_domain_or_ip; # 替换为域名或服务器IP
location / {
proxy_pass http://127.0.0.1:8000; # 转发到Gunicorn
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 可选:处理静态文件(需在Django中配置STATIC_ROOT)
location /static/ {
alias /path/to/your/static/files/; # 替换为静态文件目录
}
}
重启Nginx使配置生效:
sudo systemctl restart nginx
允许HTTP(80端口)和HTTPS(443端口)流量:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
使用Let’s Encrypt免费获取SSL证书,配置HTTPS:
sudo yum install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain_or_ip # 替换为域名或IP
按提示完成配置,Certbot会自动修改Nginx配置以支持HTTPS。
sudo netstat -tulnp | grep 端口号查找并终止占用进程,或修改应用端口。chown -R nginx:nginx /path/to/project)。pip install 模块名安装。通过以上步骤,即可在CentOS环境下完成Python Web应用的搭建与生产部署。根据项目需求,可进一步优化Nginx配置(如负载均衡、缓存)、数据库集成(如MySQL/PostgreSQL)或使用Docker容器化部署。