Last active
August 29, 2015 13:58
-
-
Save denysbutenko/806c3ccae55d3d78003f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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