本文操作在openSUSE leap 42.1 Gnome和KDE环境下测试通过。
说明
uWSGI用于Django项目的运行
登录用户:snail
项目目录:/home/snail/e3dj19/mysite
项目名称:mysite
安装uWSGI
sudo zypper in gcc make python-devel python3-devel sudo pip install uwsgi
注: 不要用搜索官网.ymp软件包的方式安装,再应用pip的方式安装uWSGI。
添加Virtualenv环境及Django项目
cd ~ virtualenv -p python3 e3dj19 cd e3dj19 source bin/activate pip install django django-admin startproject mysite cd mysite ./manage.py startapp blog
编辑Django项目
./manage.py runserver
显示正常后再继续
添加uWSGI配置文件
sudo mkdir /etc/uwsig sudo mkdir /etc/uwsig/vassals
编辑通用uwsgi配置模板
sudo vim uwsgi.ini
uwsgi.ini配置如下:
[uwsgi] # Django项目的uwsgi配置模板 # 调用模板使用以下语句: # prj-home = 项目目录绝对路径 # prj-name = 项目名称 # ini = 本模板文件.ini # # 将配置文件命名为Django的项目名 # uwsgi单独使用用http,用于单独测试用 #http = :8000 # uwsgi在Nginx中做中间件用socket #socket = /tmp/uwsgi-%(prj-name).sock socket = :8000 pidfile = /tmp/uwsgi-%(prj-name).pid chdir = %(prj-home) home = %(prj-home)/.. module = %(prj-name).wsgi master = true processes = 4 threads = 2 buffer-size = 40960 #stats = :9191 vacuum = true #daemonize = /tmp/uwsgi-%(prj-name).log
编辑django项目的uwsgi配置实例
sudo vim /etc/uwsgi/vassals/e3dj19-mysite.ini
e3dj19-mysite.ini配置如下:
[uwsgi] prj-home = /home/snail/e3dj19/mysite prj-name = mysite ini = /etc/uwsgi/uwsgi.ini socket = :9000 # 下面添加要变更或新增的uWSGI配置项 # 添加ini项所指文件中有的配置项如threads项则为变更 # threads = 20 # 添加文件中没有的配置项如stats项则为新增 # stats = :9191
测试uWSGI的单位个项目运行情况
uwsgi /etc/uwsgi/vassals/e3dj19-mysite.ini
正常运行
添加uWSGI的Emperor模式
uwsgi --emperor /etc/uwsgi/vassals/
正常运行
sudo vim /etc/uwsgi/emperor.ini
emperor.ini配置如下:
[uwsgi] emperor = /etc/uwsgi/vassals uid = nginx gid = nginx
测试uWSGI的Emperor模式的运行情况
uwsgi /etc/uwsgi/emperor.ini
正常运行
至此uWSGI配置多个Django应用同步运行的配置已正确配置,以后新的Django应用只需类似/etc/uwsgi/vassals/e3dj19-mysite.ini配置即可
添加到systemd
sudo vim /etc/systemd/system/uwsgi.service
uwsgi.service配置如下:
[Unit] Description=uWSGI Emperor After=syslog.target [Service] #User=root Type=notify ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi/emperor.ini #RuntimeDirectory=uwsgi # Requires systemd version 211 or newer Restart=always KillSignal=SIGQUIT StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target
启动uWSGI服务并测试状态
sudo systemctl start uwsgi.service systemctl status uwsgi
服务运行正常
安装配置nginx
sudo zypper in nginx sudo nginx -v
可以显示nginx版本号
sudo vim /etc/nginx/nginx.conf
nginx.conf配置如下:
http { upstream django_uwsgi { # 这是sock文件模式 #server unix:///tmp/uwsgi-mysite.sock; # 这是端口监听模式 server 127.0.0.1:9000; } server { listen 80; .... location / { uwsgi_pass django_uwsgi; include uwsgi_params; } .... } }
启动nginx服务
systemctl start nginx
打开浏览器输入127.0.0.1,正常显示Djnago页面。 至此,uWSGI的配置完成,并且测试成功通过。