>백엔드 개발 >PHP 튜토리얼 >PHP 관리 nginx 가상 호스트 쉘 스크립트 example_php 기술

PHP 관리 nginx 가상 호스트 쉘 스크립트 example_php 기술

WBOY
WBOY원래의
2016-05-16 20:31:191272검색

이 문서의 예에서는 참조용으로 모든 사람과 공유되는 PHP 관리 nginx 가상 호스트 셸 스크립트에 대해 설명합니다. 구체적인 분석은 다음과 같습니다.

PHP를 쉘 스크립트로 사용하는 것은 매우 편리합니다. 물론, 우리는 PHP 스크립트를 사용하여 nginx 가상 호스트를 관리할 수 있습니다. 참고할 수 있는 작성자의 스크립트 파일은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
#!/usr/bin/php -q

시작: fwrite(STDOUT,"============Vhost 스크립트=============n");
fwrite(STDOUT,"= 작업 n을 선택하세요");
fwrite(STDOUT,"= 1.만들기 2.삭제 3.종료");
fwrite(STDOUT,"==================================n");
$operate = 트림(fgets(STDIN));
if ( $operate == 1 ){
fwrite(STDOUT,"도메인 이름을 입력하세요:");
$domain = 트림(fgets(STDIN));
$path = "/home/sites/{$domain}";
$nginx_conf = "/etc/nginx/sites/{$domain}";
$nginx_template = "/etc/nginx/template/site_conf";
$apache_conf = "/etc/httpd/conf/httpd.conf";
$conf_str = "";

//변수 초기화

if( file_exists($path ) ) exit ("도메인이 존재합니다!n");
else mkdir($path,0700);
if(file_exists($nginx_conf)) exit ("Nginx 구성 파일이 존재합니다!n");
그렇지 않으면 {
$conf_str = file_get_contents( $nginx_template );
}

//디렉토리 감지 및 구성 파일 복사

eval ( "$conf_str = "$conf_str";" );

$succes = file_put_contents($nginx_conf,$conf_str);
if( !$succes ) exit ("구성 파일 쓰기 실패!");
else echo "Vhost 만들기 성공!n";
시작하세요;
//구성 파일 쓰기
}
else if ($operate == 2){
$confs_dir = dir("/etc/nginx/sites");
$confs_list = 배열();
$count = 0;
while ( false !== ( $conf_file = $confs_dir->read() ) ){
            if( $conf_file == "." ) 계속;
If( $conf_file == ".." ) 계속;
If ( is_file( $confs_dir->path ."/". $conf_file) ) {
$confs_list[$count] = $conf_file;
}
}
echo "삭제할 사이트 번호를 선택하세요:n";
If( 개수( $confs_list ) >0 )
foreach( $confs_list as $k=>$v ){
                  echo "{$k}. $vn";
}
$index = 트림(fgets(STDIN));
If( in_array ( $index,array_keys( $confs_list ) ) ){
            copy( $confs_dir->path ."/". $confs_list[$index],"/etc/nginx/backup/{$confs_list[$index]}" );
​​​​ 링크 해제 ( $confs_dir->path ."/". $confs_list[$index] );
         exec("tar -zcf /home/sites/{$confs_list[$index]}.tar.gz /home/sites/".$confs_list[$index] );
​ ​ exec("rm -Rf /home/sites/".$confs_list[$index]);
}
//지정된 구성을 삭제하고 백업을 저장합니다
}
else if( $operate == 3 ) {
나가세요;
}
그렇지 않으면 {
종료("선택한 작업이 없습니다!");
}
?>

다음은 nginx의 구성 템플릿입니다
코드 복사 코드는 다음과 같습니다.
서버 {
80을 들어보세요;
서버_이름 {$domain};
access_log /var/log/nginx/{$domain}_access_log;
error_log /var/log/nginx/{$domain}_error_log;
루트 {$path};
#사이트 아이콘 방문 기록 금지
위치 = /favicon.ico {
log_not_found off;
access_log off;
}
#robots.txt에 대한 액세스를 기록하지 마세요
위치 = /robots.txt {
모두 허용;
log_not_found off;
access_log off;
}
위치 = / {
try_files @proxy;
}
위치 / {
색인 index.htm index.html index.php;
try_files $uri @proxy;
}
#matchhtml
위치 ~* .(html|htm)$ {
30초 후에 만료됩니다.
압축을 푼다;
add_header 콘텐츠 인코딩 gzip;
try_files $uri $uri/ /wp-content/cache/supercache/$http_host/$request_uri/index.html.gz @proxy;
}
#이미지, 스크립트 파일 등을 일치시키세요.
위치 ~* .(jpe?g|gif|png|ico|css|js|flv|swf|avi|zip|rar|svg|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt |tar|mp3)$ {
30일에 만료됩니다.
}
#아파치로 전달
위치 @proxy {
색인 index.htm index.html index.php;
프록시 패스 http://127.0.0.1:81;
/etc/nginx/proxy.conf를 포함합니다.
}
}

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.