PHP开发虚拟主机管理系统的思路

拿Nginx来说,在主配置nginx.conf里包含虚拟主机配置:
include sites-enabled/*.conf;
新建虚拟主机时就在sites-enables里新建一个文件,比如:
sites-enabled/a.com.conf
server {
    listen          80;
    server_name     www.a.com;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
    }
}
也就是访问 www.a.com 都会反向代理给后端Apache监听的8080处理.
利用Nginx的转发可以实现在一台服务器上跑多个版本的Apache(PHP),只要不同版本的Apache(PHP)监听不同的端口即可.
比如Apache(PHP5.4)监听的端口是8081,那需要PHP5.4支持的用户网站在生成Nginx虚拟主机配置时就转发到8081端口.
同理,利用Nginx的fastcgi_pass转发可以实现在一台服务器上跑多个版本的PHP-FPM,只要PHP-FPM监听不同的端口即可.

Apache主配置文件httpd.conf中载入虚拟主机配置:
Include conf/extra/httpd-vhosts.conf
httpd-vhosts.conf里有载入vhosts下的conf文件:
Include conf/extra/vhosts/*.conf
里面的conf/extra/vhosts/a.com.conf虚拟主机:
<VirtualHost *:8080>
    ServerAdmin [email protected]
    DocumentRoot "/png/www/a.com/public_html"
    ServerName www.a.com
    ServerAlias a.com
    ErrorLog "/png/www/a.com/logs/httpd_error_log"
    CustomLog "/png/www/a.com/logs/httpd_access_log" combined

    <Directory "/png/www/a.com/public_html">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

/png/www/a.com是虚拟主机的目录,里面的public_html是根目录,为虚拟主机用户分配一个该目录的FTP用户即可,比如使用ProFTPD的ftpasswd生成一个账户:
http://my.oschina.net/eechen/blog/303398

开发一个虚拟主机管理系统,无非就是调用adduser/ftpasswd生成FTP账户,以及生成Nginx和Apache的虚拟主机配置,生成后用nginx -t和httpd -S测试配置是否正确后重载服务生效.而PHP提供了众多 文件系统操作函数和 字符串处理函数(替换/ 正则匹配),PHP对数据库有着良好的支持, 存储虚拟主机的用户信息自然也很方便.

你可能感兴趣的:(PHP开发虚拟主机管理系统的思路)