瀏覽代碼

Try again with a new mediagoblin configuration

Bob Mottram 10 年之前
父節點
當前提交
5a63e38b88
共有 1 個檔案被更改,包括 154 行新增1 行删除
  1. 154
    1
      install-freedombone.sh

+ 154
- 1
install-freedombone.sh 查看文件

@@ -2704,7 +2704,7 @@ quit" > $INSTALL_DIR/batch.sql
2704 2704
   echo 'install_redmatrix' >> $COMPLETION_FILE
2705 2705
 }
2706 2706
 
2707
-function install_mediagoblin {
2707
+function install_mediagoblin_old {
2708 2708
   if grep -Fxq "install_mediagoblin" $COMPLETION_FILE; then
2709 2709
       return
2710 2710
   fi
@@ -2909,6 +2909,159 @@ function install_mediagoblin {
2909 2909
   echo 'install_mediagoblin' >> $COMPLETION_FILE
2910 2910
 }
2911 2911
 
2912
+function install_mediagoblin {
2913
+  if grep -Fxq "install_mediagoblin" $COMPLETION_FILE; then
2914
+      return
2915
+  fi
2916
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" ]]; then
2917
+      return
2918
+  fi
2919
+  # if this is exclusively a writer setup
2920
+  if [[ $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
2921
+      MEDIAGOBLIN_DOMAIN_NAME=$DOMAIN_NAME
2922
+      MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE=$FREEDNS_SUBDOMAIN_CODE
2923
+  fi
2924
+  if [ ! $MEDIAGOBLIN_DOMAIN_NAME ]; then
2925
+      return
2926
+  fi
2927
+  apt-get -y --force-yes install git-core python python-dev python-lxml python-imaging python-virtualenv
2928
+  apt-get -y --force-yes install python-gst-1.0 libjpeg8-dev sqlite3 libapache2-mod-fcgid gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-libav python-numpy python-scipy libsndfile1-dev
2929
+  apt-get -y --force-yes install postgresql postgresql-client python-psycopg2
2930
+
2931
+  sudo -u postgres createuser -A -D mediagoblin
2932
+  sudo -u postgres createdb -E UNICODE -O mediagoblin mediagoblin
2933
+
2934
+  adduser --system mediagoblin
2935
+
2936
+  MEDIAGOBLIN_DOMAIN_ROOT="/srv/$MEDIAGOBLIN_DOMAIN_NAME"
2937
+  MEDIAGOBLIN_PATH="$MEDIAGOBLIN_DOMAIN_ROOT/mediagoblin"
2938
+
2939
+  if [ ! -d $MEDIAGOBLIN_DOMAIN_ROOT ]; then
2940
+      mkdir -p $MEDIAGOBLIN_DOMAIN_ROOT
2941
+  fi
2942
+  chown -hR mediagoblin: $MEDIAGOBLIN_DOMAIN_ROOT
2943
+  cd $MEDIAGOBLIN_DOMAIN_ROOT
2944
+  su -c "git clone git://gitorious.org/mediagoblin/mediagoblin.git $MEDIAGOBLIN_PATH" - mediagoblin
2945
+  su -c "cd $MEDIAGOBLIN_PATH/mediagoblin; git submodule init" - mediagoblin
2946
+  su -c "cd $MEDIAGOBLIN_PATH/mediagoblin; git submodule update" - mediagoblin
2947
+  su -c "cd $MEDIAGOBLIN_PATH/mediagoblin; virtualenv --system-site-packages ." - mediagoblin
2948
+  su -c "cd $MEDIAGOBLIN_PATH; ./bin/python setup.py develop" - mediagoblin
2949
+  su -c "cd $MEDIAGOBLIN_PATH/mediagoblin; ./bin/easy_install flup" - mediagoblin
2950
+  su -c "cp $MEDIAGOBLIN_PATH/mediagoblin.ini $MEDIAGOBLIN_PATH/mediagoblin_local.ini" - mediagoblin
2951
+  su -c "cp $MEDIAGOBLIN_PATH/paste.ini $MEDIAGOBLIN_PATH/paste_local.ini" - mediagoblin
2952
+
2953
+  # update the dynamic DNS
2954
+  if [ $MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE ]; then
2955
+      if [[ $MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
2956
+          if ! grep -q "$MEDIAGOBLIN_DOMAIN_NAME" /usr/bin/dynamicdns; then
2957
+              echo "# $MEDIAGOBLIN_DOMAIN_NAME" >> /usr/bin/dynamicdns
2958
+              echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
2959
+          fi
2960
+      fi
2961
+  else
2962
+      echo 'WARNING: No freeDNS subdomain code given for mediagoblin. It is assumed that you are using some other dynamic DNS provider.'
2963
+  fi
2964
+
2965
+  # see https://wiki.mediagoblin.org/Deployment / uwsgi with configs
2966
+  apt-get -y --force-yes install uwsgi uwsgi-plugin-python nginx-full supervisor
2967
+
2968
+  echo 'server {' > /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2969
+  echo '        include /etc/nginx/mime.types;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2970
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2971
+  echo '        autoindex off;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2972
+  echo '        default_type  application/octet-stream;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2973
+  echo '        sendfile on;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2974
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2975
+  echo '        # Gzip' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2976
+  echo '        gzip on;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2977
+  echo '        gzip_min_length 1024;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2978
+  echo '        gzip_buffers 4 32k;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2979
+  echo '        gzip_types text/plain text/html application/x-javascript text/javascript text/xml text/css;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2980
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2981
+  echo "        server_name $MEDIAGOBLIN_DOMAIN_NAME;" >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2982
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2983
+  echo '        access_log /var/log/nginx/mg.access.log;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2984
+  echo '        error_log /var/log/nginx/mg.error.log error;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2985
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2986
+  echo '        #include global/common.conf;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2987
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2988
+  echo '        client_max_body_size 100m;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2989
+  echo '        add_header X-Content-Type-Options nosniff;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2990
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2991
+  echo "        root $MEDIAGOBLIN_PATH/;" >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2992
+  echo '' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2993
+  echo '        location /mgoblin_static/ {' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2994
+  echo "                alias $MEDIAGOBLIN_PATH/mediagoblin/static/;" >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2995
+  echo '        }' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2996
+  echo '        location /mgoblin_media/ {' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2997
+  echo "                alias $MEDIAGOBL_PATH/media/public/;" >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2998
+  echo '        }' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
2999
+  echo '        location /theme_static/ {' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3000
+  echo '        }' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3001
+  echo '        location /plugin_static/ {' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3002
+  echo '        }' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3003
+  echo '        location / {' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3004
+  echo '                uwsgi_pass unix:///tmp/mg.uwsgi.sock;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3005
+  echo '                uwsgi_param SCRIPT_NAME "/";' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3006
+  echo '                include uwsgi_params;' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3007
+  echo '        }' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3008
+  echo '}' >> /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
3009
+
3010
+  echo 'uwsgi:' > /etc/uwsgi/apps-available/mg.yaml
3011
+  echo ' uid: mediagoblin' >> /etc/uwsgi/apps-available/mg.yaml
3012
+  echo ' gid: mediagoblin' >> /etc/uwsgi/apps-available/mg.yaml
3013
+  echo ' socket: /tmp/mg.uwsgi.sock' >> /etc/uwsgi/apps-available/mg.yaml
3014
+  echo ' chown-socket: www-data:www-data' >> /etc/uwsgi/apps-available/mg.yaml
3015
+  echo ' plugins: python' >> /etc/uwsgi/apps-available/mg.yaml
3016
+  echo " home: $MEDIAGOBLIN_PATH/" >> /etc/uwsgi/apps-available/mg.yaml
3017
+  echo " chdir: $MEDIAGOBLIN_PATH/" >> /etc/uwsgi/apps-available/mg.yaml
3018
+  echo " ini-paste: $MEDIAGOBLIN_PATH/paste_local.ini" >> /etc/uwsgi/apps-available/mg.yaml
3019
+
3020
+  echo '[program:celery]' > /etc/supervisor/conf.d/mediagoblin.conf
3021
+  echo "command=$MEDIAGOBLIN_PATH/bin/celery worker -l debug" >> /etc/supervisor/conf.d/mediagoblin.conf
3022
+  echo '' >> /etc/supervisor/conf.d/mediagoblin.conf
3023
+  echo '; Set PYTHONPATH to the directory containing celeryconfig.py' >> /etc/supervisor/conf.d/mediagoblin.conf
3024
+  echo "environment=PYTHONPATH='$MEDIAGOBLIN_PATH',MEDIAGOBLIN_CONFIG='$MEDIAGOBLIN_PATH/mediagoblin_local.ini',CELERY_CONFIG_MODULE='mediagoblin.init.celery.from_celery'" >> /etc/supervisor/conf.d/mediagoblin.conf
3025
+  echo '' >> /etc/supervisor/conf.d/mediagoblin.conf
3026
+  echo "directory=$MEDIAGOBLIN_PATH/" >> /etc/supervisor/conf.d/mediagoblin.conf
3027
+  echo 'user=mediagoblin' >> /etc/supervisor/conf.d/mediagoblin.conf
3028
+  echo 'numprocs=1' >> /etc/supervisor/conf.d/mediagoblin.conf
3029
+  echo '; uncomment below to enable logs saving' >> /etc/supervisor/conf.d/mediagoblin.conf
3030
+  echo ";stdout_logfile=/var/log/nginx/celeryd_stdout.log" >> /etc/supervisor/conf.d/mediagoblin.conf
3031
+  echo ";stderr_logfile=/var/log/nginx/celeryd_stderr.log" >> /etc/supervisor/conf.d/mediagoblin.conf
3032
+  echo 'autostart=true' >> /etc/supervisor/conf.d/mediagoblin.conf
3033
+  echo 'autorestart=false' >> /etc/supervisor/conf.d/mediagoblin.conf
3034
+  echo 'startsecs=10' >> /etc/supervisor/conf.d/mediagoblin.conf
3035
+  echo '' >> /etc/supervisor/conf.d/mediagoblin.conf
3036
+  echo '; Need to wait for currently executing tasks to finish at shutdown.' >> /etc/supervisor/conf.d/mediagoblin.conf
3037
+  echo '; Increase this if you have very long running tasks.' >> /etc/supervisor/conf.d/mediagoblin.conf
3038
+  echo 'stopwaitsecs = 600' >> /etc/supervisor/conf.d/mediagoblin.conf
3039
+
3040
+  ln -s /etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME /etc/nginx/sites-enabled/
3041
+  ln -s /etc/uwsgi/apps-available/mg.yaml /etc/uwsgi/apps-enabled/
3042
+
3043
+  # change settings
3044
+  sed -i "s/notice@mediagoblin.example.org/$MY_USERNAME@$DOMAIN_NAME/g" /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini
3045
+  sed -i 's/email_debug_mode = true/email_debug_mode = false/g' /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini
3046
+  sed -i 's|# sql_engine = postgresql:///mediagoblin|sql_engine = postgresql:///mediagoblin|g' /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini
3047
+
3048
+  # add extra media types
3049
+  if grep -q "media_types.audio" /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini; then
3050
+      echo '[[mediagoblin.media_types.audio]]' >> /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini
3051
+  fi
3052
+  if grep -q "media_types.video" /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini; then
3053
+      echo '[[mediagoblin.media_types.video]]' >> /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini
3054
+  fi
3055
+  if grep -q "media_types.stl" /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini; then
3056
+      echo '[[mediagoblin.media_types.stl]]' >> /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin_local.ini
3057
+  fi
3058
+
3059
+  su -c "cd /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin; ./bin/pip install scikits.audiolab" - mediagoblin
3060
+  su -c "cd /srv/$MEDIAGOBLIN_DOMAIN_NAME/mediagoblin/mediagoblin; ./bin/gmg dbupdate" - mediagoblin
3061
+
3062
+  echo 'install_mediagoblin' >> $COMPLETION_FILE
3063
+}
3064
+
2912 3065
 function install_final {
2913 3066
   if grep -Fxq "install_final" $COMPLETION_FILE; then
2914 3067
       return