Created
September 6, 2011 06:14
-
-
Save nickhudkins/1196729 to your computer and use it in GitHub Desktop.
Create Env!
This file contains 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/sh | |
USERNAME="shl" | |
USER_FULL_NAME="Deployment User" | |
PROJECT_NAME="shl" | |
DOMAIN_NAME="shl.gramophone.com" | |
clear | |
#edit sudoers | |
if [ -z "$1" ]; then | |
echo "" | |
echo "-----------------------" | |
echo "Installing packages...." | |
echo "-----------------------" | |
echo "" | |
apt-get -y install build-essential python-dev python-setuptools nginx daemontools git-core | |
echo "" | |
echo "---------------------------" | |
echo "Configuring daemontools...." | |
echo "---------------------------" | |
echo "" | |
svscanboot="/etc/init/svscanboot.conf" | |
sudo rm -rf $svscanboot | |
touch $svscanboot | |
echo "start on runlevel [2345]" >> $svscanboot | |
echo "stop on runlevel [!2345]" >> $svscanboot | |
echo "" | |
echo "respawn" >> $svscanboot | |
echo "" | |
echo "exec /usr/bin/svscanboot" >> $svscanboot | |
mkdir /etc/service/ | |
initctl start svscanboot | |
echo "" | |
echo "---------------" | |
echo "Adding user...." | |
echo "---------------" | |
echo "" | |
sudo adduser -q --disabled-password --gecos "$USER_FULL_NAME" $USERNAME | |
echo "Starting up visudo with this script as first parameter" | |
export EDITOR=$0 && sudo -E visudo | |
else | |
echo "Changing sudoers" | |
echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> $1 | |
#create the virtualenv | |
echo "" | |
echo "-----------------------" | |
echo "Creating virtualenv...." | |
echo "-----------------------" | |
echo "" | |
easy_install virtualenv virtualenvwrapper | |
sudo -u $USERNAME mkdir /home/$USERNAME/virtualenvs | |
echo "export WORKON_HOME=\$HOME/virtualenvs" | sudo -u $USERNAME tee -a /home/$USERNAME/.bashrc | |
echo "source /usr/local/bin/virtualenvwrapper.sh" | sudo -u $USERNAME tee -a /home/$USERNAME/.bashrc | |
sudo -u $USERNAME virtualenv /home/$USERNAME/virtualenvs/$PROJECT_NAME | |
sudo -s -u $USERNAME "source /home/$USERNAME/virtualenvs/$PROJECT_NAME/bin/activate && easy_install pip" | |
sudo -s -u $USERNAME "source /home/$USERNAME/virtualenvs/$PROJECT_NAME/bin/activate && pip install flup" | |
echo "" | |
echo "-----------------------------" | |
echo "Setup daemontools service...." | |
echo "-----------------------------" | |
echo "" | |
#setup the service | |
rm -rf /etc/service/$PROJECT_NAME | |
mkdir /etc/service/$PROJECT_NAME | |
runfile="/etc/service/$PROJECT_NAME/run" | |
touch $runfile | |
echo '#!/usr/bin/env bash' >> $runfile | |
echo "source /home/$USERNAME/virtualenvs/$PROJECT_NAME/bin/activate" >> $runfile | |
echo "cd /home/$USERNAME/$PROJECT_NAME/" >> $runfile | |
echo "export DJANGO_SETTINGS_MODULE=$PROJECT_NAME.settings" >> $runfile | |
echo "exec envuidgid $USERNAME django-admin.py runfcgi method=threaded host=127.0.0.1 port=8000 pidfile=$PROJECT_NAME.pid minspare=4 maxspare=30 daemonize=false" >> $runfile | |
chmod +x $runfile | |
echo "" | |
echo "---------------" | |
echo "Setup NGINX...." | |
echo "---------------" | |
echo "" | |
fastcgiparams="/etc/nginx/fastcgi_params" | |
rm -rf $fastcgiparams | |
touch $fastcgiparams | |
echo 'fastcgi_param QUERY_STRING $query_string;' >> $fastcgiparams | |
echo 'fastcgi_param REQUEST_METHOD $request_method;' >> $fastcgiparams | |
echo 'fastcgi_param CONTENT_TYPE $content_type;' >> $fastcgiparams | |
echo 'fastcgi_param CONTENT_LENGTH $content_length;' >> $fastcgiparams | |
echo "" | |
echo 'fastcgi_param PATH_INFO $fastcgi_script_name;' >> $fastcgiparams | |
echo 'fastcgi_param REQUEST_URI $request_uri;' >> $fastcgiparams | |
echo 'fastcgi_param DOCUMENT_URI $document_uri;' >> $fastcgiparams | |
echo 'fastcgi_param DOCUMENT_ROOT $document_root;' >> $fastcgiparams | |
echo 'fastcgi_param SERVER_PROTOCOL $server_protocol;' >> $fastcgiparams | |
echo "" | |
echo 'fastcgi_param GATEWAY_INTERFACE CGI/1.1;' >> $fastcgiparams | |
echo 'fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;' >> $fastcgiparams | |
echo "" | |
echo 'fastcgi_param REMOTE_ADDR $remote_addr;' >> $fastcgiparams | |
echo 'fastcgi_param REMOTE_PORT $remote_port;' >> $fastcgiparams | |
echo 'fastcgi_param SERVER_ADDR $server_addr;' >> $fastcgiparams | |
echo 'fastcgi_param SERVER_PORT $server_port;' >> $fastcgiparams | |
echo 'fastcgi_param SERVER_NAME $server_name;' >> $fastcgiparams | |
nginx_conf="/etc/nginx/sites-available/$PROJECT_NAME" | |
sudo rm -rf $nginx_conf | |
touch $nginx_conf | |
echo "server {" >> $nginx_conf | |
echo " listen 80;" >> $nginx_conf | |
echo " server_name $DOMAIN_NAME;" >> $nginx_conf | |
echo " access_log /var/log/nginx/$PROJECT_NAME.access.log;" >> $nginx_conf | |
echo "" >> $nginx_conf | |
echo " location /media {" >> $nginx_conf | |
echo " autoindex on;" >> $nginx_conf | |
echo " index index.html;" >> $nginx_conf | |
echo " root /home/$USERNAME/$PROJECT_NAME;" >> $nginx_conf | |
echo " break;" >> $nginx_conf | |
echo " }" >> $nginx_conf | |
echo "" >> $nginx_conf | |
echo " location / {" >> $nginx_conf | |
echo " include /etc/nginx/fastcgi_params;" >> $nginx_conf | |
echo " fastcgi_pass 127.0.0.1:8000;" >> $nginx_conf | |
echo " break;" >> $nginx_conf | |
echo " }" >> $nginx_conf | |
echo "}" >> $nginx_conf | |
ln -sf /etc/nginx/sites-available/$PROJECT_NAME /etc/nginx/sites-enabled/$PROJECT_NAME | |
/etc/init.d/nginx restart | |
echo "" | |
echo "--------------" | |
echo "DONE DONE DONE" | |
echo "--------------" | |
echo "" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment