文档章节

centos下django1.9部署

子夜闻雪
 子夜闻雪
发布于 2015/12/29 10:52
字数 1159
阅读 229
收藏 0
点赞 0
评论 1

环境说明:

环境为阿里云服务器,系统版本为centos6.5

默认python版本为2.6

第一步:更新python版本

    去python官网下载python2.7.11的源码包https://www.python.org/downloads/release/python-2711/

在安装python2.7之前,我们需要安装一些之后需要的依赖库,不然的话,之后还需要的时候还需要重新编译安装python。

这里我们用yum安装上zlib, ssl:

    安装zlib

yum install zlib zlib-devel

    安装openssl:

yum install openssl openssl-devel

    之后安装python。解压我们之前下载的python2.7的包,进入目录后,指定安装目录方便之后寻找相关文件。然后make , makeinstall.

./configure --prefix=/usr/local/python27
make
make install

    make install成功后,需要覆盖/usr/bin/python

cp /usr/bin/python  /usr/bin/python26.old
ln -s /usr/local/python27/bin/python /usr/bin/python

    这样,python2.7我们已经安装好了,我们可以在命令行下敲击python -V  查看python版本是否成功为2.7

    

    安装好python2.7后,我们需要重新制定下yum的python版本

vi /usr/bin/yum

    将文件头改为:

#!/usr/bin/python2.6
...
第二步: 安装pip工具和django

    pip是python的库管理工具,可以很方便的管理python的库文件。因为pip依赖于setup_tools,所以先下载setup_tools 和pip源码tar包。从pypi上下载:

setup_tools:https://pypi.python.org/pypi/setuptools

pip: https://pypi.python.org/pypi/pip/7.1.2

    下载好之后,解压出来,依次是用python setup.py install 安装setup_tools 和pip。安装过程中如果之前没有安装库文件,则需要yum安装所需要的库, 重新编译安装python。

    安装好pip后,我们可以直接用pip安装django

pip install django

    博文创建时间,安装的是django1.9,安装好后,是用命令查看Django版本

python -c "import django; print django.get_version()"

    如果输出对应的版本号,则安装成功。 

第三步  安装nginx和uwsgi

    接下来安装nginx, 可以直接用yum install nginx , 或者下载nginx源码包编译安装。这里用yum安装nginx

安装好后,是用nginx -v 查看nginx版本,

    

    yum库不够新,安装的nginx版本挺低,但现在不影响使用,如果需要更新版本,可以下载tar包自己编译安装。

    接下来安装uwsgi,我们使用pip install uwsgi安装。安装成功后,在python27的bin目录下面生成uwsgi可执行文件。

    我们将他移到/usr/bin/下面。

    编写一个运行脚本内容如下:

#!/bin/sh

/usr/bin/uwsgi -s /tmp/uwsgi.sock --uid www -C -M -p 10 -t 10 -R 10000 -d /tmp/uwsgi.log --pidfile /tmp/uwsgi.pid --vhost
echo "[started]"

    我们使用的是www用户,所以需要增加一个www用户

useradd www

    启动后,我们可以ps查看进程是否正常启动

    

    启动了10个工作进程。监听的是/tmp/uwsgi.sock ,log日志文件在/tmp/uwsgi.log

第四步 安装mysql和MySQL-python

   centos6.5上yum库默认的是mysql5.1.73,所以我们需要更新下yum库,添加yum源

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

   然后查看下mysql相关的库

    

    需要安装如下:mysql55w-libs, mysql55w-server, mysql55w-devel, mysql55w, MySQL-python.

    安装成功后,使用命令service mysqld start 启动即可,然后设置mysql的root用户密码

    命令:mysqladmin -uroot -p password mypassword,回车后,会提示输入密码,因为初始没有,所以直接回车即可。

    然后安装python的MySQLdb

    pip install mysql-python 或者 http://sourceforge.net/projects/mysql-python/


第五步 创建django项目,完成部署

    在项目目录下创建django项目

/usr/local/python27/bin/django-admin.py startproject mytest

    在项目目录下新增wsgi文件:django_wsgi.py

import os

import django.core.handlers.wsgi

os.environ['DJANGO_SETTINGS_MODULE'] = 'mytest.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

    如果需要配置数据库,则python manager.py migrate创建相关表结构。

    接下来配置nginx.conf

    nginx.conf 配置文件在/etc/nginx/nginx.conf

    在nginx.conf 中的http段里面添加一个server

server {
        listen       youserverport;
        server_name  youservername;

        location / {
                include uwsgi_params;
                uwsgi_pass unix:///tmp/uwsgi.sock;
                uwsgi_param UWSGI_CHDIR /home/data/mytest;
                uwsgi_param UWSGI_SCRIPT django_wsgi;
        }
        location /static {
                  root /home/data/mytest;
          }
    }

    server_name 和listen根据自己的需要配置,location / 里面用uwsge_pass将请求代理给uwsge,即uwsgi进程监听的/tmp/uwsgi.sock,    uwsgi_param参数CHDIR为项目地址,SCRIPT为我们在项目中创建的django_wsgi.py文件名(不包含后缀名)

    最后再配置了个static静态目录,减轻uwsgi和django的压力。

    然后重启nginx,重启uwsgi,到这里服务的环境已经部署完毕,可以访问对应的域名或者ip去尝试访问了。

    因为没有配置uwsgi根据代码文件修改后自动重启,所以之后如果修改了项目下的python文件,则需要手动重启uwsgi。

