forked from DiouxX/docker-glpi
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathglpi-start.sh
More file actions
150 lines (121 loc) · 4.59 KB
/
glpi-start.sh
File metadata and controls
150 lines (121 loc) · 4.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/bash
LOGS="install_glpi.log"
cat <<EOF >$LOGS
====================================================
## VARIAVEIS
====================================================
EOF
## Setup PHP
# Setup PHP Ini
echo "Setting 99-glpi.ini..."
cat <<EOF >/etc/php.d/99-glpi.ini
memory_limit = 64M ;
file_uploads = on ;
max_execution_time = 600 ;
register_globals = off ;
magic_quotes_sybase = off ;
session.auto_start = off ;
session.use_trans_sid = 0 ;
EOF
cat <<EOF >/etc/php.d/99-apcu.ini
apc.enable_cli = 1 ;
EOF
#Controle du choix de version ou prise de la latest
[[ ! "$VERSION_GLPI" ]] &&
VERSION_GLPI=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/latest | grep tag_name | cut -d '"' -f 4)
if [[ -z "${TIMEZONE}" ]]; then
echo "TIMEZONE is unset"
else
echo "date.timezone = \"$TIMEZONE\"" >/etc/php/8.3/apache2/conf.d/timezone.ini
echo "date.timezone = \"$TIMEZONE\"" >/etc/php/8.3/cli/conf.d/timezone.ini
fi
#Enable session.cookie_httponly
sed -i 's,session.cookie_httponly = *\(on\|off\|true\|false\|0\|1\)\?,session.cookie_httponly = on,gi' /etc/php/8.3/apache2/php.ini
FOLDER_GLPI=glpi/
FOLDER_WEB=/var/www/html/
#check if TLS_REQCERT is present
if !(grep -q "TLS_REQCERT" /etc/ldap/ldap.conf); then
echo "TLS_REQCERT isn't present"
echo -e "TLS_REQCERT\tnever" >>/etc/ldap/ldap.conf
fi
#Téléchargement et extraction des sources de GLPI
if [ "$(ls ${FOLDER_WEB}${FOLDER_GLPI}/bin)" ]; then
echo "GLPI is already installed"
else
SRC_GLPI=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/tags/${VERSION_GLPI} | jq .assets[0].browser_download_url | tr -d \")
TAR_GLPI=$(basename ${SRC_GLPI})
wget -P ${FOLDER_WEB} ${SRC_GLPI}
tar -xzf ${FOLDER_WEB}${TAR_GLPI} -C ${FOLDER_WEB}
rm -Rf ${FOLDER_WEB}${TAR_GLPI}
chown -R www-data:www-data ${FOLDER_WEB}${FOLDER_GLPI}
fi
#Adapt the Apache server according to the version of GLPI installed
## Extract local version installed
LOCAL_GLPI_VERSION=$(ls ${FOLDER_WEB}/${FOLDER_GLPI}/version)
## Extract major version number
LOCAL_GLPI_MAJOR_VERSION=$(echo $LOCAL_GLPI_VERSION | cut -d. -f1)
## Remove dots from version string
LOCAL_GLPI_VERSION_NUM=${LOCAL_GLPI_VERSION//./}
## Target value is GLPI 1.0.7
TARGET_GLPI_VERSION="10.0.7"
TARGET_GLPI_VERSION_NUM=${TARGET_GLPI_VERSION//./}
TARGET_GLPI_MAJOR_VERSION=$(echo $TARGET_GLPI_VERSION | cut -d. -f1)
# Compare the numeric value of the version number to the target number
if [[ $LOCAL_GLPI_VERSION_NUM -lt $TARGET_GLPI_VERSION_NUM || $LOCAL_GLPI_MAJOR_VERSION -lt $TARGET_GLPI_MAJOR_VERSION ]]; then
# Config for GLPI < 10
echo -e "<VirtualHost *:80>
DocumentRoot /var/www/html/glpi
<Directory /var/www/html/glpi>
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error-glpi.log
LogLevel warn
CustomLog /var/log/apache2/access-glpi.log combined
</VirtualHost>" >/etc/apache2/sites-available/000-default.conf
else
# Config for GLPI >= 10
set +H
echo -e "<VirtualHost *:80>
DocumentRoot /var/www/html/glpi/public
<Directory /var/www/html/glpi/public>
Require all granted
RewriteEngine On
# Ensure authorization headers are passed to PHP.
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect all requests to GLPI router, unless file exists.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
ErrorLog /var/log/apache2/error-glpi.log
LogLevel warn
CustomLog /var/log/apache2/access-glpi.log combined
</VirtualHost>" >/etc/apache2/sites-available/000-default.conf
fi
chown -R www-data:www-data /var/www/html/glpi/
chmod -R u+rwx /var/www/html/glpi/
/usr/bin/php /var/www/html/glpi/bin/console glpi:database:install \
--reconfigure \
--no-interaction \
--force \
--db-host=${MARIADB_DB_HOST} \
--db-port=${MARIADB_DB_PORT} \
--db-name=${MARIADB_DB_NAME} \
--db-user=${MARIADB_DB_USER} \
--db-password=${MARIADB_DB_PASSWORD} \
--allow-superuser
# Enable time zones
/usr/bin/php /var/www/html/glpi/bin/console migration:timestamps --allow-superuser
/usr/bin/php /var/www/html/glpi/bin/console database:enable_timezones --allow-superuser
#Add scheduled task by cron and enable
echo "*/2 * * * * www-data /usr/bin/php /var/www/html/glpi/front/cron.php &>/dev/null" >/etc/cron.d/glpi
#Start cron service
service cron start
#Activation du module rewrite d'apache
a2enmod rewrite && service apache2 restart && service apache2 stop
#Fix to really stop apache
pkill -9 apache
#Lancement du service apache au premier plan
/usr/sbin/apache2ctl -D FOREGROUND