給lnmp環境增加專案
阿新 • • 發佈:2019-09-15
題目要求
需求背景:
伺服器上,跑的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