12. 為LAMP的網站增加專案

最愛喝酸奶發表於2019-01-30

一臺執行LAMP環境的伺服器,上面有幾十個網站,每一個網站都分配了單獨的虛擬主機和MySQL庫。目前網站的數量還在持續增加,每增加一個網站需要做的操作如下:

1)新增一個Apache虛擬主機;

2)新增一個ftp賬號對該網站目錄有管理許可權;

3)新增一個庫;

4)新增一個資料庫使用者管理新增的庫。

由於這些操作具有非常高的重複度,所以適合用shell指令碼實現。

參考指令碼如下:

#!/bin/bash
#在LAMP環境下新增站點,包括Apache配置、FTP增加使用者、MySQL增加庫及使用者

#網站目錄
webdir=/data/wwwroot

#FTP的虛擬使用者配置檔案目錄
ftpuserdir=/etc/vsftpd/vuuser

#FTP虛擬使用者密碼檔案
ftpuserfile=/root/login

#mysql命令列登陸root
mysqlc="/usr/local/mysql/bin/mysql -uroot -pjk1hYUcnt6"

#Apache虛擬主機配置檔案
httpd_config_f="/usr/local/apache/conf/extra/httpd-vhosts.conf"

#定義增加MySQL庫和使用者的函式
add_mysql_user()
{
    mysql_p=`mkpasswd -s 0 -l 12`       #生成隨機密碼
    
    #將密碼儲存到臨時檔案裡,這裡的 $pro 為自定義的專案名字
    echo "$pro $mysql_p" >/tmp/$pro.txt
    
    #將建立使用者並授權的命令傳遞給mysql
    $mysqlc << EOF
create database $pro;
grant all on $pro.* to "$pro"@'127.0.0.1' identified by "$mysql_p";
EOF
}

#定義增加FTP使用者的函式
add_ftp_user()
{
    ftp_p=`mkpasswd -s 0 -l 12`
    echo "$pro" >> $ftpuserfile
    echo "$ftp_p" >> $ftpuserfile
    
    #將使用者、密碼檔案轉換成密碼db檔案
    db_load -T -t hash -f $ftpuserfile /etc/vsftpd/vsftpd_login.db
    cd $ftpuserdir
    
    #這裡的aaa表示之前的專案檔案,作為配置模板
    cp aaa $pro
    sed -i "s/aaa/$pro/" $pro
    
    /etc/init.d/vsftpd restart      #重啟vsftpd服務
}

#定義增加Apache虛擬主機的函式
config_httpd()
{
    mkdir $webdir/$dom          #增加網站根目錄,$dom為自定義的域名
    chown vsftpd:vsftpd $webdir/$dom
    
    cat >> $httpd_config_f << EOF
<VirtualHost *:80>
    DocumentRoot $webdir/$dom
    ServerName $dom
    <Directory $webdir/$dom>
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>
EOF
    
    /usr/local/apache/bin/apachectl graceful       #過載apache服務
}

read -p "input the project name: " pro       #自定義專案名
read -p "input the domain: " dom         #自定義域名

add_mysql_user
add_ftp_user
config_httpd

相關文章