当我们开发完django的应用程序后,需要将其部署到服务器上,部署过程中可能出现各种各样的问题,因此想把自己遇到的问题记录下来,以便在以后再遇到可以快速的查阅。
uwsgi安装:
pip安装:pip install uwsgi 测试:uwsgi --version
nginx安装:
下载:wget http://nginx.org/download/nginx-1.6.2.tar.gz
依赖包安装:
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
解压:tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/
配置:./configure --prefix=/usr/local/nginx
编译安装:make && make install
(备注:以上uwsgi安装和nginx安装均需依赖C的编译环境,先配置环境)
启动:/usr/local/nginx/sbin/nginx
检查是否启动:ps -ef|grep nginx
关闭防火墙:chkconfig iptables off(虚拟机下可以直接关闭,实际生产环境下因为有物理防火墙,所以也可以关闭,如果安全限制,可以单独开放所需端口)
页面访问:http://主机IP:端口 (出现欢迎页面)
uwsgi配置文件uwsgi.ini:
chdir=/home/zhangwei/ywpt/Django-1.4.20/untitled1
# 指定项目的application
module=untitled1.wsgi:application
# 指定sock的文件路径
socket=/home/ywpt/Django-1.4.20/untitled1/script/uwsgi.sock
# 进程个数
workers=5
pidfile=/homeywpt/Django-1.4.20/untitled1/script/uwsgi.pid
# 指定IP端口
http=192.168.2.129:8000
# 指定静态文件
static-map=/static=/home/ywpt/Django-1.4.20/untitled1/static
#static=/home/ywpt/Django-1.4.20/untitled1/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/home/ywpt/Django-1.4.20/untitled1/script/uwsgi.log
nginx配置文件nginx.conf:
server {
listen 80;
server_name 192.168.2.129;
charset utf-8;
access_log logs/bdmp.log main;
location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
uwsgi_pass unix:/home/zhangwei/ywpt/Django-1.4.20/untitled1/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢
}
}
配置完成后,重新启动uwsgi、nginx,页面再次访问,就OK啦
不过需要注意的地方有STATIC_ROOT、STATIC_URL、STATICFILES_DIRS也需要配置,同时可能因为Debug=false等原因导致静态文件不能正常加载。
若在尝试过程中,发现静态文件出现304报错,则因为缓存影响,更换浏览器或清除缓存即可。