获取全套nginx教程,请访问瓦力博客
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。fastcgi应用于php语言,
uwsgi应用于Python语言。
WSGI
WSGI是一种WEB服务器网关接口。 是一个Web服务器(如nginx)与应用服务器(如uWSGI)通信的一种规范(协议)。
在生产环境中使用WSGI作为python web的服务器。Python Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行。
uWSGI
uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uWSGI代码完全用C编写,效率高、性能稳定。
uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型。
1.安装基础环境
安装系统基础包
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ openssl-devel -y
安装mysql支持
yum install mysqld mysql-devel
获取phthon源码包
到官方网站,下载最新python源码包
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
解压安装
tar -xvf Python-3.6.2.tgz
cd Python-3.6.2/
./configure --prefix=/opt/python3.6
make
make install
echo "export PATH=/opt/python3.6/bin:\$PATH" > /etc/profile.d/python.sh
echo $PATH
which python
mkdir ~/.python-eggs
chmod +w ~/.python-eggs
echo "export PATH=/opt/python3.6/bin:\$PATH" > /etc/profile.d/python.sh
export PATH=/opt/python3.6/bin:$PATH
python3 -V
安装django
/opt/python3.6/bin/pip3 install django
查看是否安装成功
cd /opt/python3.6/bin/
是否存在django-admin.py
这个文件,存在说明安装成功
安装uwsgi
/opt/python3.6/bin/pip3 install uwsgi
cd /opt/python3.6/bin/
是否存在uwsgi
这个文件,存在说明安装成功
2.启动uwsgi
服务目录
/opt/app/
|-code7/
|-demo #这些不需要手动创建,由/opt/python3.6/bin/django-admin.py startproject demo自动生成
|-demo
|-__init__.py
|-settings.py
|-urls.py
|-wsgi.py
|-manage.py
|-conf/
|-uwsig.ini
在/opt/app
创建code7
和conf
文件夹。
cd code7
/opt/python3.6/bin/django-admin.py startproject demo #用django-admin.py创建一个demo项目
由于启动时需要普通用户启动
useradd uwsgi #创建一个普通用户
uwsig.ini
[uwsgi]
socket = 127.0.0.1:9005
#chdir = /opt/app/code7/demo
workers = 2
max-requests = 1000
buffer-size = 30000
pidfile = /var/run/uwsgi/uwsgi.pid
daemonize = /var/log/uwsgi.log
由于需要对/var/run/uwsgi/目录进行写入操作
chown -R uwsgi /var/run/uwsgi/
切换普通用户
su - uwsgi
cd /opt/app/conf
启动uwsgi之前需要确保uwsgi没有被启动
ps -ef | grep uwsgi
kill -9 'pid' #如果检查有启动,需要杀死进程
/opt/python3.6/bin/uwsgi --ini /opt/app/conf/uwsgi.init #启动uwsgi
如果有错误,请查看日/var/log/uwsgi.log。小菜第一次也没有启动起来,报的是uwsgi用户没有权限,还有就是不存在/var/run/uwsgi/uwsgi.pid
文件,如果不存在/var/run/uwsgi/uwsgi.pid
文件就先切到root用户创建,然后在做后面的步骤。
如果成功了,检查一下9005端口是否被监听
ss -luntp | grep 9005
3.nginx配置
服务目录
/etc/nginx/conf.d
|-uwsgi.conf
uwsgi.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log /var/log/nginx/host.access.log main;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9005;
uwsgi_param UWSGI_SCRIPT demo.wsgi;
uwsgi_param UWSGI_CHDIR /opt/app/code7/demo;
index index.html index.htm;
client_max_body_size 35m;
}
}
检查语法并重启
nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf
重启nginx后输入域名http://walidream.com
会发现django报了一个错误,需要将我们的域名添加进白名单
vim /opt/app/code7/demo/demo/settings.py
/ALLOWED_HOSTS = #查找到ALLOWED_HOSTS,将我们的域名添加进白名单
将之前的django进程关闭
ps -ef |grep uwsgi
将/opt/python3.6/bin/uwsgi --ini /opt/app/conf/uwsgi.init
进程杀死掉
kill -9 'pid'
之后再重启django
/opt/python3.6/bin/uwsgi --ini /opt/app/conf/uwsgi.init
出现欢迎界面就说明我们配置好了。
共同学习,写下你的评论
评论加载中...
作者其他优质文章