Скрипт для добавления площадок с сайтами. Centos 6 + apache + nginx .
Всем доброго времени суток. Выкладываю простенький скрипт для автоматизации добавления площадок на сервер с centos, apache, nginx.
Для начала не забудьте включить поддержку acl для файловой системы в файле /etc/fstab и перезагрузиться, либо, перемонтировать раздел . Текст скрипта под катом.
#!/bin/bash
echo -n "Название сайта полностью without www: " # выводим надпись, запрещаем переход на следующую строку
read sitename #считываем значение в переменную user
echo -n "aliases cherez probel: "
read aliases
echo -n "Название учетной записи пользователя: "
read user
echo -n "Пароль пользователя: "
read password
echo -n "Имя учетной записи Mysql: "
read mysqluser
echo -n "Пароль пользователя mysql: "
read mysqluserpassword
echo -n "название базы пользователя mysql: "
read databasename
echo -n "В какой кодировке делать базу 1) utf8 2) cp1251 : "
read answer
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
useradd -d /var/www/html/$sitename -m -c $sitename -s /sbin/nologin -p $pass $user
mkdir /var/www/html/$sitename/htdocs
mkdir /var/www/html/$sitename/logs
touch /var/www/html/$sitename/logs/${sitename}_error.log
touch /var/www/html/$sitename/logs/${sitename}_access.log
chmod 750 -R /var/www/html/$sitename/
chown -R apache:apache /var/www/html/$sitename
setfacl -R -m default:u:apache:rwx /var/www/html/$sitename
setfacl -R -m default:u:$user:rwx /var/www/html/$sitename
setfacl -R -m default:u:nginx:rwx /var/www/html/$sitename
setfacl -R -m u:apache:rwx /var/www/html/$sitename
setfacl -R -m u:$user:rwx /var/www/html/$sitename
setfacl -R -m u:nginx:rwx /var/www/html/$sitename
setfacl -R -m m::rwx /var/www/html/$sitename
setfacl -R -m d:m::rwx /var/www/html/$sitename
if [ "$answer" -eq "1" ]
then
mysql -u root -pmysql_root-password' -e "CREATE DATABASE IF NOT EXISTS $databasename COLLATE utf8_general_ci; CREATE USER '$mysqluser'@'localhost' IDENTIFIED BY '$mysqluserpassword'; GRANT USAGE ON * . * TO '$mysqluser'@'localhost' IDENTIFIED BY '$mysqluserpassword' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON $databasename . * TO '$mysqluser'@'localhost';"
else
mysql -u root -p'mysql_root-password' -e "CREATE DATABASE IF NOT EXISTS $databasename COLLATE cp1251_general_ci; CREATE USER '$mysqluser'@'localhost' IDENTIFIED BY '$mysqluserpassword'; GRANT USAGE ON * . * TO '$user'@'localhost' IDENTIFIED BY '$mysqluserpassword' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON $databasename . * TO '$mysqluser'@'localhost';"
fi
echo "<VirtualHost 127.0.0.1:8080>
ServerName $sitename
ServerAlias $aliases
ServerAdmin kostin@rane.ru
DocumentRoot /var/www/html/$sitename/htdocs
ErrorLog /var/www/html/$sitename/logs/${sitename}_error.log
CustomLog /var/www/html/$sitename/logs/${sitename}_access.log combined
<Directory "/var/www/html/$sitename/htdocs">
Options -Indexes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
" >> /etc/httpd/vhost.d/vhost-hostname.conf
echo "server {
listen 80;
server_name $sitename $aliases;
location / {
proxy_pass http:/
/localhost:8080/;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|swf|js|html|htm|)$ {
root /var/www/html/$sitename/htdocs/;" >> /etc/nginx/conf.d/virtual.conf
echo '
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php;
}
}
}' >> /etc/nginx/conf.d/virtual.conf
echo "/var/www/html/$sitename/logs/*.log {
missingok
notifempty
sharedscripts
compress
delaycompress
create 0750 apache apache
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
" >> /etc/logrotate.d/httpd
echo "Завершено"
И еще один скрипт для переназначения прав на папку с сайтом, может кому пригодиться
Думаю в комментариях не нуждается.
echo -n "path: " read path echo -n "Название учетной записи пользователя: " read user chmod 750 -R $path chown -R apache:apache $path setfacl -R -m default:u:apache:rwx $path setfacl -R -m default:u:$user:rwx $path setfacl -R -m default:u:nginx:rwx $path setfacl -R -m u:apache:rwx $path setfacl -R -m u:$user:rwx $path setfacl -R -m u:nginx:rwx $path setfacl -R -m d:m::rwx $path setfacl -R -m m::rwx $path restorecon -R $path
Вроде всё. Удачи!

фтор, подправь свой парсер, часть скрипта слизало.