Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- TIMEZONE='Europe/Kiev'
- MYSQLPASS=$(pwgen -y -N 1 12)
- SFTPPASS=$(pwgen -y -N 1 12)
- echo -n "Enter username for site and database: "
- read USERNAME
- echo -n "Enter domain: "
- read DOMAIN
- if [ -z "$DOMAIN" ] || [ -z "$USERNAME" ]; then
- echo "Username and domain can't be empty"
- exit 1
- fi
- echo "Creating user and home directory..."
- useradd "$USERNAME" -m -G sftp -s "/bin/false" -d "/home/$USERNAME"
- if [ "$?" -ne 0 ]; then
- echo "Can't add user"
- exit 1
- fi
- echo $SFTPPASS > ./tmp
- echo $SFTPPASS >> ./tmp
- cat ./tmp | passwd $USERNAME
- rm ./tmp
- mkdir /home/"$USERNAME"/www
- mkdir /home/"$USERNAME"/tmp
- mkdir /home/"$USERNAME"/backups
- chmod -R 755 /home/"$USERNAME"/
- chown -R "$USERNAME":"$USERNAME" /home/"$USERNAME"/
- chown root:wheel /home/"$USERNAME"
- echo "Creating vhost file"
- echo "upstream backend-$USERNAME {server unix:/var/run/php-$USERNAME.sock;}
- server {
- listen 80;
- server_name $DOMAIN www.$DOMAIN;
- root /home/$USERNAME/www;
- access_log /var/log/nginx/$USERNAME-access.log;
- error_log /var/log/nginx/$USERNAME-error.log;
- index index.php index.html;
- rewrite_log on;
- if (\$host != '$DOMAIN' ) {
- rewrite ^/(.*)$ http://$DOMAIN/\$1 permanent;
- }
- location ~* ^/core/ {
- deny all;
- }
- location / {
- try_files \$uri \$uri/ @rewrite;
- }
- location /index.html {
- rewrite / / permanent;
- }
- location ~ ^/(.*?)/index\.html$ {
- rewrite ^/(.*?)/ /$1/ permanent;
- }
- location @rewrite {
- rewrite ^/(.*)$ /index.php?q=\$1;
- }
- location ~ \.php$ {
- include fastcgi_params;
- fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
- fastcgi_pass backend-$USERNAME;
- }
- location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ {
- access_log off;
- expires 10d;
- break;
- }
- location ~ /\.ht {
- deny all;
- }
- }
- " > /etc/nginx/sites-available/"$USERNAME".conf
- ln -s /etc/nginx/sites-available/"$USERNAME".conf /etc/nginx/conf.d/"$USERNAME".conf
- echo "Creating php-fpm config"
- echo "[$USERNAME]
- listen = /var/run/php-$USERNAME.sock
- listen.mode = 0666
- user = $USERNAME
- group = $USERNAME
- chdir = /home/$USERNAME
- php_admin_value[upload_tmp_dir] = /home/$USERNAME/tmp
- php_admin_value[soap.wsdl_cache_dir] = /home/$USERNAME/tmp
- php_admin_value[sys_temp_dir] = /home/$USERNAME/tmp
- php_admin_value[session.save_path] = /home/$USERNAME/tmp
- php_admin_value[upload_max_filesize] = 100M
- php_admin_value[post_max_size] = 100M
- php_admin_value[open_basedir] = /home/$USERNAME/
- php_admin_value[cgi.fix_pathinfo] = 0
- php_admin_value[date.timezone] = $TIMEZONE
- php_admin_value[session.gc_probability] = 1
- php_admin_value[session.gc_divisor] = 100
- pm = dynamic
- pm.max_children = 10
- pm.start_servers = 2
- pm.min_spare_servers = 2
- pm.max_spare_servers = 4
- " > /etc/opt/remi/php70/php-fpm.d/"$USERNAME".conf
- echo "Reloading nginx"
- service nginx restart
- echo "Reloading php-fpm"
- service php70-php-fpm restart
- echo "Creating database"
- Q1="CREATE DATABASE IF NOT EXISTS $USERNAME DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;;"
- Q2="GRANT ALTER,DELETE,DROP,CREATE,INDEX,INSERT,SELECT,UPDATE,CREATE TEMPORARY TABLES,LOCK TABLES ON $USERNAME.* TO '$USERNAME'@'localhost' IDENTIFIED BY '$MYSQLPASS';"
- Q3="FLUSH PRIVILEGES;"
- SQL="${Q1}${Q2}${Q3}"
- mysql --login-path=root_local -e "$SQL"
- echo "Creating backup script"
- BT1='$(date +%Y-%m-%d_%H:%M:%S)'
- BT2='"$backtime"'
- echo "#/bin/bash
- backtime=$BT1
- cd /home/$USERNAME/www || exit
- tar -cvzf ../backups/$USERNAME-files-$BT2.tar.gz -- *
- mysqldump --login-path=root_local $USERNAME | gzip -9 > ../backups/$USERNAME-mysql-$BT2.sql.gz
- cd /home/$USERNAME/backups
- chmod -R 777 /home/$USERNAME/backups" > /home/"$USERNAME"/backup
- chmod +x /home/"$USERNAME"/backup
- echo "#!/bin/bash
- echo \"Set permissions for /home/$USERNAME/www...\";
- echo \"CHOWN files...\";
- chown -R $USERNAME:$USERNAME \"/home/$USERNAME/www\";
- echo \"CHMOD directories...\";
- find \"/home/$USERNAME/www\" -type d -exec chmod 0755 '{}' \;
- echo \"CHMOD files...\";
- find \"/home/$USERNAME/www\" -type f -exec chmod 0644 '{}' \;
- " > /home/"$USERNAME"/chmod
- chmod +x /home/"$USERNAME"/chmod
- echo "Done!
- Manager user: $USERNAME
- Domain: $DOMAIN
- SFTP password: $SFTPPASS
- MYSQL password: $MYSQLPASS" > /home/"$USERNAME"/pass.txt
- cat /home/"$USERNAME"/pass.txt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement