Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- IP_ADDRESS="*:80"
- IP_ADDRESSSSL="*:443"
- APACHE2_DIR="/etc/apache2"
- UID_ROOT=0
- if [ "$UID" -ne "$UID_ROOT" ]; then
- echo "$0 - Requires root privileges"
- exit 1
- fi
- function is_user(){
- local check_user="$1";
- grep "$check_user:" /etc/passwd >/dev/null
- if [ $? -ne 0 ]; then
- #echo "NOT HAVE USER"
- return 0
- else
- #echo "HAVE USER"
- return 1
- fi
- }
- function generate_pass(){
- CHARS="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()-_=+\\|/"
- LENGTH="8"
- while [ "${n:=1}" -le "$LENGTH" ] ; do
- PASSWORD="$PASSWORD${CHARS:$(($RANDOM%${#CHARS})):1}"
- let n+=1
- done
- echo $PASSWORD
- }
- function is_yes(){
- #TODO - add check 3-rd parameter for set default ansver (if press enter)
- while true
- do
- echo -n "Yes or No[Y/n]:"
- read x
- if [ -z "$x" ]
- then
- return 0; #defaul answer: Yes
- fi
- case "$x" in
- y |Y |yes |Д |д |да ) return 0;;
- n |N |no |Н |н |нет ) return 1;;
- # * ) ; # asc again
- esac
- done
- }
- function create_user(){
- local login="$1"
- local password="$2"
- `useradd $login -d /srv/www/$login -g $login -s /bin/false`
- #set password
- echo -e "$password\n$password\n" | passwd $login >> /dev/null
- usermod -G sftp_users $login
- }
- USER_NAME=$1
- echo -n "Check user name $USER_NAME: "
- if( is_user "$USER_NAME" )then
- USER_PASSWORD="$(generate_pass)"
- echo "-----------------------------------"
- echo "User name : $USER_NAME"
- echo "User password: $USER_PASSWORD"
- echo "-----------------------------------"
- echo -n "Continue? "
- if(! is_yes) then
- exit;
- fi
- echo "--- create user ---"
- addgroup $USER_NAME
- create_user "$USER_NAME" "$USER_PASSWORD"
- fi
- if [ $# -eq 2 ]; then
- if [ "$2" != "delete" ]; then
- SITE_NAME=$2
- mkdir -p /srv/www/$USER_NAME/
- mkdir -p /srv/www/$USER_NAME/$SITE_NAME
- mkdir -p /srv/www/$USER_NAME/logs
- mkdir -p /srv/www/$USER_NAME/tmp
- hostConf="
- <VirtualHost 127.0.0.1:8080>
- ServerName $SITE_NAME
- ServerAlias www.$SITE_NAME
- DocumentRoot /srv/www/$USER_NAME/$SITE_NAME
- AssignUserID ${USER_NAME} ${USER_NAME}
- ErrorLog /srv/www/$USER_NAME/logs/$SITE_NAME.error.log
- CustomLog /srv/www/$USER_NAME/logs/$SITE_NAME.log combined
- <Directory /srv/www/$USER_NAME/$SITE_NAME/>
- DirectoryIndex index.html
- AllowOverride All
- Require all granted
- Allow from all
- <IfModule sapi_apache2.c>
- php_admin_flag engine on
- php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
- </IfModule>
- <IfModule mod_php5.c>
- php_admin_flag engine on
- php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
- </IfModule>
- Options -Includes -ExecCGI
- </Directory>
- <Directory /srv/www/$USER_NAME/$SITE_NAME/>
- DirectoryIndex index.php
- AllowOverride All
- Require all granted
- Allow from all
- <IfModule sapi_apache2.c>
- php_admin_flag engine on
- php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
- </IfModule>
- <IfModule mod_php5.c>
- php_admin_flag engine on
- php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
- </IfModule>
- Options -Includes -ExecCGI
- </Directory>
- </VirtualHost>
- "
- touch /etc/apache2/vhosts/${SITE_NAME}.conf
- echo "$hostConf" > /etc/apache2/vhosts/${SITE_NAME}.conf
- #touch /srv/www/$USER_NAME/$SITE_NAME/index.php
- #echo "<?php phpinfo() ?>" > /srv/www/$USER_NAME/$SITE_NAME/index.php
- chmod 750 /srv/www/$USER_NAME/
- chown root:$USER_NAME /srv/www/$USER_NAME
- chmod 744 /srv/www/$USER_NAME/*
- chown -R $USER_NAME:$USER_NAME /srv/www/$USER_NAME/*
- service apache2 restart
- hostnginxconf="
- server {
- listen *:80;
- access_log /srv/www/$USER_NAME/logs/$SITE_NAME.access.log;
- server_name $SITE_NAME www.$SITE_NAME;
- root /srv/www/$USER_NAME/$SITE_NAME;
- location / {
- "
- nginxconf='
- proxy_redirect off;
- proxy_set_header Host $host;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_pass http://127.0.0.1:8080;
- proxy_buffer_size 20480k;
- proxy_buffers 4 20480k;
- proxy_busy_buffers_size 20480k;
- location ~ ^/(.*\.(ac3|avi|bmp|bz2|cue|dat|doc|docx|dts|exe|flv|gif|gz|ico|img|iso|jpeg|jpg|mkv|mp3|mp4|mpeg|mpg|ogg|pdf|png|ppt|pptx|qt|rar|rm|swf|tar|tgz|wav|xls|xlsx|zip|woff|woff2))$ {
- gzip off;
- expires 30d;
- try_files $uri @fallback;
- }
- location ~ ^/(.*\.(css|htm|html|js|txt))$ {
- gzip_comp_level 9;
- expires 7d;
- try_files $uri @fallback;
- }
- }
- location @fallback {
- proxy_pass http://127.0.0.1:8080;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }
- '
- touch /etc/nginx/vhosts/${SITE_NAME}.conf
- echo "$hostnginxconf" > /etc/nginx/vhosts/${SITE_NAME}.conf
- echo "$nginxconf" >> /etc/nginx/vhosts/${SITE_NAME}.conf
- service nginx restart
- hostnginxsslconf="
- server {
- listen *:443 ssl;
- access_log /srv/www/$USER_NAME/logs/$SITE_NAME.access.log;
- server_name $SITE_NAME www.$SITE_NAME;
- root /srv/www/$USER_NAME/$SITE_NAME;
- ssl_certificate /etc/letsencrypt/live/$SITE_NAME/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/$SITE_NAME/privkey.pem;
- location / {
- "
- echo "SSL YES OR NO?"
- if(! is_yes) then
- echo "No SSL"
- else
- echo "$hostnginxsslconf" >> /etc/nginx/vhosts/${SITE_NAME}.conf
- echo "$nginxconf" >> /etc/nginx/vhosts/${SITE_NAME}.conf
- echo "WWW FOR SSL YES OR NO?"
- if(! is_yes) then
- echo "No WWW"
- certbot certonly -a webroot --webroot-path=/srv/www/$USER_NAME/$SITE_NAME -d $SITE_NAME
- else
- certbot certonly -a webroot --webroot-path=/srv/www/$USER_NAME/$SITE_NAME -d $SITE_NAME -d www.$SITE_NAME
- fi
- fi
- service nginx restart
- fi
- fi;
- #display information
- echo "*****************************************"
- echo "* Profit!"
- echo "*****************************************"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement