Skip to content

Instantly share code, notes, and snippets.

@denysbutenko
Last active August 29, 2015 13:58
Show Gist options
  • Save denysbutenko/806c3ccae55d3d78003f to your computer and use it in GitHub Desktop.
Save denysbutenko/806c3ccae55d3d78003f to your computer and use it in GitHub Desktop.
#!/bin/bash
# MySQL root password
ROOTPASS=$(cat /root/.passwd)
TIMEZONE='Europe/Kiev'
MYSQLPASS=`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12`
PASSWORD=`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12`
##############
echo "Enter username for site and database:"
read USERNAME
echo "Enter domain"
read DOMAIN
##############
echo "Creating user and home directory..."
useradd $USERNAME -m -s "/bin/false" -d "/var/www/$USERNAME"
if [ "$?" -ne 0 ]; then
echo "Can't add user"
exit 1
fi
##############
cd /var/www/$USERNAME;
test -d venv && echo "Virtualenv already exists." || virtualenv --no-site-packages venv;
mkdir static media tmp log conf db
chmod -R 755 /var/www/$USERNAME/
chown -R $USERNAME:$USERNAME /var/www/$USERNAME/
git clone https://bitbucket.org/denysbutenko/man/ www
chown root:root /var/www/$USERNAME
source venv/bin/activate
pip install -r ./www/requirements.txt
venv/bin/python www/app/manage.py collectstatic --noinput
venv/bin/python www/app/manage.py syncdb --noinput
deactivate
chown -R $USERNAME:$USERNAME /var/www/$USERNAME/db
echo "Creating vhost file"
echo "
server {
listen 80;
server_name $DOMAIN;
access_log /var/www/$USERNAME/log/access.log;
error_log /var/www/$USERNAME/log/error.log;
location /static/ {
alias /var/www/$USERNAME/static/;
}
location /media/ {
alias /var/www/$USERNAME/media/;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/app/$USERNAME/socket;
}
}
" > /var/www/$USERNAME/conf/nginx.conf
ln -s /var/www/$USERNAME/conf/nginx.conf /etc/nginx/sites-enabled/$USERNAME.conf
##############
##############
echo "Creating uwsgi config"
echo "
[uwsgi]
uid = $USERNAME
gid = $USERNAME
venv = /var/www/$USERNAME/venv
pythonpath = /var/www/$USERNAME/www/app
module = django.core.handlers.wsgi:WSGIHandler()
socket-protocol = uwsgi
chown-socket = $USERNAME:www-data
chmod-socket = 660
log-maxsize = 20971520
logto2 = /var/www/$USERNAME/log/uwsgi.2.log
chdir = /var/www/$USERNAME
env = DJANGO_SETTINGS_MODULE=settings
vacuum = true
" > /var/www/$USERNAME/conf/uwsgi.ini
ln -s /var/www/$USERNAME/conf/uwsgi.ini /etc/uwsgi/apps-enabled/$USERNAME.ini
#############
echo "Reloading nginx"
service nginx restart
echo "Reloading uwsgi"
service uwsgi 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 -uroot --password=$ROOTPASS -e "$SQL"
##############
echo "Done.
User: $USERNAME
Password: $PASSWORD
Mysql password: $MYSQLPASS" > /var/www/$USERNAME/pass.txt
cat /var/www/$USERNAME/pass.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment