zoukankan      html  css  js  c++  java
  • Python3+Apache+Django+CentOS

    使用django开发的项目上到正式环境的环境搭建,系统软件版本:

    CentOS6.5
    setuptools-28.3.0.tar.gz
    pip-8.1.2.tar.gz
    Python-2.7.12.tgz
    pcre-8.39.tar.bz2
    mod_wsgi-4.5.7.tar.gz
    httpd-2.4.28.tar.gz
    apr-util-1.6.1.tar.gz
    apr-1.6.3.tar.gz

    (本来想放上阿里云的pypi镜像地址的,但是。。。。那个目录我实在是看不懂,有懂的同学麻烦告诉我一下吧)

    为啥不用yum?
    好问题,因为正式环境里的系统一般是最小化安装的,如果使用yum进行默认安装,各软件之间的调用的文件路径可能会不一样,使用源码安装可以指定组件的路径,提高部署成功的机率

    1、安装python2.7
    为啥不用自带的2.6,亲们请看这里,https://segmentfault.com/q/1010000007956173?_ea=1504132

    yum -y install zlib-devel openssl-devel
    wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
    tar xzf Python-2.7.12.tgz
    cd Python-2.7.12/
    ./configure --prefix=/usr/local/python CFLAGS=-fPIC
    make && make install


    *不安装zlib-devel的话,在安装setuptools时会报错。不安装openssl-devel的话,在安装django时会报错。不加CFLAGS=-fPIC参数,安装mod_wsgi时会报错。

    将python2.7加入环境变量
    在/etc/profile文件末尾添加以下内容:

    export PATH=/usr/local/python/bin:$PATH

    然后使配置文件生效:

    . /etc/profile

    2、 安装setuptools

    wget https://pypi.python.org/packages/6b/dd/a7de8caeeffab76bacf56972b3f090c12e0ae6932245abbce706690a6436/setuptools-28.3.0.tar.gz
    tar xzf setuptools-28.3.0.tar.gz
    cd setuptools-28.3.0/
    python setup.py install

    3、 安装pip

    wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz
    tar xzf pip-8.1.2.tar.gz
    cd pip-8.1.2/
    python setup.py install

    4、安装apr

    wget http://apache.fayea.com/apr/apr-1.5.2.tar.bz2
    tar xjf apr-1.6.3.tar.bz2 
    cd apr
    -1.6.3/
    .
    /configure --prefix=/usr/local/apr make && make install

    5、 安装apr-util

    wget http://apache.fayea.com/apr/apr-util-1.5.4.tar.bz2
    tar xjf apr-util-1.6.1.tar.bz2
    cd apr-util-1.6.1/
    ./configure --with-apr=/usr/local/apr/
    make && make install
    cd ../

    6、 安装pcre
    复制代码

    yum -y install gcc-c++
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.bz2
    tar xjf pcre-8.39.tar.bz2
    cd pcre-8.39/
    ./configure --prefix=/usr/local/pcre
    make && make install

    7、 安装httpd(apache)

    # yum -y install perl
    wget http://apache.fayea.com/httpd/httpd-2.4.23.tar.bz2
    tar xjf httpd-2.4.23.tar.bz2
    cd httpd-2.4.23/
    ./configure --prefix=/usr/local/httpd --with-pcre=/usr/local/pcre
    make && make install

    在/etc/profile文件末尾添加以下内容:

    export PATH=/usr/local/httpd/bin:$PATH

    然后使配置文件生效:

    . /etc/profile

    8、 安装mod_wsgi

    wget https://pypi.python.org/packages/28/a7/de0dd1f4fae5b2ace921042071ae8563ce47dac475b332e288bc1d773e8d/mod_wsgi-4.5.7.tar.gz
    tar xzf mod_wsgi-4.5.7.tar.gz
    cd mod_wsgi-4.5.7/
    ./configure --with-apxs=/usr/local/httpd/bin/apxs --with-python=/usr/local/python/bin/python
    make && make install
    chmod 755 /usr/local/httpd/modules/mod_wsgi.so(安装好之后应该是自动就将该文件改成755 的)

    9、 安装Django

    pip install django

    10、安装mysql的开发包

    yum -y install mysql-devel

    11、配置Django,重点来了:新建一个目录或者使用httpd的默认目录,我这里的默认目录为/usr/local/httpd/htdocs/,如果不知道默认目录在哪,也可以查看配置文件里DocumentRoot那一行,看那里写的是什么
    将你的项目整个放上来,放上来的结构应该是这样的

    12、在你的项目里同名文件下应该会有一个wsgi.py的文件,在里添加

    import sys
    sys.path.append('/usr/local/httpd/htdocs/mysite0')

    13、配置httpd(Apache)
    配置Apache
    启用虚拟主机配置文件
    编辑/usr/local/httpd/conf/httpd.conf文件,找到下面这句并取消注释:

    Include conf/extra/httpd-vhosts.conf

    在一堆以LoadModule开头的段落下添加一行:

    LoadModule wsgi_module modules/mod_wsgi.so

    修改虚拟主机配置文件
    编辑/usr/local/httpd/conf/extra/httpd-vhosts.conf文件,将原来的配置全部注释掉(已经注释过的就不用再注释了),然后在末尾添加以下内容:

    复制代码

     1 <VirtualHost *:80>
     2     DocumentRoot "/usr/local/httpd/htdocs/mysite0/mysite0"
     3 
     4     Alias /static/ /usr/local/httpd/htdocs/mysite0/static/
     5     <Directory "/usr/local/httpd/htdocs/mysite0/static">
     6         Options FollowSymlinks
     7         AllowOverride none
     8         Require all granted
     9     </Directory>
    10     WSGIScriptAlias / "/usr/local/httpd/htdocs/mysite0/mysite0/wsgi.py"
    11 
    12     <Directory "/usr/local/httpd/htdocs/mysite0/mysite0">
    13         AllowOverride All
    14         Require all granted
    15     </Directory>
    16 </VirtualHost>            

    14、 启动你的django

    apachectl start

    碰到的问题:

    页面报400:
    将项目里settings.py里允许主机更改为ALLOWED_HOSTS = ["*"]

    页面找不到静态文件(css,js....)
    将先要看apache里的vhost.conf站点配置文件里static别名,注意斜杠,贝勒因为这个斜杠的问题也是尴尬了很久哇
    其次看你的settings文件里配置是不是下面这个样子的

    STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
    )

    因为开发环境里的使用的python3.6,生产环境使用提2.7,所以在部署的时候也需要安装pymysql,并且在项目的同名目录里的__init__.py里添加如下代码:

    import  pymysql
    pymysql.install_as_MySQLdb()

    本文大部分是参阅了昨、夜星辰的文件,原文地址http://www.cnblogs.com/yestreenstars/p/5949037.html

  • 相关阅读:
    Django进阶Model篇006
    nginx 实现反向代理、负载均衡、高可用
    【springcloud】Zuul高级配置(zuul--3)
    【springcloud】Zuul高级配置(zuul--2)
    【springcloud】API Gateway 的路由和过滤(Zuul--1)
    【springcloud】服务熔断与降级(Hystrix)
    【springcloud】hystrix面试题
    时间复杂度On和空间复杂度O1是什么意思?
    2019年 Java 面试题解析
    【springcloud】模拟RPC调用(Feign)
  • 原文地址:https://www.cnblogs.com/baylorqu/p/7815296.html
Copyright © 2011-2022 走看看