使用apache部署多个django项目,django项目和php项目混合部署

最近部署项目,遇到了几个问题,想在同一台服务器上部署一个django开发的项目和一个以前开发的php项目,肿么搞?

 

   通过网上搜索和牛人帮助,基本实现了功能,在此记录一下成长的过程。

1、关于apache设置,一台服务器支持多网站多域名
引用被人的:

1
2
3
4
5
当apache在读取httpd.conf过程中遇到NameVirtuaHost指令时,它为指定的IP地址建立一个虚拟主机表;当apache分析
httpd.conf时,每当它遇见一个<VirtualHost>指令,该指令指定的IP地址与前面分配给虚拟主机驻留的IP地址相同时,
它都在虚拟主机列表上为该IP地址添加虚拟主机;当它找到一个虚拟主机,其 
ServerName指令与输入请求的Host头部匹配时,apache就使用该虚拟主机容器中的配置来响应该请求,即使用多个名字指向同一个ip地址。
在本例中,Web主机只拥有一个IP地址(合法地址)200.1.1.1,使用基于主机名称的方式设定多个虚拟主机。

我的配置:

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
40
41
42
43
44
<VirtualHost *:80>   ### django项目的配置
    ServerAdmin example@126.com                           # 自己的邮箱
    DocumentRoot "/your/path"                             # 项目路径
    ServerName ww.example.com                            # 域名                             
    ServerAlias example.com                               # 别名
    ErrorLog "logs/error.err"                             # 错误日志记录的位置
    CustomLog "logs/acc.access" common                    # 访问日志的记录位置
    WSGIScriptAlias / "/your/path/wsgi.py"                # wsgi.py 的路径
    <Directory "/your/path">
        Order allow,deny
        Allow from all
    </Directory>
    # django下静态资源访问配置,根据自己的实际路径来配置
    Alias /favicon.ico "/your/path/favicon.ico"
    Alias /media "/your/path/media"
    Alias /static "/your/path/collectedstatic"
    <Directory "/your/path/collectedstatic">
        Order deny,allow
        Allow from all
    </Directory>
    <Directory "/your/path/media">
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>
<VirtualHost *:80>   ##### php项目的配置
    ServerAdmin example1@126.com                         # 自己的邮箱
    DocumentRoot "/your/path/php"                        # php项目的路径
    ServerName                           # 域名 
    ErrorLog "logs/ce.err"
    CustomLog "logs/ce.access" common
    <Directory "/your/path/php">
        Options FollowSymLinks
        AllowOverride All
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

参考地址:

1
2
3
http://bbs.51cto.com/thread-933764-1-1.html
http://www.foreric.com/blogs/5/
www.zijin5.com/2013/07/linux-apache-php-django/

特意粘贴下这段,话说是配置两个django项目的:

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
40
41
42
43
44
45
46
下面黑体字的地方是配置DaemonProcess的地方
参考:   http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process
    http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGISocketPrefix
    
    这里再稍微解释一下WSGISocketprefix:
由于主进程httpd和子进程之间是通过sockets通信的,要通过在特定的文件上面新建sockets文件进行通信。如果你不指定sockets等文
件的存放地址的话,默认是在httpd的log文件夹下(/var/log/httpd/ 
我的CentOS是这样的)。这样有一个问题就是子进程对这个文件可能没有读写权力,所以通过WSGISocketPrefix指定到/var/run
/的wsgi(要自己新建一个)下,这样子进程就有了和主进程沟通的权力了。
WSGISocketPrefix /var/run/wsgi #
<VirtualHost *:80>
        ServerAdmin eric.alluse@gmail.com
        ServerName www.tedxnju.com
        WSGIScriptAlias / /var/www/tedxnju/tedxnju/wsgi.py
        WSGIDaemonProcess tedxnju.com user=Eric processes=2 threads=15
        WSGIProcessGroup tedxnju.com
        <Directory /var/www/tedxnju/tedxnju>
        <Files wsgi.py>
        Order deny,allow
        Allow from all
        </Files>
        </Directory>
        ErrorLog logs/tedxnju.com-error_log
</VirtualHost>
<VirtualHost *:80>
        ServerAdmin eric.alluse@gmail.com
        ServerName www.foreric.com
        ServerAlias foreric.com
        WSGIScriptAlias / /var/www/myblog/myblog/wsgi.py
        WSGIDaemonProcess myblog.com user=Eric processes=2 threads=15
        WSGIProcessGroup myblog.com
        <Directory /var/www/myblog/myblog>
        <Files wsgi.py>
        Order deny,allow
        Allow from all
        </Files>
        </Directory>
        ErrorLog logs/myblog.com-error_log
</VirtualHost>

apache相关资粮:

1
http://www.csdn123.com/html/2013/netfriend_0216/222061.html

 
apache 多端口配置
网上资源很多,同时也很杂,很多时候并不完全符合我们的要求,浪费时间。
应该有两种方式:1.直接修改httpd.conf
2.开启虚拟端口:修改httpd-vhosts.conf文件内容
我这里采用第二种:比较简单分三步
1.在httpd.conf中添加新的监听端口:Listen 8887
2.  # Virtual hosts
#虚拟主机 开启多端口 原先是注释掉的
Include conf/extra/httpd-vhosts.conf
3.修改httpd-vhosts.conf内容,注意此文件的路径。
新增如下内容:

<VirtualHost *:8887>
   ServerAdmin webmaster@dummy-host.localhost
  DocumentRoot "D:\Apache Software Foundation\apache-tomcat-6.0.33\webapps2"
  ServerName localhost
  ServerAlias localhost
  ErrorLog "logs/dummy-host.localhost-error.log"
  CustomLog "logs/dummy-host.localhost-access.log" common
  <Directory "D:\Apache Software Foundation\apache-tomcat-6.0.33\webapps2">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>