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 webmaster@a.com
    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對數據庫有着良好的支持, 存儲虛擬主機的用戶信息天然也很方便.
相關文章
相關標籤/搜索