说明:本文所使用的环境为CentOS 6+Python3.5+Django1.11
安装Django、Nginx和uWSGI
1.安装python3,这里可以看我另外一篇文章http://blog.csdn.net/jj546630576/article/details/78521443;
2.安装python-devel
yum install python-devel
3.安装uwsgi
pip install uwsgi(如果查找不到pip,就用命令查询一下whereis pip,如果查找到pip3.x,就做一个软连接到/usr/bin/pip就好了)
测试uwsgi是否能正常工作
1.新建一个index.py;
# index.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
2.uwsgi --http :8000 --wsgi-file index.py
浏览器访问8000端口看是否有hello world输出
注意:确保8000端口能被外网访问
此时,访问http://192.168.177.234:8000/,看到index.py中内容说明成功
安装Django,去官网下载源码包Django,然后手动安装,python setup.py install
测试Django能否正常工作
$ cd /var/www/
$ django-admin startproject mysite
$ cd mysite
$ make static //创建一个静态资源文件夹
$ make media //创建上传文件夹
$ python manage.py runserver 0.0.0.0:8000
【注】:我这里报错了:No module named _sqlite3
解决:
1,首先安装 sqlite-devel
yum install sqlite-devel
2,重新编译安装Python
./configure
make
make install
浏览器访问8000端口看是否有hello world输出
测试uwsgi是否能和django集成,进入django项目根目录mysite:
uwsgi --http 192.168.177.234:8000 --file mysite/wsgi.py --static-map=/static=static
在浏览器中访问8000端口,看能否正常访问django网站。
在django项目同级目录创建script目录,用于存放配置脚本等等
进入/script目录,创建一个uwsgi.ini文件,内容如下:
1 [uwsgi]
2 # 项目目录
3 chdir=/home/www/python_project/mysite
4 # 指定项目的application
5 module=mysite.wsgi:application
6 # 指定sock的文件路径
7 socket=/home/www/python_project/script/uwsgi.sock
8 # 进程个数
9 workers=5
10 pidfile=/home/www/python_project/script/uwsgi.pid
11 # 指定IP端口
12 http=192.168.177.234:8000
13 # 指定静态文件
14 static-map=/static=/home/www/python_project/mysite/static
15 # 启动uwsgi的用户名和用户组
16 uid=root
17 gid=root
18 # 启用主进程
19 master=true
20 # 自动移除unix Socket和pid文件当服务停止的时候
21 vacuum=true
22 # 序列化接受的内容,如果可能的话
23 thunder-lock=true
24 # 启用线程
25 enable-threads=true
26 # 设置自中断时间
27 harakiri=30
28 # 设置缓冲
29 post-buffering=4096
30 # 设置日志目录
31 daemonize=/home/www/python_project/script/uwsgi.log
在/script目录下执行命令启动项目:/usr/local/python3/bin/uwsgi --ini
访问:192.168.177.234:8000
至此,uwsgi+django就完美结合了,但是,光有uwsgi还不够,uwsgi处理动态请求能力高,
但对于静态请求(如static文件,css,js文件等)处理能力差,此时就要结合nginx一起使用
安装nginx具体步骤:
下载源码包,解压,编译安装就ok,自行百度
我是安装在/usr/local/nginx下,然后进入 /usr/local/nginx/conf,打开nginx.conf,在http{}内部最末尾处添加
“include vhost/*.conf;” 保存退出。然后在/usr/local/nginx/conf建立一个文件夹vhost,
进入vhost,在vhost创建一个文件django.com.conf内容如下:
2 server { # 这个server标识我要配置了
3
4 listen 8001; # 我要监听那个端口
5 server_name 192.168.177.234; # 你访问的路径前面的url名称
6 access_log /var/log/nginx/access.log; # Nginx日志配置
7 error_log /var/log/nginx/error.log;
8 charset utf-8; # Nginx编码
9 gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php
application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型
10
11 error_page 404 /404.html; # 错误页面
12 error_page 500 502 503 504 /50x.html; # 错误页面
13
14 # 指定项目路径uwsgi
15 location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
16 include /usr/local/nginx/conf/uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
17 uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
18 uwsgi_pass unix:/home/www/python_project/script/uwsgi.sock; # 指定uwsgi的sock文件请求给他
19 }
20
21 # 指定静态文件路径
22 location /static/ {
23 alias /home/www/python_project/mysite/static/;
24 index index.html index.htm;
25 }
26
27 }
最后一步,重启/etc/init.d/nginx restart
然后访问nginx中的端口8001,nginx就会代理到uwsgi中就可以访问python项目了,访问地址:192.168.177.234:8001 大功告成
【注】:在这里我提一下,我配置时候都是一摸一样的但是最终访问192.168.177.234:8001
还是502报错,后来我发现是script文件夹权限问题,nginx在去调用执行、写入时候没权限,
所以这个文件夹以及里面的文件都要有写、执行权限,直接就777就可以了
部署django项目
最新推荐文章于 2024-08-18 21:14:00 发布