CentOS6.8+Django1.10.3+Nginx+uWSGI(六)
【本文配置uwsgi、nginx】
我的项目需安装的东西如下:
Python2.7.12
Django1.10.3
uWSGI
MySQL5.6.34
Nginx
RabbitMQ3.6.5
RedisGit
配置uWSGI
先创建个项目:
django-admin.py startproject mysite
python manage.py migrate 如果出现 nomodule named sqlite3
参考http://www.cnblogs.com/BlueBreeze/p/4234364.html 原因是安装了两个python版本
在你的项目文件夹下创建mysite_uwsgi.ini的配置文件,并编写配置项:
cd mysite
vim mysite_uwsgi.ini
mysite_uwsgi.ini 配置如下:
[uwsgi]
vhost = false
plugins = python
socket = 127.0.0.1:9001
master = true
enable-threads = true
workers = 2
wsgi-file = /usr/local/mysite/mysite/wsgi.py【我的项目wsgi.py文件所在目录】
virtualenv = ~/.virtualenvs/Env【我的虚拟运行环境所在目录】
chdir = /usr/local/mysite【我的项目目录】
启动uWSGI
uwsgi mysite_uwsgi.ini
启动时报“ImportError: No module named site”错误
这里是导入site模块时出错,所以应该在PYTHONPATH上增加site模块的路径。
查找site相关文件的路径:
[root@ZZZ xxx]# find / -name site.py*
/usr/lib64/python2.7/site.pyc
/usr/lib64/python2.7/site.py
/usr/lib64/python2.7/site.pyo
增加路径到环境变量:
export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7
配置Nginx
进入nginx 目录(我的是/etc/nginx), 有个nginx.conf 文件,在 配置项http中 配置一个 server ,转发到上面设置的uwsgi地址中 ;或者在目录/etc/nginx/conf.d 下新增一个conf的文件,把server配置写在里面即可,然后 重启nginx
/usr/sbin/nginx -s reload
server 的配置的例子
server {
listen 80;
server_name host;
location / {
uwsgi_pass 127.0.0.1:9001;
include /etc/nginx/uwsgi_params;
}
location /static {
root /usr/local/apps/FutureCareer;
}
access_log off;
}
host 配置成自己的服务器ip地址或者域名即可,这样我们从80端口监听到的一些请求就会被转发到9001端口的一些服务去做处理
参考博文:http://www.jianshu.com/p/7494560da3e6
在此十分感谢原作者!