Apache + Django环境搭建

    环境:Macbook,conda,python2.7

1、安装mod_wsgi模块

    通过pip安装:pip install mod_wsgi。网络上很多教程说通过homebrew安装或者通过源码安装,实测失败。

    安装后的路径为:/Users/XXX/anaconda3/envs/djg/lib/python2.7/site-packages/mod_wsgi

2、Apache配置

    Mac系统自带Apache,执行如下命令启动Apache:

sudo apachectl start

    在浏览器访问localhost,提示“It works!”说明启动成功。

    (1)配置wsgi支持

    打开配置文件:/private/etc/apache2/httpd.conf,在LoadModule部分添加下面的配置:其中,若是不知道mod_wsgi-py27.so的具体路径,可以在conda的envs中进行搜索

LoadModule wsgi_module /Users/XXX/anaconda3/envs/djg/lib/python2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so

    (2)配置虚拟主机

    主要目的是方便多个网站的管理

    在httpd.conf中,取消如下配置的注释 

Include /private/etc/apache2/extra/httpd-vhosts.conf

    打开/etc/apache2/extra/httpd-vhosts.conf文件,修改为:

include /private/etc/apache2/extra/vhosts/localhost.conf
include /private/etc/apache2/extra/vhosts/dev.mysite.com.conf

    这里一行就是一个站点的配置文件,下面为这些站点编辑conf文件:

    在extra下新建目录vhosts

sudo mkdir -p /etc/apache2/extra/vhosts/

    在 vhost目录下新建localhost.conf和dev.mysite.com.conf文件

    localhost.conf:

<VirtualHost *:80>
    DocumentRoot "/Users/xx/Sites/localhost"
    ServerName localhost
    ErrorLog "/Users/xx/Sites/logs/localhost-error_log"
    CustomLog "/Users/xx/Sites/logs/localhost-access_log" common
    <Directory "/Users/xx/Sites/localhost">
            Require all granted
    </Directory>
</VirtualHost>

    dev.mysite.com.conf:(这是真正要建立的站点的配置文件,Apache就是根据这个文件来部署我们的站点)

<VirtualHost *:80>

#    LogLevel info

    ServerName dev.mysite.com
    ServerAdmin admin@mysite.com

    # Static files
    DocumentRoot "/Users/XX/Sites/mysite.com"
    Alias /static/ /Users/XX/Sites/mysite.com/static/

    <Directory "/Users/XX/Sites/mysite.com/mysite">
        Require all granted
    </Directory>

    <Directory "/Users/XX/Sites/mysite.com/static">
        Order deny,allow
        Allow from all
    </Directory>

    # WGSI configuration
    WSGIDaemonProcess mysite.com processes=2 threads=15 display-name=%{GROUP} python-path=/Users/XX/Sites/mysite.com/mysite/:/Users/XX/anaconda3/envs/djg/lib/python2.7/site-packages

    WSGIProcessGroup mysite.com

    WSGIScriptAlias / /Users/XX/Sites/mysite.com/mysite/mysite/wsgi.py

    <Directory "/Users/XX/Sites/mysite.com/mysite/mysite">
        <Files wsgi.py>
            Order allow,deny
            Allow from all
        </Files>
    </Directory>

    #log dir
    ErrorLog "/Users/XX/Sites/logs/localhost-error_log"
	CustomLog "/Users/XX/Sites/logs/localhost-access_log" common

</VirtualHost>

    其中,ServerName是站点的域名,想要通过域名访问,还需要对本机的/etc/hosts进行修改,加入一行:

127.0.0.1       dev.mysite.com

    static部分是静态文件的存放目录(css、fonts、img、js等),下面还需修改setting的配置,使django执行collectstatic时指向该目录

    <Directory>部分是设置访问权限的

    WGSI configuration部分设置wsgi的路径,其中WSGIScriptAlias指向django项目的wsgi.py文件

    log部分设置log的目录,用以查看错误日志

    (3)测试配置文件,看是否有语法错误、路径错误等

apachectl configtest

    提示Syntax OK,说明没有错误 

3、新建django项目

    在~目录下新建一个Sites目录,用以存放所有的站点文件,在Sites目录下新建logs目录,存放日志信息,再在其中建一个mysite.com目录作为我们的测试站点,在其中新建一个static文件用以存放静态文件。

    在mysite.com目录中,执行如下命令,新建一个django项目,项目名称为mysite

django-admin.py startproject mysite

    新建成功后,mysite.com下多了一个文件夹mysite,进入该目录,执行如下命令,新建一个app,名称为index

python manage.py startapp index

    进入index文件夹,新建一个templates目录,在templates目录下新建index.html文件,内容不重要,只要是正确的html文件即可。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Test</title>
    </head>
    
    <body>
    	Hello apache and django
    </body>
</html>

    修改mysite/index/views.py,添加如下函数:

def index(request):
	return render(request, 'index.html')

    打开mysite/mysite/settings.py,修改如下部分:

#添加允许访问的主机,'*'表示所有主机。如果没添加部署后将会拒绝访问
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    #添加一行
    'index',
]
STATIC_URL = '/static/'
#添加一行,指示static文件的存放位置
STATIC_ROOT = '/Users/XX/Sites/mysite.com/static'

    修改mysite/mysite/urls.py,添加url如下:

from django.conf.urls import url
from django.contrib import admin
from index import views as index_view

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', index_view.index),
]

    在mysite目录下执行如下代码,收集静态文件    

python manage.py collectstatic

4、测试

    重启apahce

sudo apachectl graceful

    在浏览器地址栏输入地址http://dev.mysite.com/index,访问结果如下,说明环境搭建成功

    

    如果出错,打开Sites/logs目录下的相关log文件查看错误日志

5、扩展

    在以后新建项目时,需要做的工作如下:

    (1)在/etc/apache2/extra/vhosts/下新建一个conf文件,并进行相关配置

    (2)在/etc/apache2/extra/httpd-vhosts.conf文件中,include(1)中的conf文件

    (3)新建django项目,进行站点开发

    (4)重新加载Apache配置:sudo apachectl graceful

 

参考:mac osx上面部署Django项目apache+mysql+mod_wsgi

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值