阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 6.7下Django之安装与部署

194次阅读
没有评论

共计 8113 个字符,预计需要花费 21 分钟才能阅读完成。

安装(全部为 CentOS 6.7 环境下)

python单一版本环境安装

(系统已自带 python2.6 情况下)
注意!!由于系统已经自带 python2.6, 自己又编译安装了 python2.7,如果此时直接用 yum 安装 yum install python-pip 会安装 到 python2.6 上, 必须编译安装 pip 才行,而 pip 的安装又依赖 setuptools,系统自带了 0.6 的 setuptools,我们必须下载另一个 setuptools 手动安装,用 python27 setup.py install 这样安装就会安装到 2.7 下了,之后就可以顺利安装 pip 了,安装 pip 后,再做一个软链接到 /usr/bin/ 下

1、python2.7 的安装

    解决依赖

        yum -y install readline-devel

    下载 python2.7.6,保存到 ~/soft

        http://www.python.org/ftp/python/

        http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz

2、解压文件
    tar zxvf Python-2.7.6.tgz

3、创建安装目录

    mkdir /usr/local/python/python27

4. 安装 python

    cd ~/soft/Python-2.7.6

    ./configure –prefix=/usr/local/python/python27

    make

    make install

5. 修改新版本的 ln 指向

    ln -s /usr/local/python/python27/bin/python/usr/bin/python27

    以后只要运行 python27 即可,系统自带的版本不能动

6、安装 setuptools

    下载 https://pypi.python.org/packages/source/s/setuptools/setuptools-0.7.2.tar.gz

    tar xvzf setuptools-0.7.2.tar.gz

    cd setuptools-0.7.2

    python27 setup.py install

7、安装 pip

    下载 https://pypi.python.org/pypi/pip/

    tar xvzf pip-8.1.2.tar.gz

    python27 setup.py install

8、做 Pip 软连接

    ln -sv /usr/local/python27/bin/pip /usr/bin/pip

   (pip 的升级)

    pip install –upgrade pip

python多版本开发环境安装

1、安装 pyenv

    安装依赖:

        yum -y install gcc gcc-c++ make git patch openssl-develzlib-devel readline-devel sqlite-devel bzip2-devel

    安装 pyenv(安装到 /root/.pyenv):

        git clone https://github.com/yyuu/pyenv.git /root/.pyenv

        echo ‘export PYENV_ROOT=”/root/.pyenv”‘>> ~/.bashrc

        echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘>> ~/.bashrc

        echo ‘eval “$(pyenv init -)”‘ >>~/.bashrc

2、安装具体 python 版本

# 如果命令行下载安装 Python 太慢,可以将下载的安装包放入 /root/.pyenv/sources/ 下对应的安装版本的目录中后安装。具体这样:

例如要安装 2.7.11 版本的 python , 就把下载好的安装文件放到 /root/.pyenv/sources/2.7.11/Python-2.7.11.tar.gz 注意!如果没有 2.7.11 目录就新建一个,文件名是 Python-2.7.11.tar.gz,并不是显示的 Python-2.7.11.tgz,一般运行一次 pyenv install 2.7.11 后,它就会自动在 sources 下生成对应的版本目录和文件名,可以进去参考。安装文件放到相应位置后 pyenvinstall 2.7.11 –k 安装即可

    # 查看可提供的 Python 版本列表

        pyenv install –list

        pyenv install 2.7.11 -v

        pyenv install 3.5.1 –v

    #重建环境变量

        pyenv rehash

    # 查看已安装 Python 版本

        pyenv versions

其他常用命令:

    #卸载

          pyenv uninstall 2.7.5

    #设置本地的特定目录的 Python 版本

          pyenv local 2.7.5

    #设置全局的 python 版本

          pyenv global 2.7.5

    #查看当前所有版本

        prenv versions

3.安装virtualenv,插件形式pyenv-virtualenv

git clone https://github.com/yyuu/pyenv-virtualenv.git/root/.pyenv/plugins/pyenv-virtualenv  – 其中 /root/.pyenv 是你安装 pyenv 的目录

exec “$SHELL”  – 重新加载 shell, 更新环境变量

    #查看当前虚拟环境

          pyenv virtualenvs

    切换到新的虚拟环境的命令为

        pyenv activate env271

    切换回系统环境,运行这个命令即可

        pyenv deactivate

4、安装 pip

    切换到需要安装的虚拟环境:

        pyenv activate env271

    直接用 yum 安装即可

        yum -y install python-pip

    (pip 的升级)

        pip install –upgrade pip

5、安装 ipython

    可以利用 pip 安装

        pip install ipython

部署前的一些配置

关闭 Debug 模式

当用命令 django‐admin.py startproject 创建了一个项目 , 其中创建的 settings.py 文件的 DEBUG

设置默认为 True。django 会根据这个设置来改变他们的行为,如果 DEBUG 模式被开启:

  • 所有的数据库查询将被保存在内存中,以 django.db.connection.queries 的形式. 消耗很多内存!

  • 任何 404 错误都将呈现 django 的特殊的 404 页面,而不是普通的 404 页面。

  • 你的应用中任何未捕获的异常,从基本的 python 语法错误到数据库错误以及模板语法错误都会返回漂亮的 Django 错误页面。这个页面包含了比 404 错误页面更多的敏感信息。

