【Django基础入门】生产环境搭建

1 服务器安装和配置

1.1 安装 Centos6.3

此处省略,与本文当无关。

1.2 更新系统

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

rpm –ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm //更新yum源

yum update //刚装好系统后,更新数据

yum clean all //清除缓存

1.3 默认开机联网

此处省略,与本文当无关。

1.4 开放IP 端口

yum install iptables

vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

service iptables restart

service iptables restart

service iptables status

1.5 关闭 selinux

vi /etc/selinux/config

//将SELINUX="" 修改为 SELINUX=disabled
//然后重启。如果不想重启系统,使用命令
setenforce 0
******************************************************************************************************
setenforce 1 //设置SELinux 成为enforcing模式
setenforce 0 //设置SELinux 成为permissive模式
******************************************************************************************************
//或者
/usr/sbin/setenforce 0 立刻关闭 SELINUX
/usr/sbin/setenforce 1 立刻启用 SELINUX

echo "/usr/sbin/setenforce 0" >> /etc/rc.local 默认启动时关闭

1.6 创建 www用户

useradd www 
passwd www
vi /etc/sudoers
99 www ALL = (ALL) ALL

2 Python2.7.2 安装与配置

2.1 下载Python2.7.2

wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
tar xvfz Python-2.7.2.tgz
cd Python-2.7.2

yum -y install gcc gdbm-devel readline-devel ncurses-devel zlib-devel sqlite-devel db4-devel tk-devel bluez-libs-devel make //编译所需工具包
yum install bzip2-devel //no model named bz2
yum install gcc-c++
yum install openssl-devel
//yum -y install gcc automake autoconf libtool make //Centos5.7

Error:
kernel-2.6.32-220.13.1.el6.x86_64 has missing requires of kernel-firmware >= ('0', '2.6.32', '220.13.1.el6')

修改文件vi /etc/yum.conf 将exclude=kernel*前加注释即可解决

2.2 编译 Python2.7.2 并且包含openssl 模块

vi Modules/Setup.dist

214 SSL=/usr/local/ssl
215 _ssl _ssl.c \
216 -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
217 -L$(SSL)/lib -lssl -lcrypto 

./configure --enable-shared
make
make install

// 需要时 重启计算机 reboot
libpython2.7.so.1.0的错误解决办法:
vi /etc/ld.so.conf 添加/usr/local/lib
/sbin/ldconfig

/sbin/ldconfig -v

2.3 检测是否能成功导入bz2 包

#python //此时默认的python应该是2.7.2

>>> import bz2
>>> bz2.__doc__
'The python bz2 module provides a comprehensive interface for\nthe bz2 compression library. It implements a complete file\ninterface, one shot (de	)compression functions, and types for\nsequential (de)compression.\n'
>>>

2.4 安装 virtualenv

http://pypi.python.org/pypi/virtualenv#downloads //下载 virtualenv
******************************************************************************************************
wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.8.1.tar.gz#md5=3aebe32859aa4512e1e679834c10f7bf //快捷下载
******************************************************************************************************
tar -zxvf virtualenv-1.8.1.tar.gz
cd virtualenv-1.8.1

python setup.py install 

3 Git的安装与配置

3.1 安装git 并且下载仓库代码

yum install git
git config --global user.name "****"
git config --global user.email ****
git clone  ****

Error:(gnome-ssh-askpass:3160): Gtk-WARNING **: cannot open display:

解决办法:unset SSH_ASKPASS

此处省略,与本文当无关。


3.6 windows 下 Django 图片上传问题

http://www.pythonware.com/products/pil/

下载安装对应的库,然后pip 重新安装PIL。

3.7 Centos6.3 下 Django 图片上传问题

echo $PATH
如果没有/usr/lib/
export PATH=/usr/lib/:$PATH
yum install libjpeg libjpeg-devel
ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
打开virtualenv
pip uninstall PIL
pip install PIL
清除浏览器缓存,ok!
注:有的动态图片无法显示的话 pip install pillow

4 njinx 的安装与配置

rpm –ivh
http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install nginx
service nginx start

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
解压后 make

cp uwsgi /usr/bin


配置nginx

/etc/nginx/nginx.conf 我没有做修改,记得文件最后会include /etc/nginx/conf.d 下面所有以 *.conf结尾的配置文件,所以我的配置文件放在这里。

vi /etc/nginx/conf.d/django_uwsgi.conf

server{
    listen 80;
    server_name  localhost;    
    location / {
        uwsgi_pass 127.0.0.1:8000;
        include uwsgi_params;
        access_log off;


    }
    location ^~/admin/ {
        uwsgi_pass 127.0.0.1:8000;
        include uwsgi_params;
        access_log off;
    }
}

至于项目的静态文件,已存于阿里云的oss中,所以在nginx的配置文件里已经不需要包含static、site_media等静态文件了。只要在settings中设置访问云端oss中的静态文件即可。


wsgi.py(与项目settings同级目录)

from django.core.handlers.wsgi import WSGIHandler
import os
import pinax.env

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
# setup the environment for Django and Pinax
pinax.env.setup_environ(__file__)


# set application for WSGI processing
application = WSGIHandler()


/your_path/uwsgi_config.ini

[uwsgi]
uid = www
master = true
profiler = true
processes = 8
logdate = true
enable-threads = true
socket = 127.0.0.1:8000
module = yourproject.wsgi
virtualenv=/var/www/virtualenv_lib
pythonpath = /var/www/
pythonpath = /var/www/your_project
pythonpath = /var/www/your_project/apps
pidfile = /var/www/log/your_project.pid
daemonize = /var/www/log/your_project.log

启动uwsgi的脚本 fstart.sh

#!/bin/bash
echo 'Start server Now ...'
uwsgi --ini /your_path/uwsgi_config.ini
echo 'Start server success !'

关闭uwsgi脚本 fclose.sh

#!/bin/bash
echo 'Close server Now ...'
ps aux |grep uwsgi |grep -v grep |awk '{print $2}'|xargs -r kill -9
echo 'Close server success !'

重启uwsgi脚本 frestart.sh

#!/bin/bash
echo 'Restart server Now ...'
ps aux |grep uwsgi |grep -v grep |awk '{print $2}'|xargs -r kill -9
uwsgi --ini /your_path/uwsgi_config.ini
echo 'Restart server success !'

service nginx restart

./fstart.sh

That’s all !

转载请注明出处!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值