Skip to content

Instantly share code, notes, and snippets.

@jendrusk
Created August 15, 2019 08:37
Show Gist options
  • Save jendrusk/fbcda7680a7c62195c4b87ca7fd429c7 to your computer and use it in GitHub Desktop.
Save jendrusk/fbcda7680a7c62195c4b87ca7fd429c7 to your computer and use it in GitHub Desktop.
Skrypt instaluje uprel/gisapp i uprel/gisportal na ubuntu 18.04
#!/bin/bash
set -x
#czekamy aż będzie sieć
while ! (ping -c 1 8.8.8.8); do sleep 1; done
# update, upgrade
apt update
apt upgrade -y
# instalacja apache
apt install -y apache2 libapache2-mod-fcgid
# instalacja mc
apt install -y mc
apt install -y software-properties-common git
# włączenie modułów apache
a2enmod rewrite
a2enmod cgi
a2enmod fcgid
service apache2 restart
# repozytorium dla paczek QGIS
apt-add-repository 'deb https://qgis.org/debian-ltr bionic main'
apt-key adv --keyserver keyserver.ubuntu.com --recv-key CAEB3DC3BDF7FB45
apt update
# sprawdzamy co się zainstaluje
apt policy qgis-server
#instalacja QGIS Serwera
apt install -y qgis-server python3-qgis
#instalacja bazy danych
apt install -y postgresql
#instalacja php
apt install -y php libapache2-mod-php php-pgsql php-xml php-zip
service apache2 restart
#instalacja gdal-bin
apt install -y gdal-bin
#instalacja gisapp
cd /var/www/html/ && git clone https://github.com/uprel/gisapp.git
cd /var/www/html/gisapp && git checkout v1.8.2
cp /var/www/html/gisapp/_setup/gisapp.conf /etc/apache2/conf-available/
#rekonfiguracja apache
sed -i '2i\ ' /etc/apache2/sites-available/000-default.conf
sed -i '2iInclude conf-available/gisapp.conf' /etc/apache2/sites-available/000-default.conf
sed -i '2iInclude conf-available/serve-cgi-bin.conf' /etc/apache2/sites-available/000-default.conf
sed -i '2i\ ' /etc/apache2/sites-available/000-default.conf
sed -i '2i FcgidInitialEnv QGIS_AUTH_DB_DIR_PATH "/srv/qgissrvdb/"' /etc/apache2/sites-available/000-default.conf
sed -i '2i FcgidInitialEnv QGIS_AUTH_PASSWORD_FILE "/srv/qgissrvdb/qgis-auth.db"' /etc/apache2/sites-available/000-default.conf
sed -i '2iFcgidInitialEnv QGIS_SERVER_LOG_FILE /var/log/qgis/qgisserver.log' /etc/apache2/sites-available/000-default.conf
sed -i '2iFcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0' /etc/apache2/sites-available/000-default.conf
sed -i '2iFcgidInitialEnv QGIS_DEBUG 1' /etc/apache2/sites-available/000-default.conf
sed -i '2iFcgidIOTimeout 120' /etc/apache2/sites-available/000-default.conf
sed -i '2iFcgidMaxRequestLen 26214400' /etc/apache2/sites-available/000-default.conf
sed -i '2iFcgidConnectTimeout 60' /etc/apache2/sites-available/000-default.conf
service apache2 restart
# foldery dla QGIS Servera
mkdir -p /srv/qgissrvdb/
chown www-data:www-data /srv/qgissrvdb/
mkdir /var/log/qgis/
chown www-data:www-data /var/log/qgis
service apache2 reload
# utworzenie użytkownika w bazie
sudo -u postgres psql -c "create user gisapp_usr nocreatedb inherit login createrole superuser password 'gausr54321';"
# utworzenie bazy danych dla aplikacji
sudo -u postgres psql <<EOF
CREATE DATABASE gisapp WITH OWNER = gisapp_usr ENCODING = 'UTF8';
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON tables TO gisapp_usr;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, USAGE ON sequences TO gisapp_usr;
\connect gisapp
\i /var/www/html/gisapp/_scripts/_setup.sql
EOF
#zapisanie hasła dla postgresa lokalnie
echo "127.0.0.1:5432:gisapp:gisapp_usr:gausr54321" > ~/.pgpass
chmod 700 ~/.pgpass
# sprawdzenie czy baza działa i została prawidłowo wypełniona
psql -h 127.0.0.1 -U gisapp_usr -w -c "SELECT name FROM layers;" gisapp
# kopia ustawień z szablonu i zmiana danych logowania do bazy
cp /var/www/html/gisapp/admin/settings_template.php /var/www/html/gisapp/admin/settings.php
sed -i 's/username/gisapp_usr/g' /var/www/html/gisapp/admin/settings.php
sed -i 's/password/gausr54321/g' /var/www/html/gisapp/admin/settings.php
# pokaż ustawienia
cat /var/www/html/gisapp/admin/settings.php
# kopia ustawień javascriptu
cp /var/www/html/gisapp/client_common/settings-template.js /var/www/html/gisapp/client_common/settings.js
# pobieramy gisportal (część administracyjna)
cd /var/www/html/ && git clone https://github.com/uprel/gisportal.git
cd /var/www/html/gisportal && git checkout v1.0.0
# Konfiguracja dostępu do bazy danych
sed -i 's/\x27username\x27 => \x27pguser\x27/\x27username\x27 => \x27gisapp_usr\x27/g' /var/www/html/gisportal/application/config/database.php
sed -i 's/\x27password\x27 => \x27password\x27/\x27password\x27 => \x27gausr54321\x27/g' /var/www/html/gisportal/application/config/database.php
# konfiguracja adresu i domyślnego języka
sed -i 's/\$config\[\x27base_url\x27\] = \x27http:\/\/your_site\/gisportal\/\x27;/\$config\[\x27base_url\x27\] = \x27http:\/\/gisapp.demo\/gisportal\/\x27;/g' /var/www/html/gisportal/application/config/config.php
sed -i 's/\$config\[\x27language\x27\]\t= \x27english\x27;/\$config\[\x27language\x27\]\t= \x27polish\x27;/g' /var/www/html/gisportal/application/config/config.php
# Kopia ustawień gisportalu z szablonu
cp /var/www/html/gisportal/application/config/gisportal_template.php /var/www/html/gisportal/application/config/gisportal.php
# Adjust gisportal specific settings in new gisportal.php file.
# Edit header_logo.png in assets/img folder.
# Enable integration with gisportal in gisapp/client_common/settings.js
sed -i 's/Eqwc\.settings\.useGisPortal = false;/Eqwc\.settings\.useGisPortal = true;/g' /var/www/html/gisapp/client_common/settings.js
# żeby zachować informację o logowaniu między aplikacjami trzeba przeedytować php.ini
sed -i 's/session\.name = PHPSESSID/session\.name = sess_/g' /etc/php/7.2/apache2/php.ini
sed -i 's/session\.name = PHPSESSID/session\.name = sess_/g' /etc/php/7.2/cli/php.ini
sed -i 's/session\.gc_maxlifetime = 1440/session\.gc_maxlifetime = 7200/g' /etc/php/7.2/apache2/php.ini
sed -i 's/session\.gc_maxlifetime = 1440/session\.gc_maxlifetime = 7200/g' /etc/php/7.2/cli/php.ini
chown -R www-data:www-data /var/www
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment