1. 程式人生 > >給lnmp環境增加專案

給lnmp環境增加專案

題目要求

需求背景:
伺服器上,跑的lamp環境,上面有很多客戶的專案,每個專案就是一個網站。 由於客戶在不斷增加,每次增>加一個客戶,就需要配置相應的mysql、ftp以及httpd。這種工作重複性非常強的,所以用指令碼實現非常合適>。mysql增加的是對應客戶專案的資料庫、使用者、密碼,ftp增加的是對應專案的使用者、密碼(使用vsftpd,虛
擬使用者模式),httpd就是要增加虛擬主機配置段。

參考答案

#!/bin/bash
#本指令碼的功能是在LAMP環境中增加站點,包括apache配置、FTP增加使用者、MySQL增加庫和使用者
#作者:猿課-阿銘 www.apelearn.com
#日期:2018-12-10

#網站目錄
webdir=/data/wwwroot

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

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

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

#apache虛擬主機配置檔案
httpd_config_f="/usr/local/apache2/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必須要頂格
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 $ftpudir

    #這裡的aaa是一個檔案,是之前的一個專案,可以作為配置模板
    cp aaa $pro 

    #把裡面的aaa改為新的專案名字
    sed -i "s/aaa/$pro/" $pro 

    #重啟vsftpd服務
    /etc/init.d/vsftpd restart
}

#定義增加apache虛擬主機的函式
config_httpd()
{
    #增加網站根目錄,和域名保持一致,這裡的$dom為使用者自定義的域名
    mkdir $webdir/$dom

    #將網站根目錄屬主和屬組設定為ftp使用者
    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
   
    #過載apache服務
    /usr/local/apache2/bin/apachectl graceful
}

read -p "input the project name: " pro
read -p "input the domain: " dom

add_mysql_user
add_ftp_user
co