安装pip3(python3 的pip)
sudo apt-get install python3-pip
安装uwsgi
pip install uwsgi
测试uwsgi运行状态
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
然后直接使用uwsgi运行该文件
uwsgi --http :8000 --wsgi-file test.py. #此语句的意思是,使用uwsgi运行test.py文件, 采用http模式, 端口8000
可以正常访问就说明可以了
上传自己的Django项目
pip3 install virtualenv # 安装虚拟环境
python3 -m venv env_1 # 在当前目录 创建python虚拟环境目录 下面的操作都可以在这个环境下进行
source /www/wwwroot/sfz/env_1/bin/activate # 激活python虚拟环境
在虚拟环境下 安装Django 对应的版本
pip3 install Django
尝试项目是否可以正常启动
python3 manage.py runserver 0.0.0.0:8000
uswgi运行项目 如果可以正常访问那就没问题了,可以进行下一步了
uwsgi --http :8000 --chdir /www/wwwroot/sfz --wsgi sfz.wsgi
#uwsgi --http :8000 --chdir <项目地址> --wsgi 项目名称.wsgi
uWSGI+nginx +Django
在项目目录新建文件 conf.ini
[uwsgi]
#指定与Nginx通信的方式,不影响uwsgi本身运行。如果配置了需要到nginx中进行相关配置-才能通过nginx访问Django
## 启动一个master进程,来管理其余的子进程
#master = True
#uid=root
#gid=root
socket = 127.0.0.1:8666 # 一定要和Nginx中某一项配置成一样
http = 127.0.0.1:8661
#django项目目录,与manager.py同级
chdir = /www/wwwroot/sfz
#主应用中的wsgi,下面这种配法是在Django根目录下运行uwsgi有效,主APP名为有settings.py的那个目录名。如果是其他目录运行,下面建议写
成绝对路径。
module = sfz.wsgi
#服务停止时自动移除unix Socket和pid文件
vacuum = true
workers = 5
#设置每个工作进程处理请求的上限,达到上限时,将回收(重启)进程,可以预防内存泄漏
max-requests=500
enable-threads=true
harakiri=30
post-buffering=1028
#设置后台运行保存日志。只要配置了daemonize就会让uwsgi后台运行,同时将日志输出到指定目录
daemonize=uwsgi.log
#保存主进程的pid,用来控制uwsgi服务
pidfile=uwsgi.pid
#uwsgi --stop/reload xxx.pid 停止/重启uwsgi
#静态文件映射
#static-map = /static=Django下static目录的绝对路径
此处是宝塔的配置图
location / {
root /www/wwwroot/sfz/;
include /www/wwwroot/sfz/uwsgi_params; # 这个文件要自己新建
uwsgi_pass 127.0.0.1:8666;
}
location /static {
alias /www/wwwroot/sfz/static/; # 静态文件目录。不知道为啥我配置了图片还是加载不了,后来用了图床
}
uwsgi_params
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
运行下面就可以通过域名进行访问了
uwsgi --ini conf.ini