openSUSE下uWSGI安装过程记录

本文操作在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的配置完成,并且测试成功通过。

发布时间:
2016-02-06 23:44
分类:
标签: