0%

Apache配置Django和php共存

前言:

本来跑了个django网站,后来为了方便做web题又安装了PHP study,于是原本装的apache和phpstudy内置的apache服务冲突了,导致每回都要手动重启Apache。

干脆把原来装的Apache关掉,让Django和php用不同的端口解析。

0x00 配置Django及其mod_wsgi

安装mod_wsgi

  1. 注意,因为apache是32位的,所以mod_wsgi也应该选择32位的。mod_wsgi的官网在这里。

    1
    https://code.google.com/p/modwsgi/

    但是因为没有windows编译版本(自己编译几乎都是以失败告终),所幸在这里可以下载到编译版本:

    1
    http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

    ​ 这里选择

    1
    mod_wsgi-4.6.5+ap24vc14-cp36-cp36m-win32.whl

    将你下载的.whl 文件,放在一个目录中,我放在了 python的 \Scripts 文件夹中,然后 使用cmd cd命令到这个目录

  2. 使用pip 命令进行安装 :

    1
    pip install mod_wsgi-4.6.4+ap24vc14-cp36-none-win_amd64.whl

    注意,现在目录一个在 python的 \Scripts 因为这东西安装完,你会发现在这个目录有一个 mod_wsgi-express.exe 的东西哦

    安装完毕之后,执行命令:

    1
    mod_wsgi-express module-config

命令执行完毕之后 你会得到以下内容

1
2
3
LoadFile "c:/users/administrator/appdata/local/programs/python/python36-32/python36.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python36-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python36-32"

点击并拖拽以移动

把这三行目录加载到apache的配置文件当中,即httpd.conf文件中,相当于apache加载mod_wsgi模块,然后配置Django的相关路径即可将Django跑起来。

但是我们这里要配置php和Django共存,所以配置文件得改改。

0x02 phpstudy配置

phpstudy中新建两个网站:

1568358365145.png

按php站设置默认即可,注意端口要不一样。

0x03 修改Apache配置文件

配置 D:\phpstudy_pro\Extensions\Apache2.4.39\conf\vhosts\127.0.0.1_8000.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 这一行要放在VirtualHost配置外面
WSGIPythonHome "c:/users/hp/appdata/local/programs/python/python37"

# 指定项目目录,即你的Django项目路径
WSGIPythonPath D:/phpstudy_pro/WWW/django_web/django_app

<VirtualHost *:8000>
ServerAdmin admin@amsilence.com
DocumentRoot "D:/phpstudy_pro/WWW/django_web"
# ServerName 127.0.0.1
# ErrorLog "/var/httpd/logs/www-error_log"
# CustomLog "/var/httpd/logs/www-access_log" common
# Alias /html/ /var/www/server/html/

# WSGIScriptAlias / /var/www/server/rplus/wsgi.py
# WSGIPythonPath /var/www/server
# 添加mod_wsgi.so模块,这三行是上面命令行中显示出来的
LoadFile "c:/users/hp/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/hp/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"

# 指定项目的wsgi.py配置文件路径,这个py文件是在你的Django项目中
WSGIScriptAlias / D:/phpstudy_pro/WWW/django_web/django_app/django_app/wsgi.py



</VirtualHost>
<Directory D:/phpstudy_pro/WWW/django_web/django_app/picture>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

# 项目静态文件地址, Django项目中静态文件的路径
Alias /static D:/phpstudy_pro/WWW/django_web/django_app/socialdb/static
<Directory D:/phpstudy_pro/WWW/django_web/django_app/socialdb/static>
AllowOverride None
Options None
Require all granted
</Directory>

配置 D:\phpstudy_pro\Extensions\Apache2.4.39\conf\vhosts\localhost_80.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<VirtualHost _default_:80>
DocumentRoot "D:/phpstudy_pro/WWW"
FcgidInitialEnv PHPRC "D:/phpstudy_pro/Extensions/php/php5.5.9nts"
AddHandler fcgid-script .php
FcgidWrapper "D:/phpstudy_pro/Extensions/php/php5.5.9nts/php-cgi.exe" .php
<Directory "D:/phpstudy_pro/WWW">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
DirectoryIndex index.php
</Directory>
ErrorDocument 400 /error/400.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
ErrorDocument 501 /error/501.html
ErrorDocument 502 /error/502.html
ErrorDocument 503 /error/503.html
ErrorDocument 504 /error/504.html
ErrorDocument 505 /error/505.html
ErrorDocument 506 /error/506.html
ErrorDocument 507 /error/507.html
ErrorDocument 510 /error/510.html
</VirtualHost>

正常情况下,phpstudy会在建立网站时自动配置http.conf,所以不需要修改http.conf的内容。

只要保证http.conf中vhosts相关文件引入了即可:

1568359583724.png

0x04

重启Apache服务。