|
@@ -1251,6 +1251,12 @@ function read_configuration {
|
1251
|
1251
|
if grep -q "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE; then
|
1252
|
1252
|
MEDIAGOBLIN_CODE=$(grep "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
1253
|
1253
|
fi
|
|
1254
|
+ if grep -q "MEDIAGOBLIN_REPO" $CONFIGURATION_FILE; then
|
|
1255
|
+ MEDIAGOBLIN_REPO=$(grep "MEDIAGOBLIN_REPO" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
|
1256
|
+ fi
|
|
1257
|
+ if grep -q "MEDIAGOBLIN_COMMIT" $CONFIGURATION_FILE; then
|
|
1258
|
+ MEDIAGOBLIN_COMMIT=$(grep "MEDIAGOBLIN_COMMIT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
|
1259
|
+ fi
|
1254
|
1260
|
if grep -q "GIT_ADMIN_PASSWORD" $CONFIGURATION_FILE; then
|
1255
|
1261
|
GIT_ADMIN_PASSWORD=$(grep "GIT_ADMIN_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
1256
|
1262
|
fi
|
|
@@ -1486,6 +1492,9 @@ function set_default_onion_domains {
|
1486
|
1492
|
if [ ${#GIT_DOMAIN_NAME} -gt 1 ]; then
|
1487
|
1493
|
GIT_DOMAIN_NAME='git.local'
|
1488
|
1494
|
fi
|
|
1495
|
+ if [ ${#MEDIAGOBLIN_DOMAIN_NAME} -gt 1 ]; then
|
|
1496
|
+ MEDIAGOBLIN_DOMAIN_NAME='media.local'
|
|
1497
|
+ fi
|
1489
|
1498
|
}
|
1490
|
1499
|
|
1491
|
1500
|
function nginx_disable_sniffing {
|
|
@@ -1894,92 +1903,92 @@ function check_domains {
|
1894
|
1903
|
fi
|
1895
|
1904
|
|
1896
|
1905
|
if [ ${#GIT_DOMAIN_NAME} -gt 1 ]; then
|
1897
|
|
- test_domain_name "$GIT_DOMAIN_NAME"
|
1898
|
|
-
|
1899
|
|
- if [[ "$test_domain_name" == "$WIKI_DOMAIN_NAME" ]]; then
|
1900
|
|
- echo $'Hubzilla domain name is the same as wiki domain name. They must be different'
|
1901
|
|
- exit 83682
|
1902
|
|
- fi
|
1903
|
|
- if [[ "$test_domain_name" == "$OWNCLOUD_DOMAIN_NAME" ]]; then
|
1904
|
|
- echo $'Hubzilla domain name is the same as Owncloud domain name. They must be different'
|
1905
|
|
- exit 65192
|
1906
|
|
- fi
|
1907
|
|
- if [[ "$test_domain_name" == "$FULLBLOG_DOMAIN_NAME" ]]; then
|
1908
|
|
- echo $'Hubzilla domain name is the same as blog domain name. They must be different'
|
1909
|
|
- exit 74817
|
1910
|
|
- fi
|
1911
|
|
- if [[ "$test_domain_name" == "$MICROBLOG_DOMAIN_NAME" ]]; then
|
1912
|
|
- echo $'Hubzilla domain name is the same as microblog domain name. They must be different'
|
1913
|
|
- exit 83683
|
1914
|
|
- fi
|
1915
|
|
- if [[ "$test_domain_name" == "$HUBZILLA_DOMAIN_NAME" ]]; then
|
1916
|
|
- echo $'Microblog domain name is the same as hubzilla domain name. They must be different'
|
1917
|
|
- exit 678382
|
1918
|
|
- fi
|
1919
|
|
- fi
|
|
1906
|
+ test_domain_name "$GIT_DOMAIN_NAME"
|
|
1907
|
+
|
|
1908
|
+ if [[ "$test_domain_name" == "$WIKI_DOMAIN_NAME" ]]; then
|
|
1909
|
+ echo $'Hubzilla domain name is the same as wiki domain name. They must be different'
|
|
1910
|
+ exit 83682
|
|
1911
|
+ fi
|
|
1912
|
+ if [[ "$test_domain_name" == "$OWNCLOUD_DOMAIN_NAME" ]]; then
|
|
1913
|
+ echo $'Hubzilla domain name is the same as Owncloud domain name. They must be different'
|
|
1914
|
+ exit 65192
|
|
1915
|
+ fi
|
|
1916
|
+ if [[ "$test_domain_name" == "$FULLBLOG_DOMAIN_NAME" ]]; then
|
|
1917
|
+ echo $'Hubzilla domain name is the same as blog domain name. They must be different'
|
|
1918
|
+ exit 74817
|
|
1919
|
+ fi
|
|
1920
|
+ if [[ "$test_domain_name" == "$MICROBLOG_DOMAIN_NAME" ]]; then
|
|
1921
|
+ echo $'Hubzilla domain name is the same as microblog domain name. They must be different'
|
|
1922
|
+ exit 83683
|
|
1923
|
+ fi
|
|
1924
|
+ if [[ "$test_domain_name" == "$HUBZILLA_DOMAIN_NAME" ]]; then
|
|
1925
|
+ echo $'Microblog domain name is the same as hubzilla domain name. They must be different'
|
|
1926
|
+ exit 678382
|
|
1927
|
+ fi
|
|
1928
|
+ fi
|
1920
|
1929
|
}
|
1921
|
1930
|
|
1922
|
1931
|
# Checks whether certificates were generated for the given hostname
|
1923
|
1932
|
function check_certificates {
|
1924
|
|
- if [ ! $1 ]; then
|
1925
|
|
- return
|
1926
|
|
- fi
|
1927
|
|
- if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
|
1928
|
|
- if [ ! -f /etc/ssl/private/$1.key ]; then
|
1929
|
|
- echo $"Private certificate for $CHECK_HOSTNAME was not created"
|
1930
|
|
- exit 63959
|
1931
|
|
- fi
|
1932
|
|
- if [ ! -f /etc/ssl/certs/$1.crt ]; then
|
1933
|
|
- echo $"Public certificate for $CHECK_HOSTNAME was not created"
|
1934
|
|
- exit 7679
|
1935
|
|
- fi
|
1936
|
|
- else
|
1937
|
|
- if [ ! -f /etc/letsencrypt/live/${1}/privkey.pem ]; then
|
1938
|
|
- echo $"Private certificate for $CHECK_HOSTNAME was not created"
|
1939
|
|
- exit 6282
|
1940
|
|
- fi
|
1941
|
|
- if [ ! -f /etc/letsencrypt/live/${1}/fullchain.pem ]; then
|
1942
|
|
- echo $"Public certificate for $CHECK_HOSTNAME was not created"
|
1943
|
|
- exit 5328
|
1944
|
|
- fi
|
1945
|
|
- fi
|
1946
|
|
- if [ ! -f /etc/ssl/certs/$1.dhparam ]; then
|
1947
|
|
- echo $"Diffie–Hellman parameters for $CHECK_HOSTNAME were not created"
|
1948
|
|
- exit 5989
|
1949
|
|
- fi
|
|
1933
|
+ if [ ! $1 ]; then
|
|
1934
|
+ return
|
|
1935
|
+ fi
|
|
1936
|
+ if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
|
|
1937
|
+ if [ ! -f /etc/ssl/private/$1.key ]; then
|
|
1938
|
+ echo $"Private certificate for $CHECK_HOSTNAME was not created"
|
|
1939
|
+ exit 63959
|
|
1940
|
+ fi
|
|
1941
|
+ if [ ! -f /etc/ssl/certs/$1.crt ]; then
|
|
1942
|
+ echo $"Public certificate for $CHECK_HOSTNAME was not created"
|
|
1943
|
+ exit 7679
|
|
1944
|
+ fi
|
|
1945
|
+ else
|
|
1946
|
+ if [ ! -f /etc/letsencrypt/live/${1}/privkey.pem ]; then
|
|
1947
|
+ echo $"Private certificate for $CHECK_HOSTNAME was not created"
|
|
1948
|
+ exit 6282
|
|
1949
|
+ fi
|
|
1950
|
+ if [ ! -f /etc/letsencrypt/live/${1}/fullchain.pem ]; then
|
|
1951
|
+ echo $"Public certificate for $CHECK_HOSTNAME was not created"
|
|
1952
|
+ exit 5328
|
|
1953
|
+ fi
|
|
1954
|
+ fi
|
|
1955
|
+ if [ ! -f /etc/ssl/certs/$1.dhparam ]; then
|
|
1956
|
+ echo $"Diffie–Hellman parameters for $CHECK_HOSTNAME were not created"
|
|
1957
|
+ exit 5989
|
|
1958
|
+ fi
|
1950
|
1959
|
}
|
1951
|
1960
|
|
1952
|
1961
|
function backup_database_local {
|
1953
|
|
- # Makes local backups of databases which can then be automatically rolled
|
1954
|
|
- # back if corruption is detected
|
1955
|
|
- database_name=$1
|
1956
|
|
-
|
1957
|
|
- backup_databases_script=/usr/bin/backupdatabases
|
1958
|
|
- echo '' >> $backup_databases_script
|
1959
|
|
- echo "# Backup the ${database_name} database" >> $backup_databases_script
|
1960
|
|
- echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
|
1961
|
|
- echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
|
1962
|
|
- echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
|
1963
|
|
- echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
|
1964
|
|
- echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
|
1965
|
|
- echo ' if [ -f $DAILYFILE ]; then' >> $backup_databases_script
|
1966
|
|
- echo ' cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
|
1967
|
|
- echo '' >> $backup_databases_script
|
1968
|
|
- echo ' # try to restore yesterdays database' >> $backup_databases_script
|
1969
|
|
- echo " mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
|
1970
|
|
- echo '' >> $backup_databases_script
|
1971
|
|
- echo ' # Send a warning email' >> $backup_databases_script
|
1972
|
|
- echo " echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
1973
|
|
- echo ' else' >> $backup_databases_script
|
1974
|
|
- echo ' # Send a warning email' >> $backup_databases_script
|
1975
|
|
- echo " echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
1976
|
|
- echo ' fi' >> $backup_databases_script
|
1977
|
|
- echo 'else' >> $backup_databases_script
|
1978
|
|
- echo ' chmod 600 $TEMPFILE' >> $backup_databases_script
|
1979
|
|
- echo ' mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
|
1980
|
|
- echo '' >> $backup_databases_script
|
1981
|
|
- echo ' # Make the backup readable only by root' >> $backup_databases_script
|
1982
|
|
- echo ' chmod 600 $DAILYFILE' >> $backup_databases_script
|
|
1962
|
+ # Makes local backups of databases which can then be automatically rolled
|
|
1963
|
+ # back if corruption is detected
|
|
1964
|
+ database_name=$1
|
|
1965
|
+
|
|
1966
|
+ backup_databases_script=/usr/bin/backupdatabases
|
|
1967
|
+ echo '' >> $backup_databases_script
|
|
1968
|
+ echo "# Backup the ${database_name} database" >> $backup_databases_script
|
|
1969
|
+ echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
|
|
1970
|
+ echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
|
|
1971
|
+ echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
|
|
1972
|
+ echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
|
|
1973
|
+ echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
|
|
1974
|
+ echo ' if [ -f $DAILYFILE ]; then' >> $backup_databases_script
|
|
1975
|
+ echo ' cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
|
|
1976
|
+ echo '' >> $backup_databases_script
|
|
1977
|
+ echo ' # try to restore yesterdays database' >> $backup_databases_script
|
|
1978
|
+ echo " mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
|
|
1979
|
+ echo '' >> $backup_databases_script
|
|
1980
|
+ echo ' # Send a warning email' >> $backup_databases_script
|
|
1981
|
+ echo " echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
|
1982
|
+ echo ' else' >> $backup_databases_script
|
|
1983
|
+ echo ' # Send a warning email' >> $backup_databases_script
|
|
1984
|
+ echo " echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
|
1985
|
+ echo ' fi' >> $backup_databases_script
|
|
1986
|
+ echo 'else' >> $backup_databases_script
|
|
1987
|
+ echo ' chmod 600 $TEMPFILE' >> $backup_databases_script
|
|
1988
|
+ echo ' mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
|
|
1989
|
+ echo '' >> $backup_databases_script
|
|
1990
|
+ echo ' # Make the backup readable only by root' >> $backup_databases_script
|
|
1991
|
+ echo ' chmod 600 $DAILYFILE' >> $backup_databases_script
|
1983
|
1992
|
echo 'fi' >> $backup_databases_script
|
1984
|
1993
|
|
1985
|
1994
|
weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
|
|
@@ -9607,150 +9616,163 @@ function install_mediagoblin {
|
9607
|
9616
|
cd $MEDIAGOBLIN_WORKING_DIRECTORY
|
9608
|
9617
|
git checkout $MEDIAGOBLIN_COMMIT -b $MEDIAGOBLIN_COMMIT
|
9609
|
9618
|
|
9610
|
|
- ./bootstrap.sh
|
9611
|
|
- if [ ! "$?" = "0" ]; then
|
9612
|
|
- exit 278826
|
9613
|
|
- fi
|
9614
|
|
-
|
9615
|
|
- ./configure --with-python3 --without-virtualenv
|
9616
|
|
- if [ ! "$?" = "0" ]; then
|
9617
|
|
- exit 462826
|
9618
|
|
- fi
|
9619
|
|
-
|
9620
|
|
- make
|
9621
|
|
- if [ ! "$?" = "0" ]; then
|
9622
|
|
- exit 738229
|
9623
|
|
- fi
|
9624
|
|
-
|
9625
|
|
- if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev ]; then
|
9626
|
|
- mkdir $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
|
9627
|
|
- fi
|
9628
|
|
- chmod 750 $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
|
9629
|
|
- easy_install flup
|
9630
|
|
- if [ ! "$?" = "0" ]; then
|
9631
|
|
- exit 83527
|
9632
|
|
- fi
|
9633
|
|
- if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin.ini ]; then
|
9634
|
|
- echo $'mediagoblin.ini not found'
|
9635
|
|
- exit 737529
|
9636
|
|
- fi
|
9637
|
|
- if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/paste.ini ]; then
|
9638
|
|
- echo $'paste.ini not found'
|
9639
|
|
- exit 52762
|
9640
|
|
- fi
|
9641
|
|
-
|
9642
|
|
- cp -av mediagoblin.ini mediagoblin_local.ini
|
9643
|
|
- cp -av paste.ini paste_local.ini
|
9644
|
|
-
|
9645
|
|
- # TODO configure ini files
|
9646
|
|
-
|
9647
|
|
- chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
|
9648
|
|
-
|
9649
|
|
- # init with systemd
|
9650
|
|
- echo '[Unit]' > /etc/systemd/system/mediagoblin.service
|
9651
|
|
- echo 'Description=Mediagoblin (Media Server)' >> /etc/systemd/system/mediagoblin.service
|
9652
|
|
- echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin.service
|
9653
|
|
- echo 'After=network.target' >> /etc/systemd/system/mediagoblin.service
|
9654
|
|
- #echo 'After=postgresql.service' >> /etc/systemd/system/mediagoblin.service
|
9655
|
|
- echo '' >> /etc/systemd/system/mediagoblin.service
|
9656
|
|
- echo '[Service]' >> /etc/systemd/system/mediagoblin.service
|
9657
|
|
- echo 'Type=simple' >> /etc/systemd/system/mediagoblin.service
|
9658
|
|
- echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin.service
|
9659
|
|
- echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin.service
|
9660
|
|
- echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin.service
|
9661
|
|
- echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/lazyserver.sh --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543" >> /etc/systemd/system/mediagoblin.service
|
9662
|
|
- echo 'Restart=always' >> /etc/systemd/system/mediagoblin.service
|
9663
|
|
- echo 'Environment="USER=mediagoblin","HOME=/var/lib/mediagoblin"' >> /etc/systemd/system/mediagoblin.service
|
9664
|
|
- echo '' >> /etc/systemd/system/mediagoblin.service
|
9665
|
|
- echo '[Install]' >> /etc/systemd/system/mediagoblin.service
|
9666
|
|
- echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin.service
|
9667
|
|
- systemctl daemon-reload
|
9668
|
|
- systemctl enable mediagoblin
|
9669
|
|
- systemctl start mediagoblin
|
9670
|
|
-
|
9671
|
|
- # web config
|
9672
|
|
- MEDIAGOBLIN_VIRTUAL_HOST=/etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
|
9673
|
|
- nginx_http_redirect $MEDIAGOBLIN_DOMAIN_NAME
|
9674
|
|
- echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9675
|
|
- echo ' listen 443 ssl;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9676
|
|
- echo ' #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9677
|
|
- echo ' # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9678
|
|
- echo ' #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9679
|
|
- echo ' include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9680
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9681
|
|
- echo ' autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9682
|
|
- echo ' default_type application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9683
|
|
- echo ' sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9684
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9685
|
|
- nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
|
9686
|
|
- nginx_ssl $MEDIAGOBLIN_DOMAIN_NAME
|
9687
|
|
- nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
|
9688
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9689
|
|
- echo ' # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9690
|
|
- echo ' gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9691
|
|
- echo ' gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9692
|
|
- echo ' gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9693
|
|
- echo ' gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9694
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9695
|
|
- echo ' #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9696
|
|
- echo ' # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9697
|
|
- echo ' # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9698
|
|
- echo ' #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9699
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9700
|
|
- echo " server_name $MEDIAGOBLIN_DOMAIN_NAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9701
|
|
- echo ' access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9702
|
|
- echo ' error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9703
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9704
|
|
- echo ' # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9705
|
|
- echo ' location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9706
|
|
- echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9707
|
|
- echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9708
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9709
|
|
- echo ' # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9710
|
|
- echo ' location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9711
|
|
- echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9712
|
|
- echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9713
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9714
|
|
- echo ' # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9715
|
|
- echo ' location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9716
|
|
- echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9717
|
|
- echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9718
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9719
|
|
- echo ' # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9720
|
|
- echo ' location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9721
|
|
- echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9722
|
|
- echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9723
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9724
|
|
- echo ' # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9725
|
|
- echo ' location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9726
|
|
- echo ' fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9727
|
|
- echo ' include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9728
|
|
- echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9729
|
|
- echo ' # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9730
|
|
- echo ' # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9731
|
|
- echo ' fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9732
|
|
- echo ' fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9733
|
|
- echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9734
|
|
- echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
9735
|
|
-
|
9736
|
|
- if [ ! -f /etc/ssl/certs/$MEDIAGOBLIN_DOMAIN_NAME.dhparam ]; then
|
9737
|
|
- if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
|
9738
|
|
- ${PROJECT_NAME}-addcert -h $MEDIAGOBLIN_DOMAIN_NAME --dhkey $DH_KEYLENGTH
|
9739
|
|
- else
|
9740
|
|
- ${PROJECT_NAME}-addcert -e $MEDIAGOBLIN_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
|
9741
|
|
- fi
|
9742
|
|
- check_certificates $MEDIAGOBLIN_DOMAIN_NAME
|
9743
|
|
- fi
|
9744
|
|
-
|
9745
|
|
- nginx_ensite $MEDIAGOBLIN_DOMAIN_NAME
|
9746
|
|
- systemctl restart php5-fpm
|
9747
|
|
- systemctl restart nginx
|
9748
|
|
-
|
9749
|
|
- # update the dynamic DNS
|
9750
|
|
- CURRENT_DDNS_DOMAIN=$MEDIAGOBLIN_DOMAIN_NAME
|
9751
|
|
- add_ddns_domain
|
9752
|
|
-
|
9753
|
|
- echo 'install_mediagoblin' >> $COMPLETION_FILE
|
|
9619
|
+ if ! grep -q "Mediagoblin commit" $COMPLETION_FILE; then
|
|
9620
|
+ echo "Mediagoblin commit:$MEDIAGOBLIN_COMMIT" >> $COMPLETION_FILE
|
|
9621
|
+ else
|
|
9622
|
+ sed -i "s/Mediagoblin commit.*/Mediagoblin commit:$MEDIAGOBLIN_COMMIT/g" $COMPLETION_FILE
|
|
9623
|
+ fi
|
|
9624
|
+
|
|
9625
|
+ ./bootstrap.sh
|
|
9626
|
+ if [ ! "$?" = "0" ]; then
|
|
9627
|
+ exit 278826
|
|
9628
|
+ fi
|
|
9629
|
+
|
|
9630
|
+ ./configure --with-python3 --without-virtualenv
|
|
9631
|
+ if [ ! "$?" = "0" ]; then
|
|
9632
|
+ exit 462826
|
|
9633
|
+ fi
|
|
9634
|
+
|
|
9635
|
+ make
|
|
9636
|
+ if [ ! "$?" = "0" ]; then
|
|
9637
|
+ exit 738229
|
|
9638
|
+ fi
|
|
9639
|
+
|
|
9640
|
+ if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev ]; then
|
|
9641
|
+ mkdir $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
|
|
9642
|
+ fi
|
|
9643
|
+ chmod 750 $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
|
|
9644
|
+ easy_install flup
|
|
9645
|
+ if [ ! "$?" = "0" ]; then
|
|
9646
|
+ exit 83527
|
|
9647
|
+ fi
|
|
9648
|
+ if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin.ini ]; then
|
|
9649
|
+ echo $'mediagoblin.ini not found'
|
|
9650
|
+ exit 737529
|
|
9651
|
+ fi
|
|
9652
|
+ if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/paste.ini ]; then
|
|
9653
|
+ echo $'paste.ini not found'
|
|
9654
|
+ exit 52762
|
|
9655
|
+ fi
|
|
9656
|
+
|
|
9657
|
+ cp -av mediagoblin.ini mediagoblin_local.ini
|
|
9658
|
+ cp -av paste.ini paste_local.ini
|
|
9659
|
+
|
|
9660
|
+ # TODO configure ini files
|
|
9661
|
+
|
|
9662
|
+ chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
|
|
9663
|
+
|
|
9664
|
+ # init with systemd
|
|
9665
|
+ echo '[Unit]' > /etc/systemd/system/mediagoblin.service
|
|
9666
|
+ echo 'Description=Mediagoblin (Media Server)' >> /etc/systemd/system/mediagoblin.service
|
|
9667
|
+ echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin.service
|
|
9668
|
+ echo 'After=network.target' >> /etc/systemd/system/mediagoblin.service
|
|
9669
|
+ #echo 'After=postgresql.service' >> /etc/systemd/system/mediagoblin.service
|
|
9670
|
+ echo '' >> /etc/systemd/system/mediagoblin.service
|
|
9671
|
+ echo '[Service]' >> /etc/systemd/system/mediagoblin.service
|
|
9672
|
+ echo 'Type=simple' >> /etc/systemd/system/mediagoblin.service
|
|
9673
|
+ echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin.service
|
|
9674
|
+ echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin.service
|
|
9675
|
+ echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin.service
|
|
9676
|
+ echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/lazyserver.sh --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543" >> /etc/systemd/system/mediagoblin.service
|
|
9677
|
+ echo 'Restart=always' >> /etc/systemd/system/mediagoblin.service
|
|
9678
|
+ echo 'Environment="USER=mediagoblin","HOME=/var/lib/mediagoblin"' >> /etc/systemd/system/mediagoblin.service
|
|
9679
|
+ echo '' >> /etc/systemd/system/mediagoblin.service
|
|
9680
|
+ echo '[Install]' >> /etc/systemd/system/mediagoblin.service
|
|
9681
|
+ echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin.service
|
|
9682
|
+ systemctl daemon-reload
|
|
9683
|
+ systemctl enable mediagoblin
|
|
9684
|
+ systemctl start mediagoblin
|
|
9685
|
+
|
|
9686
|
+ MEDIAGOBLIN_ONION_HOSTNAME=$(add_onion_service mediagoblin 80 ${MEDIAGOBLIN_ONION_PORT})
|
|
9687
|
+ if ! grep -q "Mediagoblin onion domain" $COMPLETION_FILE; then
|
|
9688
|
+ echo "Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}" >> $COMPLETION_FILE
|
|
9689
|
+ else
|
|
9690
|
+ sed -i "s|Mediagoblin onion domain.*|Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}|g" $COMPLETION_FILE
|
|
9691
|
+ fi
|
|
9692
|
+
|
|
9693
|
+ # web config
|
|
9694
|
+ MEDIAGOBLIN_VIRTUAL_HOST=/etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
|
|
9695
|
+ nginx_http_redirect $MEDIAGOBLIN_DOMAIN_NAME
|
|
9696
|
+ echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9697
|
+ echo ' listen 443 ssl;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9698
|
+ echo ' #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9699
|
+ echo ' # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9700
|
+ echo ' #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9701
|
+ echo ' include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9702
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9703
|
+ echo ' autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9704
|
+ echo ' default_type application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9705
|
+ echo ' sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9706
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9707
|
+ nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
|
|
9708
|
+ nginx_ssl $MEDIAGOBLIN_DOMAIN_NAME
|
|
9709
|
+ nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
|
|
9710
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9711
|
+ echo ' # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9712
|
+ echo ' gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9713
|
+ echo ' gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9714
|
+ echo ' gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9715
|
+ echo ' gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9716
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9717
|
+ echo ' #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9718
|
+ echo ' # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9719
|
+ echo ' # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9720
|
+ echo ' #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9721
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9722
|
+ echo " server_name $MEDIAGOBLIN_DOMAIN_NAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9723
|
+ echo ' access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9724
|
+ echo ' error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9725
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9726
|
+ echo ' # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9727
|
+ echo ' location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9728
|
+ echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9729
|
+ echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9730
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9731
|
+ echo ' # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9732
|
+ echo ' location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9733
|
+ echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9734
|
+ echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9735
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9736
|
+ echo ' # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9737
|
+ echo ' location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9738
|
+ echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9739
|
+ echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9740
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9741
|
+ echo ' # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9742
|
+ echo ' location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9743
|
+ echo " alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9744
|
+ echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9745
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9746
|
+ echo ' # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9747
|
+ echo ' location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9748
|
+ echo ' fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9749
|
+ echo ' include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9750
|
+ echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9751
|
+ echo ' # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9752
|
+ echo ' # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9753
|
+ echo ' fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9754
|
+ echo ' fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9755
|
+ echo ' }' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9756
|
+ echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
|
|
9757
|
+
|
|
9758
|
+ if [ ! -f /etc/ssl/certs/$MEDIAGOBLIN_DOMAIN_NAME.dhparam ]; then
|
|
9759
|
+ if [[ $LETSENCRYPT_ENABLED != "yes" ]]; then
|
|
9760
|
+ ${PROJECT_NAME}-addcert -h $MEDIAGOBLIN_DOMAIN_NAME --dhkey $DH_KEYLENGTH
|
|
9761
|
+ else
|
|
9762
|
+ ${PROJECT_NAME}-addcert -e $MEDIAGOBLIN_DOMAIN_NAME -s $LETSENCRYPT_SERVER --dhkey $DH_KEYLENGTH --email $MY_EMAIL_ADDRESS
|
|
9763
|
+ fi
|
|
9764
|
+ check_certificates $MEDIAGOBLIN_DOMAIN_NAME
|
|
9765
|
+ fi
|
|
9766
|
+
|
|
9767
|
+ nginx_ensite $MEDIAGOBLIN_DOMAIN_NAME
|
|
9768
|
+ systemctl restart php5-fpm
|
|
9769
|
+ systemctl restart nginx
|
|
9770
|
+
|
|
9771
|
+ # update the dynamic DNS
|
|
9772
|
+ CURRENT_DDNS_DOMAIN=$MEDIAGOBLIN_DOMAIN_NAME
|
|
9773
|
+ add_ddns_domain
|
|
9774
|
+
|
|
9775
|
+ echo 'install_mediagoblin' >> $COMPLETION_FILE
|
9754
|
9776
|
}
|
9755
|
9777
|
|
9756
|
9778
|
function create_upgrade_script {
|