diff options
-rw-r--r-- | install/README | 9 | ||||
-rw-r--r-- | install/django.wsgi.template | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | install/install.sh | 92 | ||||
-rw-r--r-- | install/local_settings.py.sample | 4 | ||||
-rw-r--r-- | install/nginx.conf.template | 8 | ||||
-rwxr-xr-x | install/uninstall.sh | 36 | ||||
-rw-r--r-- | install/uwsgi.ini.template | 2 |
7 files changed, 101 insertions, 52 deletions
diff --git a/install/README b/install/README new file mode 100644 index 000000000..dc15fa147 --- /dev/null +++ b/install/README @@ -0,0 +1,9 @@ +cd /tmp +apt-get install wget +wget http://lysithea.proxience.net/ishtar-install.tar.gz + +tar xvzf ishtar-install.tar.gz +rm ishtar-install.tar.gz +cd install +export APP_NAME=myinstance && export URL=localhost \ + && export PROJECT_NAME="Project name" && bash install.sh diff --git a/install/django.wsgi.template b/install/django.wsgi.template index 54bf07351..a618f0a41 100644 --- a/install/django.wsgi.template +++ b/install/django.wsgi.template @@ -1,7 +1,7 @@ import os, sys MAIN_PATH = os.path.realpath(os.path.dirname(__file__)) + "/.." sys.path.append(MAIN_PATH) -os.environ['DJANGO_SETTINGS_MODULE'] = '#SHORT_NAME#.settings' +os.environ['DJANGO_SETTINGS_MODULE'] = '#APP_NAME#.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() diff --git a/install/install.sh b/install/install.sh index dc2bb9b2a..7ca43c1ae 100644..100755 --- a/install/install.sh +++ b/install/install.sh @@ -5,8 +5,8 @@ ###################################################################### # only lower alpha-numeric char and '_' and must start with a letter -[ $SHORT_NAME ] || ( echo 'SHORT_NAME empty. Default to: "default".' ; ); -SHORT_NAME=${SHORT_NAME-default} +[ $APP_NAME ] || ( echo 'APP_NAME empty. Default to: "default".' ; ); +APP_NAME=${APP_NAME-default} [ $URL ] || ( echo 'URL empty. Default to: "localhost".' ; URL=localhost ; ); URL=${URL-localhost} @@ -31,18 +31,14 @@ DB_PORT='5432' PG_VERSION=9.1 # ishtar git branch -[ $VERSION ] || ( echo 'VERSION empty. Default to: "new-stable".' ; ); -VERSION=new-stable +[ $VERSION ] || ( echo 'VERSION empty. Default to: "stable".' ; ); +VERSION=stable # change it for each instance on a same server UWSGI_PORT=8891 -# webserver port - default "[::]:80" -NGINX_PORT="[::]:80" -if [ $URL = 'localhost' ]; then - # don't clash with default server on localhost - NGINX_PORT="[::]:8080" -fi +# webserver port - default "80" +NGINX_PORT="80" # don't forget the trailing slash INSTALL_PREFIX=/srv/ @@ -50,11 +46,16 @@ INSTALL_PREFIX=/srv/ # if a virtualenv is used put the full path of the python to use PYTHON=python +# default for debian +UWSGI_AVAILABLE_PATH='/etc/uwsgi/apps-available/' +UWSGI_ENABLE_PATH='/etc/uwsgi/apps-enabled/' +NGINX_AVAILABLE_PATH='/etc/nginx/sites-available/' +NGINX_ENABLE_PATH='/etc/nginx/sites-enabled/' + # Don't edit below this line ###################################################################### echo "* installing dependencies" - if [ $DB_HOST = "127.0.0.1" ]; then apt-get -q -y install postgresql postgresql-$PG_VERSION-postgis postgresql 2> /dev/null > /dev/null fi @@ -64,7 +65,7 @@ apt-get -q -y install git apg python-pip 2> /dev/null > /dev/null apt-get -q -y install python python-django \ libjs-jquery libjs-jquery-ui python-pisa python-django-registration \ python-utidylib python-lxml python-imaging python-django-south \ - python-psycopg2 python-gdal gettext \ + python-psycopg2 python-gdal gettext python-bs4 python-tidylib \ python-django-extra-views python-memcache python-dbf 2> /dev/null > /dev/null apt-get -q -y install uwsgi uwsgi-plugin-python nginx memcached 2> /dev/null > /dev/null @@ -78,7 +79,7 @@ DB_PASSWORD=`apg -a 0 -M ncl -n 6 -x 10 -m 10 |head -n 1` fi -DB_NAME='ishtar'$SHORT_NAME +DB_NAME='ishtar'$APP_NAME INSTALL_PATH=$INSTALL_PREFIX$DB_NAME DATE=`date +%F` CDIR=`pwd` @@ -91,12 +92,14 @@ echo "* create database and user" DB_PASSWORD=$DB_PASSWORD DB_NAME=$DB_NAME PROJECT_NAME=$PROJECT_NAME PG_VERSION=$PG_VERSION su postgres <<'EOF' cd if [ `psql -l | grep template_postgis | wc -l` -ne 1 ]; then + echo " * create template_postgis" createdb template_postgis psql -d template_postgis -f /usr/share/postgresql/$PG_VERSION/contrib/postgis-1.5/postgis.sql 2> /dev/null > /dev/null psql -d template_postgis -f /usr/share/postgresql/$PG_VERSION/contrib/postgis-1.5/spatial_ref_sys.sql 2> /dev/null > /dev/null fi if [ `psql -l | grep $DB_NAME | wc -l` -ne 1 ]; then + echo " * create "$DB_NAME createuser --echo --adduser --createdb --encrypted $DB_NAME 2> /dev/null > /dev/null psql --command "ALTER USER "$DB_NAME" with password '"$DB_PASSWORD"';" 2> /dev/null > /dev/null createdb -T template_postgis --echo --owner $DB_NAME --encoding UNICODE $DB_NAME "$PROJECT_NAME" 2> /dev/null > /dev/null @@ -113,33 +116,34 @@ mkdir $INSTALL_PATH mkdir $INSTALL_PATH'/conf' cd $INSTALL_PATH -echo ' * oook!' -git clone git://git.proxience.net/git/oook_replace.git 2> /dev/null echo ' * ishtar' -git clone git://git.proxience.net/git/ishtar.git 2> /dev/null +git clone git://git.proxience.com/git/ishtar.git 2> /dev/null +echo ' * oook!' +git clone git://git.proxience.com/git/oook_replace.git 2> /dev/null +ln -s $INSTALL_PATH'/oook_replace/oook_replace' $INSTALL_PATH'/ishtar/' + cd ishtar git fetch 2> /dev/null git checkout $VERSION 2> /dev/null -cp -ra example_project $SHORT_NAME 2> /dev/null > /dev/null +cp -ra example_project $APP_NAME 2> /dev/null > /dev/null -rm $SHORT_NAME/settings.py -ln -s $INSTALL_PATH"/example_project/settings.py" $INSTALL_PATH"/"$SHORT_NAME"/" +rm $APP_NAME/settings.py +ln -s $INSTALL_PATH"/ishtar/example_project/settings.py" $INSTALL_PATH"/ishtar/"$APP_NAME"/" -APP_DIR=$INSTALL_PATH'/ishtar/'$SHORT_NAME +APP_DIR=$INSTALL_PATH'/ishtar/'$APP_NAME echo '* load parameters' - -sed -s "s/#SHORT_NAME#/$SHORT_NAME/g;\ - s/#DATE#/$DATE/g;\ - s/#PROJECT_NAME#/$PROJECT_NAME/g;\ - s/#DB_HOST#/$DB_HOST/g;\ - s/#DB_NAME#/$DB_NAME/g;\ - s/#DB_PORT#/$DB_PORT/g;\ - s/#APP_DIR#/$APP_DIR/g;\ - s/#SECRET_KEY#/$SECRET_KEY/g;\ - s/#DB_PASSWORD#/$DB_PASSWORD/g;\ - s/#UWSGI_PORT#/$UWSGI_PORT/g;" $CDIR'/local_settings.py.sample' > \ +sed -s "s|#APP_NAME#|$APP_NAME|g;\ + s|#DATE#|$DATE|g;\ + s|#PROJECT_NAME#|$PROJECT_NAME|g;\ + s|#DB_HOST#|$DB_HOST|g;\ + s|#DB_NAME#|$DB_NAME|g;\ + s|#DB_PORT#|$DB_PORT|g;\ + s|#APP_DIR#|$APP_DIR|g;\ + s|#SECRET_KEY#|$SECRET_KEY|g;\ + s|#DB_PASSWORD#|$DB_PASSWORD|g;\ + s|#UWSGI_PORT#|$UWSGI_PORT|g;" $CDIR'/local_settings.py.sample' > \ $INSTALL_PATH'/conf/local_settings.py' ln -s $INSTALL_PATH'/conf/local_settings.py' $APP_DIR'/local_settings.py' @@ -152,9 +156,9 @@ chmod -R g+w $APP_DIR'/media' # logs mkdir -p /var/log/django/ chown root:www-data '/var/log/django' -touch '/var/log/django/ishtar-'$SHORT_NAME'.log' -chown root:www-data '/var/log/django/ishtar-'$SHORT_NAME'.log' -chmod g+w '/var/log/django/ishtar-'$SHORT_NAME'.log' +touch '/var/log/django/ishtar-'$APP_NAME'.log' +chown root:www-data '/var/log/django/ishtar-'$APP_NAME'.log' +chmod g+w '/var/log/django/ishtar-'$APP_NAME'.log' cd $APP_DIR ./manage.py collectstatic --noinput 2> /dev/null > /dev/null @@ -219,26 +223,26 @@ rm /tmp/site.json echo '* uwsgi configuration' -sed -s "s/#SHORT_NAME#/$SHORT_NAME/g;\ +sed -s "s/#APP_NAME#/$APP_NAME/g;\ s/#DB_NAME#/$DB_NAME/g;\ s/#URL#/$URL/g;\ s/#UWSGI_PORT#/$UWSGI_PORT/g;" $CDIR'/uwsgi.ini.template' > \ $INSTALL_PATH'/conf/uwsgi.ini' -sed -s "s/#SHORT_NAME#/$SHORT_NAME/g;" $CDIR'/django.wsgi.template' > \ - $INSTALL_PATH'/conf/'$SHORT_NAME'.wsgi' +sed -s "s/#APP_NAME#/$APP_NAME/g;" $CDIR'/django.wsgi.template' > \ + $INSTALL_PATH'/conf/'$APP_NAME'.wsgi' ln -s $INSTALL_PATH'/conf/uwsgi.ini' \ - '/etc/uwsgi/apps-available/'$SHORT_NAME'-uwsgi.ini' -ln -s '/etc/uwsgi/apps-available/'$SHORT_NAME'-uwsgi.ini' \ - '/etc/uwsgi/apps-enabled/'$SHORT_NAME'-uwsgi.ini' + $UWSGI_AVAILABLE_PATH$APP_NAME'.ini' +ln -s $UWSGI_AVAILABLE_PATH$APP_NAME'.ini' \ + $UWSGI_ENABLE_PATH$APP_NAME'.ini' service uwsgi restart echo '* nginx configuration' -sed -s "s/#SHORT_NAME#/$SHORT_NAME/g;\ +sed -s "s/#APP_NAME#/$APP_NAME/g;\ s/#UWSGI_PORT#/$UWSGI_PORT/g;\ s/#DB_NAME#/$DB_NAME/g;\ s/#DATE#/$DATE/g;\ @@ -246,9 +250,9 @@ sed -s "s/#SHORT_NAME#/$SHORT_NAME/g;\ s/#URL#/$URL/g;" $CDIR'/nginx.conf.template' > \ $INSTALL_PATH'/conf/nginx.conf' ln -s $INSTALL_PATH'/conf/nginx.conf' \ - '/etc/nginx/sites-available/'$SHORT_NAME'.conf' -ln -s '/etc/nginx/sites-available/'$SHORT_NAME'.conf' \ - '/etc/nginx/sites-enabled/'$SHORT_NAME'.conf' + $NGINX_AVAILABLE_PATH$APP_NAME'.conf' +ln -s $NGINX_AVAILABLE_PATH$APP_NAME'.conf' \ + $NGINX_ENABLE_PATH$APP_NAME'.conf' service nginx restart diff --git a/install/local_settings.py.sample b/install/local_settings.py.sample index db40fe7bf..cbee9fa85 100644 --- a/install/local_settings.py.sample +++ b/install/local_settings.py.sample @@ -7,10 +7,10 @@ TEMPLATE_DEBUG = DEBUG SQL_DEBUG = False APP_NAME = u"#PROJECT_NAME#" -ROOT_URLCONF = '#SHORT_NAME#.urls' +ROOT_URLCONF = '#APP_NAME#.urls' STATIC_URL = '/static-#DATE#/' SECRET_KEY = "#SECRET_KEY#" -LOGFILE = "/var/log/django/ishtar-#SHORT_NAME#.log" +LOGFILE = "/var/log/django/ishtar-#APP_NAME#.log" MEDIA_ROOT = "#APP_DIR#/media/" diff --git a/install/nginx.conf.template b/install/nginx.conf.template index 0a68be712..c41018786 100644 --- a/install/nginx.conf.template +++ b/install/nginx.conf.template @@ -2,17 +2,17 @@ server { listen #NGINX_PORT#; server_name #URL#; root /srv/#DB_NAME#/ishtar/; - access_log /var/log/django/#SHORT_NAME#-access.log; - error_log /var/log/django/#SHORT_NAME#-error.log; + access_log /var/log/django/#APP_NAME#-access.log; + error_log /var/log/django/#APP_NAME#-error.log; client_max_body_size 20M; location /static-#DATE#/ { # STATIC_URL - alias /srv/#DB_NAME#/ishtar/#SHORT_NAME#/static/; # STATIC_ROOT + alias /srv/#DB_NAME#/ishtar/#APP_NAME#/static/; # STATIC_ROOT expires 30d; } location /media/ { # MEDIA_URL - alias /srv/#DB_NAME#/ishtar/#SHORT_NAME#/media/; # MEDIA_ROOT + alias /srv/#DB_NAME#/ishtar/#APP_NAME#/media/; # MEDIA_ROOT expires 30d; } diff --git a/install/uninstall.sh b/install/uninstall.sh new file mode 100755 index 000000000..71a5dae17 --- /dev/null +++ b/install/uninstall.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# only lower alpha-numeric char and '_' and must start with a letter +[ $APP_NAME ] || ( echo 'APP_NAME empty. Default to: "default".' ; ); +APP_NAME=${APP_NAME-default} +# don't forget the trailing slash +INSTALL_PREFIX=/srv/ + +read -r -p "Are you sure to delete "$APP_NAME" app? [y/N] " response +response=${response,,} # tolower +if [[ $response =~ ^(yes|y)$ ]] +then + echo '* deleting '$APP_NAME; +else + echo "canceled"; + exit; +fi + +# default for debian +UWSGI_AVAILABLE_PATH='/etc/uwsgi/apps-available/' +UWSGI_ENABLE_PATH='/etc/uwsgi/apps-enabled/' +NGINX_AVAILABLE_PATH='/etc/nginx/sites-available/' +NGINX_ENABLE_PATH='/etc/nginx/sites-enabled/' + +DB_NAME='ishtar'$APP_NAME +INSTALL_PATH=$INSTALL_PREFIX$DB_NAME + +rm -f $UWSGI_AVAILABLE_PATH$APP_NAME'.ini' +rm -f $UWSGI_ENABLE_PATH$APP_NAME'.ini' +rm -f $NGINX_AVAILABLE_PATH$APP_NAME'.conf' +rm -f $NGINX_ENABLE_PATH$APP_NAME'.conf' + +rm -rf $INSTALL_PATH + +echo "All file cleaned." +echo "You can delete database '"$DB_NAME"' to fully clean your installation." diff --git a/install/uwsgi.ini.template b/install/uwsgi.ini.template index 0e2fc6554..7a20c058c 100644 --- a/install/uwsgi.ini.template +++ b/install/uwsgi.ini.template @@ -1,6 +1,6 @@ [uwsgi] # variables -projectname = #SHORT_NAME# +projectname = #APP_NAME# projectdomain = #URL# base = /srv/#DB_NAME#/ishtar/ |