• Linux下安装Apache并以mod_wsgi方式部署django站点


    源码编译方式安装Apache

    首先下载Apache源码压缩包,地址为http://mirror.bit.edu.cn/apache/httpd/

    继续下载apr和apr-util压缩包,地址为http://mirror.bit.edu.cn/apache/apr/

    下载pcre压缩包,地址为http://ftp.exim.llorien.org/pcre/

    l 安装arp

    tar -zxf apr-1.5.0.tar.gz #解压压缩包 压缩包名称根据版本号决定
    cd apr-1.5.0 #进入解压目录
    ./configure --prefix=/usr/local/apr #进行安装配置 设置安装位置
    make #编译
    sudo make install #安装
    

    l 安装apr-util

    tar –zxvf apr-util-1.5.3.tar.gz #解压 压缩包名称根据版本号决定
    cd apr-util-1.5.3 #进入解压目录
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
    make 
    sudo make install
    

    l 安装pcre

    unzip –o pcre-8.34.zip #解压 文件名依据版本号而定
    cd pcre-8.34
    ./configure --prefix=/usr/local/pcre
    make
    sudo make install
    

    l 安装Apache

    tar –zxvf httpd-2.4.7.tar.gz #解压 我安装的为2.4.7版本
    cd httpd-2.4.7
    ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
    make
    sudo make install
    

    之后启动Apache,

    cd /usr/local/apache2/bin
    
    sudo apachectl –k start
    或者 
    sudo service apache2 start
    

    如果看到如下页面,说明安装成功。

    如何控制Apache服务

    启动:

    sudo service apache2 start 
    或者
    sudo apachectl start
    

    停止:

    sudo service apache2 stop
    或者
    sudo apachectl stop
    

    重启:

    sudo service apache2 restart 
    或者
    sudo apachectl restart
    

    重新加载站点:

    sudo service apache2 reload

     

    如何使Apache支持django

    采用mod_wsgi的方式。

    首先需要下载mod_wsgi-2.4.tar.gz。

    可以到官网下载。

    还可以到点这里直接下载。

    接下来执行如下命令,对压缩包进行解压;

    tar –zxvf mod_wsgi-3.4.tar.gz

    然后cd到解压之后的目录,执行如下命令,产生配置编译配置文件;

    ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/bin/python

    其中/usr/local/apache2为Apache的安装目录,确保apxs存在于bin目录中,/usr/bin/python为Ubuntu中python默认安装位置。

    接下来执行make 命令,进行编译;

    make

    最后执行如下命令,进行安装;

    sudo make install

    如果到这里都顺利的话,会提示“chmod 755 /usr/local/apache2/modules/mod_wsgi.so” 为mod_wsgi.so赋权。如图:

    照着提示输入命令即可:

    chmod 755 /usr/local/apache2/modules/mod_wsgi.so

    接下来,安装Django:

    django官网(https://www.djangoproject.com/download/)上提供了两种安装方式。

    l pip方式

    pip install Django==1.6.2

    l 直接下载压缩包安装,下载地址https://www.djangoproject.com/download/1.6.2/tarball/

    tar xzvf Django-1.6.2.tar.gz   #先解压cd Django-1.6.2 #进入解压后目录
    sudo python setup.py install
    
    

    上面两种方式任选一种即可。

    安装完成后可以在终端窗口中查看是否安装成功

    我安装的是django 1.7版本。

    如何新建一个django网站

    Apache的默认www服务地址为/var/www,刚刚安装好服务后,里面只有一个index.html的网页文件。

    接着说一下Apache,由于Apache在Linux下安装后,安装文件是分两部分存在的,一部分在安装时指定的目录中,另一部分在/etc/apache2目录中。

    由于我安装Apache时,指定的目录是/usr/local/apache2,所以我的机器上apache分布在如下两个目录,即:

    /usr/local/apache2   #可执行程序目录

    /etc/apache2         #配置文件目录

    进入/etc/apache2目录,查看目录结构,其中蓝色为目录,白色为文件。

    httpd.conf 文件通常是一个空文件,以后设置时可以加入以下指令;

    下面我们来看一下httpd.conf中的几条指令,“#”后加入了注释说明;
    Port 80  #定义了web服务器的侦听端口,默认值为80,它是TCP网络端口之一。若写入多个端口,以最后一个为准。 

    User apache(Unix平台最流行的WEB服务器平台)  #一般情况下,以nobody用户和nobody组来运行web服务器,因为web 

    Group apache(Unix平台最流行的WEB服务器平台)   #服务器发出的所有的进程都是以root用户身份运行的,存在安全风险。 

    ServerAdmin root@localhost  #指定服务器管理员的E-mail地址。服务器自动将错误报告到该地址。 

    ServerRoot /etc/httpd    #服务器的根目录,一般情况下,所有的配置文件在该目录下 

    ServerName new.host.name:80  #web客户搜索的主机名称 

    KeepAliveTimeout 15  #规定了连续请求之间等待15秒,若超过,则重新建立一条新的TCP连接 

    MaxKeepAliveRequests 100   #永久连接的HTTP请求数 

    MaxClients 150   #同一时间连接到服务器上的客户机总数 

    ErrorLog logs/error_log   #用来指定错误日志文件的名称和路径 

    PidFile run/httpd.pid   #用来存放httpd进程号,以方便停止服务器。 

    Timeout 300  #设置请求超时时间,若网速较慢则应把值设大。 

    DocumentRoot /var/www/   #用来存放网页文件

    magic文件中包含的是有关mod_mime_magic模块的数据, 一般不需要修改它;

    ports.conf则为服务器监听IP和端口设置的配置文件;

    mods-available目 录下是一些.conf和.load 文件, 为系统中可以使用的加载各种模块的配置文件, 而mods-enabled目录下则是指向这些配置文件的符号连接, 从配置文件apache(Unix平台最流行的WEB服务器平台)2.conf 中可以看出, 系统通过mods-enabled目录来加载模块, 也就是说, 系统仅通过在此目录下创建了符号连接的mods-available 目录下的配置文件来加载模块。同时系统还提供了两个命令 a2enmod 和 a2dismod用于维护这些符号连接。这两个命令由 apache(Unix平台最流行的WEB服务器平台)2-common 包提供。命令各式也非常简单: a2enmod [module] 或 a2dismod [module];

    sites-available目 录下为配置好的站点的配置文件, sites-enabled 目录下则是指向这些配置文件的符号连接, 系统通过这些符号连接来起用站点 sites-enabled目录下的符号连接附有一个数字前缀, 如000-default, 这个数字用于决定启动顺序, 数字越小, 启动优先级越高. 系统提供了两个命令 a2ensite 和 a2dissite 用于维护这些符号连接。这两个命令由 apache(Unix平台最流行的WEB服务器平台)2-common 包提供;

    Apache配置介绍到这里,接下来开始配置Django网站。

    Apache默认的服务器地址为var/www目录,没有必要修改此位置,cd到/var/www目录,新建Django项目,执行如下命令:

    sudo django-admin.py startproject mysite

    创建的项目目录结构如下

    mysite/

       manage.py

       mysite/ __init__.py

           settings.py

           urls.py

           wsgi.py

    可以通过

    python manage.py runserver 8000

    测试django项目是否创建成功。如果提示错误,可能是由于django默认使用sqllite数据库的原因,只要在mange.py同级目录中添加db.sqllite3即可。

    之后,我打算将mysite这个站点,在端口8888下运行。

    修改/etc/apache2/ports.conf ,在其中的

    NameVirtualHost *:80
    Listen 80

    下面添加

    NameVirtualHost *:8888
    Listen 8888

    表示VirtualHost *:8888的虚拟主机监听8888端口,而默认的VirtualHost *:80的虚拟主机监听80端口。

    接下来让apache来加载我们自己的工程网站,去apache的配置目录/etc/apache/sites-available, 新建一个我们网站的配置文件。

    sudo vim mysite

    添加如下配置:

    <VirtualHost *:8888>    
    	DocumentRoot /var/www/mysite/mysite    
    	<Directory /var/www/mysite/mysite>        
    		Order allow,deny        
    		Allow from all    
    	</Directory>    
    
    WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py</VirtualHost>

    在/etc/apache2/httpd.conf添加如下配置:

    <VirtualHost *:8888>    
    	DocumentRoot /var/www/mysite/mysite    
    	<Directory /var/www/mysite/mysite>        
    		Order allow,deny        
    		Allow from all    
    	</Directory>    
    
    WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py</VirtualHost>

    最后在/var/www/mysite/mysite/wsgi.py中添加如下代码:

    import sys
    sys.path.append("/var/www/mysite/")

    将网站目录添加到环境变量,如果网站目录不再环境变量中,会出现错误。

    激活我新建的mysite网站,执行如下命令:

    sudo a2ensite mysite #其中mysite就是sites-available中新建的那个配置文件的名称

    重新加载网站:

    sudo service apache2 reload

    之后执行

    sudo service apache2 restart

    重启apache服务。

    在浏览器打开127.0.0.1:8888,会看到如下页面:

    注:如果不想新建网站配置文件,可直接在etc/apache2/httpd.conf中添加配加默认配置即可:

    WSGIScriptAlias / "/ var/www/mysite/mysite/wsgi.py"
    	<Directory " /var/www/mysite/mysite">
    		Order Deny,Allow
    		Allow from all
    	</Directory>



    初次配置,如有错误及疏漏之处,还请各位看官提醒、指点,或者有任何问题也可留言说明。

  • 相关阅读:
    rpmdb open failed 的解决办法
    centos7 搭建vsftpd服务并锁定用户的家目录
    centos7 搭建samba服务
    python检测是否为数字
    python的random模块
    利用python编写一个简单的猜数字游戏
    在centos7中利用kvm创建虚拟机并设置为桥接模式
    支付宝提现
    冒泡排序(数组排序)
    全选获取对应值
  • 原文地址:https://www.cnblogs.com/fengzheng/p/3619406.html
Copyright © 2020-2023  润新知