标签:charade django virtualenv uwsgi supervisor
初探django-演示charade使用virtualenv来配置项目在centos7下部署
=======================================
2016/1/18
####charade 是一个猜单词的小游戏。
https://github.com/opera443399/charade
prepare
-------
1. pip+virtualenv+django ::
[root@tvm001 ~]# yum install python-pip
[root@tvm001 ~]# pip install virtualenvwrapper
[root@tvm001 ~]# mkdir /opt/.virtualenvs /opt/.pyprojects
[root@tvm001 ~]# echo ‘export WORKON_HOME=/opt/.virtualenvs‘ >>~/.bashrc
[root@tvm001 ~]# echo ‘export PROJECT_HOME=/opt/.pyprojects‘ >>~/.bashrc
[root@tvm001 ~]# echo ‘source /usr/bin/virtualenvwrapper.sh‘ >>~/.bashrc
[root@tvm001 ~]# source ~/.bashrc
[root@tvm001 ~]# mkproject django_web
(django_web)[root@tvm001 django_web]# pip install django
2. 调整 project setting ::
(django_web)[root@tvm001 django_web]# django-admin startproject www
(django_web)[root@tvm001 django_web]# cd www
(django_web)[root@tvm001 www]# vim www/settings.py
增加app,调整语言和时区,配置文件最后增加static目录的路径
INSTALLED_APPS = [
(omitted)
‘charade‘,
‘polls‘,
]
LANGUAGE_CODE = ‘zh-cn‘
TIME_ZONE = ‘Asia/Shanghai‘
3. 拷贝上述2个app的代码到project目录下 ::
(omitted)
4. 调整 project urls ::
(django_web)[root@tvm001 www]# vim www/urls.py
from django.conf.urls import url, include
from django.contrib import admin
from charade import views
urlpatterns = [
url(r‘^$‘, views.index, name=‘index‘),
url(r‘^charade/‘, include(‘charade.urls‘, namespace=‘charade‘)),
url(r‘^polls/‘, include(‘polls.urls‘, namespace=‘polls‘)),
url(r‘^admin/‘, include(admin.site.urls)),
5. 生成数据库 ::
(django_web)[root@tvm001 www]# python manage.py migrate
(django_web)[root@tvm001 www]# python manage.py makemigrations charade
(django_web)[root@tvm001 www]# python manage.py sqlmigrate charade 0001
(django_web)[root@tvm001 www]# python manage.py makemigrations polls
(django_web)[root@tvm001 www]# python manage.py sqlmigrate polls 0001
(django_web)[root@tvm001 www]# python manage.py migrate
6. 试着运行一下 ::
(django_web)[root@tvm001 www]# python manage.py runserver 0.0.0.0:80
测试基本功能,例如,我们用到了:pytz,需要安装,否则会报错:
Exception Type: ImproperlyConfigured
Exception Value:
This query requires pytz, but it isn‘t installed.
(django_web)[root@tvm001 www]# pip install pytz
确认后台的数据读写无异常后,停止运行,后续将使用uwsgi来管理。
7. admin后台 ::
(django_web)[root@tvm001 www]# python manage.py createsuperuser
http://0.0.0.0/admin/
8. debug ::
DEBUG=False,则django不处理静态文件,此时应该配置nginx或apache来处理静态文件。
uwsgi+supervisord+nginx
----------------------
1. 安装 ::
[root@tvm001 ~]# yum install nginx python-devel
[root@tvm001 ~]# yum groupinstall "development tools"
[root@tvm001 ~]# pip install supervisor
[root@tvm001 ~]# whereis supervisord
supervisord: /usr/bin/supervisord /etc/supervisord.conf
(django_web)[root@tvm001 www]# pip install uwsgi
(django_web)[root@tvm001 www]# whereis uwsgi
uwsgi: /opt/.virtualenvs/django_web/bin/uwsgi
2. 配置 ::
1) 关闭django项目的 DEBUG 选项,并设置 ALLOWED_HOSTS 和 STATIC_ROOT :
(django_web)[root@tvm001 www]# vim www/settings.py
DEBUG = False
ALLOWED_HOSTS = [‘*‘]
STATIC_ROOT = os.path.join(BASE_DIR,‘static‘)
2) 收集django项目的static文件:
(django_web)[root@tvm001 www]# python manage.py collectstatic
3) 使用supervisor来管理uwsgi服务,用uwsgi来运行django:
[root@tvm001 ~]# # echo_supervisord_conf > /etc/supervisord.conf && mkdir /etc/supervisor.d && echo -e ‘[include]\nfiles=/etc/supervisor.d/*.ini‘ >>/etc/supervisord.conf && grep ^[^\;] /etc/supervisord.conf
[root@tvm001 ~]# whereis supervisord
4) 启动 supervisord 服务:
[root@tvm001 ~]# /usr/bin/supervisord -c /etc/supervisord.conf
[root@tvm001 ~]# echo ‘/usr/bin/supervisord -c /etc/supervisord.conf‘ >>/etc/rc.local
5) 配置uwsgi服务:
[root@tvm001 ~]# cat /etc/supervisor.d/uwsgi.ini
[program:uwsgi]
command=/opt/.virtualenvs/django_web/bin/uwsgi --socket 127.0.0.1:8090 --chdir /opt/.pyprojects/django_web/www --module www.wsgi
6)启动 uwsgi 服务:
[root@tvm001 ~]# supervisorctl reload
Restarted supervisord
[root@tvm001 ~]# supervisorctl status
uwsgi RUNNING pid 22023, uptime 0:00:05
说明:
uwsgi 使用 --socket 方式,表示:通过socket来访问,因此后续可以用 nginx uwsgi 模块来访问。
uwsgi 使用 --http 方式,表示:可以直接通过 http访问,因此后续可以用 nginx proxy 来访问。
7) 使用nginx来处理静态文件和转发请求到后端的uwsgi服务
a)nginx uwsgi
[root@tvm001 ~]# cat /etc/nginx/conf.d/www.conf
server {
listen 80 default;
server_name www.test.com;
charset utf-8;
location /static {
alias /opt/.pyprojects/django_web/www/static;
}
location / {
uwsgi_pass 127.0.0.1:8090;
include uwsgi_params;
}
}
b)nginx proxy
[root@tvm001 ~]# cat /etc/nginx/conf.d/www.conf
upstream backend {
server 127.0.0.1:8090;
}
server {
listen 80 default;
server_name www.test.com;
charset utf-8;
location /static {
alias /opt/.pyprojects/django_web/www/static;
}
location / {
proxy_pass http://backend;
}
}
(centos7)
[root@tvm001 ~]# systemctl start nginx.service
[root@tvm001 ~]# systemctl enable nginx.service初探django-演示charade使用virtualenv来配置项目在centos7下部署
标签:charade django virtualenv uwsgi supervisor
原文地址:http://nosmoking.blog.51cto.com/3263888/1736247