只有在开发调试阶段才会开启 Debug 模式,在项目的 settings.py 中,DEBUG = False 即可关闭

关闭 debug 模式后,我们必须自定义 404 和 500 的返回页面,在项目的 templates 下定义 404.html 和 500.html,404.html 可以使用模板来继承生成,但 500.html 不行

配置错误时发送 Email 警报信息

1、主要通过 settings.py 配置以下选项(新增即可):

fromdjango.core.mail import send_mail    先导入 send_mail 模块

EMAIL_BACKEND= ‘django.core.mail.backends.smtp.EmailBackend’ 默认是这个,可以不配

EMAIL_HOST= ‘smtp.sina.com’  #SMTP地址,如果只配置发送本地邮件的话,这个可以不写,默认就是 EMAIL_HOST =‘localhost’

EMAIL_HOST_USER= ‘dx@qq.com’  #自己的邮箱名,如果只配置发送本地邮件的话下面几项的配置都不用了

EMAIL_PORT= 587  #SMTP端口

EMAIL_HOST_PASSWORD= ‘password’  #自己的邮箱密码

EMAIL_SUBJECT_PREFIX= ‘2BiTT’  #为邮件 Subject-line 前缀, 默认是 '[django]’

EMAIL_USE_TLS= True  #与 SMTP 服务器通信时,是否启动 TLS 链接(安全链接)。默认是 false,根据实际情况配置

 2、基本使用方法:

发送邮件最简单的函数是 send_mail,函数位于 django.core.mail 模块下面,函数原型如下:

 

send_mail(subject,message, from_email, recipient_list, fail_silently=False,auth_user=None,auth_password=None, connection=None)

 

subject:一个字符串,主题

message:邮件内容,也是一个字符串

from_email:发送邮箱,一个字符串类型的字符串,要求和 EMAIL_HOST_USER 一致

recipient_list:一个列表,元素是接收邮箱字符串,每一个接收邮箱用一个字符串表示

fail_silently:是否安静的失败,如果是,发送失败不抛出异常,否则抛出一个 smtplib.SMTPException

auth_user:认证发送邮箱用户名,如果不提供,将使用 EMAIL_HOST_USER 的值

auth_password:邮箱密码,如果不提供,使用 EMAIL_HOST_PASSWORD 的值

connection:发送邮件用的后端,如果不提供,将使用 Email backends 的值

例:

send_mail(‘subject’,’message’,’root@localhost’,[‘dx@localhost’,’root@localhost’],fail_silently=False)

以发送人 root@localhost 发送一份邮件到 dx@localhost 和 root@localhost

mail_admins()

语法:mail_admins(subject, message, fail_silently=False, connection=None,html_message=None)

提供了一个给管理员发送邮件的快捷方式,启用这个功能的话,先要在你的设置文件里面配置好 ADMINS 和 SERVER_EMAIL,前者是收件人,后者是发件人。如果你提供了 html_message 的话,邮件内容会被替换成 html_message 的内容

还有 mail_managers(),和 mail_admins 类似

语法:mail_managers(subject, message, fail_silently=False, connection=None,html_message=None)

send_mass_mail()

语法:send_mass_mail(datatuple, fail_silently=False, auth_user=None,auth_password=None,connection=None)

send_mass_mail()提供了一个把发送内容封装成元组然后再封装在一个元组里面的参数 datatuple,这有利于批量发送编辑好的邮件,datatuple 每��个元素都是以下的格式

(subject,message, from_email, recipient_list)

send_mass_mail 的其他参数和 send_mail 的一样

例:

message1= (‘Subject here’, ‘Here is the message’, ‘from@example.com’,[‘first@example.com’, ‘other@example.com’])

message2= (‘Another Subject’, ‘Here is another message’, ‘from@example.com’,[‘second@test.com’])

send_mass_mail((message1,message2), fail_silently=False)

3、各种邮件后端

我们可以指定不同的邮件后端去适用不同的场景

  • SMTP 后端

默认的邮件后端,这是真的将邮件发送到指定邮箱的后端

EMAIL_BACKEND =’django.core.mail.backends.smtp.EmailBackend’

  • Console 后端

console 后端把邮件写入到 stdout 在 python27 manager.py runserver 控制台上输出显示,测试用比较直观

EMAIL_BACKEND =’django.core.mail.backends.console.EmailBackend’

  • 文件后端

把邮件写到文件里面,需要提供一个 EMAIL_FILE_PATH 参数,可以在配置文件 settings.py 里面直接指明,或者用 get_connection()函数里面传入 file_path 关键字参数

EMAIL_BACKEND =’django.core.mail.backends.filebased.EmailBackend’

EMAIL_FILE_PATH =’/tmp/app-messages’

  • 内存中的后端

发送的邮件存在内存中。。。。。

EMAIL_BACKEND =’django.core.mail.backends.locmem.EmailBackend’

  • 假后端