© 著作权归作者所有

共有 人打赏支持
子夜闻雪
粉丝 2
博文 35
码字总数 16415
作品 0
海淀
程序员
加载中

评论(1)

以谁为师
以谁为师
好好好
简易博客系统--SimpleBlog

笔者用过django一段时间了,是时候写点东西了。不过官网文档稍微有点复杂,对新手而言很困难,而网上的一些教程很多都过时了,最近看到一个外文的教程非常不错,基于最新的django1.9写的,通...

一刀 ⋅ 2015/01/04 ⋅ 0

CentOS环境如何将python2.6换成2.7版本?包括第三方库

项目环境:python2.7 django1.9.3 当前服务器环境:centos6.6 python2.6 当前的centos6.6默认安装的2.6,这个版本的python不支持django1.9,安装了python2.7,但是安装的第三方库无法使用,如...

红叔 ⋅ 2016/06/01 ⋅ 9

SimpleBlog 1.2.0 发布,基于最新 Django 开发的博客

SimpleBlog 1.2.0 发布了,基于Django1.9.5开发的简易博客系统1.2.0发布了。 更新说明: 升级到最新版本的Django1.9.5 部署平台迁移至PythonAnywhere 全文搜索升级 各种配置、模板、url、vie...

一刀 ⋅ 2016/04/25 ⋅ 8

django1.9使用django-pageination出现AttributeError错误处理

问题: 在django1.9使用django-pageination出现错误 AttributeError: 'WSGIRequest' object has no attribute 'REQUEST' 原因: 在django1.7中被弃用并使用更明确的和来替代,而在django1.9...

在湖闻樟 ⋅ 2016/03/01 ⋅ 0

简易博客开发(8)----django1.9 博客部署到pythonanywhere上

pythonanywhere只允许用户的一个应用是免费的,但这已经足够做一个博客了,开心之余不免又研究起来,用了一个下午的时间,这个丑陋的博客终于上线了 首先你得注册一个用户 http://pythonany...

terry_hding ⋅ 2016/02/15 ⋅ 0

django 学习之hello world

使用eclipse +django1.9+python2.7学习环境 在写完models和views之后,需要同步数据库 django1.9之后的不再使用sysdb的命令使用 1.manage.py migrate来初始化数据的基本表 2.使用 manage.py ...

信志 ⋅ 2016/09/10 ⋅ 0

DjangoX v0.3.2 发布,兼容 Django1.10 的后台系统

DjangoX v0.3.2 发布了,DjangoX 是一个强大灵活的 Django 数据管理和配置后台系统,依托于实际项目和生产环境互联网产品的总结积累,继承和扩展 Xadmin,DjangoX 努力做 Django 框架的优秀实...

Jone.x ⋅ 2017/03/01 ⋅ 1

DjangoX v0.2 发布,Django 数据管理配置后台系统

DjangoX v0.2 发布了,DjangoX 是一个强大灵活的Django数据管理和配置后台系统,依托于实际项目和生产环境互联网产品的总结积累,继承和扩展Xadmin,DjangoX 努力做 Django 框架的优秀实践项...

Jone.x ⋅ 2016/06/24 ⋅ 2

django view和models的问题

http://www.cnblogs.com/fnng/p/3737964.html 我是照着这个教程做的,用的是python2.7和django1.9 做到显示blog那里的时候显示不出来数据。 请问这是什么问题。。。应该不是urls的问题,因为...

隔壁的流氓王欧巴 ⋅ 2016/03/30 ⋅ 2

返回html变成字符串的问题

django1.9,python2.7 按照51cto的视频搭建了一个bbs,他写了一个 我看过,返回的html内容是对的, 而且单独放到网页里运行的结果也是对的,但是现在他把这个结果返回的时候,默认变成了字符...

隔壁的流氓王欧巴 ⋅ 2016/06/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

关于“幂等”操作

一个幂等(idempotent)操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 开发中, 我们经常考虑幂等操作的场景有“接口调用”、“MQ消费”、“自动任务”等 接口调用, 可能出现...

零二一七 ⋅ 17分钟前 ⋅ 0

Dubbo服务服务暴露之ProxyFactory Invoker

Dubbo服务暴露过程中有涉及到调用ProxyFactory 中方法获取Invoker对象的过程,现在我们来深究下源码,来看下这个过程是在做些什么,返回的Invoker 对象是什么,我们来看一下代码的切入点: ...

哲别0 ⋅ 32分钟前 ⋅ 0

GP两种连接方式性能测试

GP两种连接方式性能测试 Pivotal import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GPQueryStrin......

仔仔1993 ⋅ 36分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 58分钟前 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 今天 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 今天 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 今天 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 今天 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 今天 ⋅ 0

my.cnf, my-small.cnf, my-medium.cnf, my-large.cnf

1. my-small.cnf # Example MySQL config file for small systems.## This is for a system with little memory (<= 64M) where MySQL is only used# from time to time and it's importa......

周云台 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部