如其名,假的

EMAIL_BACKEND =’django.core.mail.backends.dummy.EmailBackend’

设置连接中断警报

如果你安装有 CommonMiddleware(比如,你的 MIDDLEWARE_CLASSES 设置包含了’django.middleware.common.CommonMiddleware’的情况下,默认就安装了 CommonMiddleware), 你就具有了设置这个选项的能力:有人在访问你的 Django 网站的一个非空的链接而导致一个 404 错误的发生和连接中断的情况,你将收到一封邮件. 如果你想激活这个特性,设置 SEND_BROKEN_LINK_EMAILS 为 True(默认为 False), 并设置你的 MANAGERS 为某个人或某些人的邮件地址,这些邮件地址将会收到报告连接中断错误的邮件. MANAGERS 使用和 ADMINS 同样的语法. 例如:

MANAGERS= (

(‘GeorgeHarrison’, ‘gharrison@example.com’),

(‘RingoStarr’, ‘ringo@example.com’),

)

 

针对生产环境、测试环境或不同环境设置配置文件 settings.py

平时开发或学习时我们通常使用一个单一的设置文件 settings.py 文件由 django-admin.py startproject 命令生成。但是当你准备要进行配置的时候,你将发现你需要多个配置文件以使你的开发环境和产品环境相独立。比如,你可能不想每次在本地机器上测试代码改变的时候将 DEBUG 从 False 改为 True。Django 通过使用多个配置文件而使得这种情况很容易得到避免。

有三种实现方法(推荐第三种方法):

  1. 1.     设置成两个全面的,彼此独立的配置文件

直接把 settings.py 复制一份即可

  1. 2.     设置一个基本的配置文件(比如,为了开发)和第二个(为了产品)配置文件,第二个配置文件仅仅从基本的那个配置文件导入配置,并对需要定义的进行复写.

例:

# settings.py

DEBUG = True

TEMPLATE_DEBUG = DEBUG

DATABASE_ENGINE = ‘postgresql_psycopg2’

DATABASE_NAME = ‘devdb’

DATABASE_USER = ”

DATABASE_PASSWORD = ”

DATABASE_PORT = ”

# settings_production.py

from settings import *

DEBUG = TEMPLATE_DEBUG = False

DATABASE_NAME = ‘production’

DATABASE_USER = ‘app’

    DATABASE_PASSWORD = ‘letmein’

  1. 3.     使用一个单独的配置文件,此配置文件包含一个 Python 的逻辑判断根据上下文环境改变设置。

# settings.py

import socket

if socket.gethostname() == ‘dx.com’:

   DEBUG = TEMPLATE_DEBUG = True

else:

   DEBUG = TEMPLATE_DEBUG = False

apache/nginx+Django+Gunicorn的部署

安装 Gunicorn

  安装 gunicorn 就是简单地 pip install gunicorn

运行,将 Django 作为一个 WSGI 应用在 Gunicorn 中运行

 Gunicorn 安装后,可以使用一个 gunicorn  命令来启动 Gunicorn 服务器进程。最简单地,gunicorn 的调用只需要在其调用位置具有一个包含 WSGI application 对象的模块,该对象的名称必须为名为 application。所以在一个 Django 项目中,调用 gunicorn 就像这样:

gunicorn myproject.wsgi

它将启动一个进程,它运行一个线程并监听在 127.0.0.1:8000。

注意!它要求你的项目位于 Python 的路径中;保证这点最简单的方法就是在与 manage.py 文件所在的相同目录中运行这个命令。

gunicorn 命令其他参数:

  • -b 监听 ip 和端口,默认是 127.0.0.1:8000 如:0.0.0.0:80
  • -w 开启多个进程 如 -w 8
  • -k gunicorn 默认使用同步阻塞的网络模型(-k sync),对于大并发的访问可能表现不够好,它还支持其它更好的模式,比如:gevent 或 meinheld。
  • 先 pip installgevent 然后使用 gevent 模型  -kgevent
  • -c 可以用配置文件

最后可以 nohup -w 4 -k gevent gunicorn AutoSa.wsgi:application 

Ubuntu 14.04 下 Django+MySQL 安装部署全过程 http://www.linuxidc.com/Linux/2016-02/128714.htm

Django1.8 返回 json 字符串和接收 post 的 json 字符串内容  http://www.linuxidc.com/Linux/2015-07/120226.htm

如何使用 Docker 组件开发 Django 项目?http://www.linuxidc.com/Linux/2015-07/119961.htm

Ubuntu Server 12.04 安装 Nginx+uWSGI+Django 环境 http://www.linuxidc.com/Linux/2012-05/60639.htm 

Django+Nginx+uWSGI 部署 http://www.linuxidc.com/Linux/2013-02/79862.htm 

Django 实战教程 http://www.linuxidc.com/Linux/2013-09/90277.htm 

Django Python MySQL Linux 开发环境搭建 http://www.linuxidc.com/Linux/2013-09/90638.htm 

Django 的详细介绍:请点这里
Django 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/132819.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8113字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中