@@ -10,32 +10,37 @@ function file_or_env {
10
10
}
11
11
12
12
echo " [..] Setting timezone"
13
- ln -snf " /usr/share/zoneinfo/${CONTAINER_TIMEZONE} " /etc/localtime
14
- echo " ${CONTAINER_TIMEZONE} " > /etc/timezone
15
- dpkg-reconfigure -f noninteractive tzdata
13
+ sudo ln -snf " /usr/share/zoneinfo/${CONTAINER_TIMEZONE} " /etc/localtime
14
+ echo " ${CONTAINER_TIMEZONE} " | sudo tee /etc/timezone
15
+ sudo dpkg-reconfigure -f noninteractive tzdata
16
16
echo " [ok] Container timezone set to: ${CONTAINER_TIMEZONE} " ; echo
17
17
18
18
echo " [..] Changing nginx and PHP configuration settings"
19
19
# Set correct settings
20
- sed -ri -e " s/^user.*/user domjudge;/" /etc/nginx/nginx.conf
20
+ sudo sed -ri -e " s/^user.*/user domjudge;/" /etc/nginx/nginx.conf
21
21
for VERSION in $PHPSUPPORTED
22
22
do
23
- sed -ri -e " s/^upload_max_filesize.*/upload_max_filesize = 100M/" \
23
+ sudo sed -ri -e " s/^upload_max_filesize.*/upload_max_filesize = 100M/" \
24
24
-e " s/^post_max_size.*/post_max_size = 100M/" \
25
25
-e " s/^memory_limit.*/memory_limit = 2G/" \
26
26
-e " s/^max_file_uploads.*/max_file_uploads = 200/" \
27
27
-e " s#^;date\.timezone.*#date.timezone = ${CONTAINER_TIMEZONE} #" \
28
28
" /etc/php/${VERSION} /fpm/php.ini"
29
- sed -ri -e " s#^;date\.timezone.*#date.timezone = ${CONTAINER_TIMEZONE} #" \
29
+ sudo sed -ri -e " s#^;date\.timezone.*#date.timezone = ${CONTAINER_TIMEZONE} #" \
30
30
" /etc/php/${VERSION} /cli/php.ini"
31
31
done
32
32
echo " [ok] Done changing nginx and PHP configuration settings" ; echo
33
33
34
- cd /domjudge
34
+ if [ -z " $PROJECT_DIR " ]
35
+ then
36
+ PROJECT_DIR=/domjudge
37
+ fi
38
+
39
+ cd " $PROJECT_DIR "
35
40
36
41
if [[ ! -f README.md ]] || ! grep -q DOMjudge README.md
37
42
then
38
- echo " DOMjudge sources not found. Did you add a volume with your DOMjudge checkout at /domjudge ?"
43
+ echo " DOMjudge sources not found. Did you add a volume with your DOMjudge checkout at ${PROJECT_DIR} ?"
39
44
exit 1
40
45
fi
41
46
@@ -48,7 +53,6 @@ host=${MYSQL_HOST}
48
53
user=root
49
54
password=${MYSQL_ROOT_PASSWORD}
50
55
EOF
51
- chown domjudge: /home/domjudge/.my.cnf
52
56
53
57
echo " [..] Updating database credentials file"
54
58
echo " dummy:${MYSQL_HOST} :${MYSQL_DATABASE} :${MYSQL_USER} :${MYSQL_PASSWORD} " > etc/dbpasswords.secret
59
63
echo " Skipping maintainer-mode install for DOMjudge"
60
64
else
61
65
echo " [..] Performing maintainer-mode install for DOMjudge"
62
- sudo -H -u domjudge make maintainer-conf CONFIGURE_FLAGS=" --with-baseurl=http://localhost/ --with-webserver-group=domjudge"
63
- sudo -H -u domjudge make maintainer-install
66
+ make maintainer-conf CONFIGURE_FLAGS=" --with-baseurl=http://localhost/ --with-webserver-group=domjudge"
67
+ make maintainer-install
64
68
echo " [ok] DOMjudge installed in Maintainer-mode" ; echo
65
69
fi
66
70
67
71
echo " [..] Setting up bind mount and correct permissions for judgings"
68
- mkdir -p /domjudge-judgings
69
- mount -o bind /domjudge-judgings /domjudge/ output/judgings
70
- chown -R domjudge output
72
+ sudo mkdir -p /domjudge-judgings
73
+ sudo mount -o bind /domjudge-judgings " ${PROJECT_DIR} / output/judgings"
74
+ sudo chown -R domjudge output
71
75
echo " [ok] Done setting up permissions"
72
76
73
77
# Sometimes when running `docker-compose up` we're too fast at this step
91
95
exit 1
92
96
fi
93
97
94
- if ! bin/dj_setup_database -uroot -p" ${MYSQL_ROOT_PASSWORD} " status > /dev/null 2>&1
98
+ if ! sudo bin/dj_setup_database -uroot -p" ${MYSQL_ROOT_PASSWORD} " status > /dev/null 2>&1
95
99
then
96
100
echo " Database not installed; installing..."
97
- bin/dj_setup_database -uroot -p" ${MYSQL_ROOT_PASSWORD} " bare-install
101
+ sudo bin/dj_setup_database -uroot -p" ${MYSQL_ROOT_PASSWORD} " bare-install
98
102
else
99
103
echo " Database installed; upgrading..."
100
- bin/dj_setup_database -uroot -p" ${MYSQL_ROOT_PASSWORD} " upgrade
104
+ sudo bin/dj_setup_database -uroot -p" ${MYSQL_ROOT_PASSWORD} " upgrade
101
105
fi
102
106
echo " [ok] Database ready" ; echo
103
107
@@ -107,63 +111,64 @@ echo "[ok] Changed restapi URL from http://localhost/domjudge to http://localhos
107
111
108
112
echo " [..] Copying webserver config"
109
113
# Set up vhost
110
- cp etc/nginx-conf /etc/nginx/sites-enabled/default
114
+ sudo cp etc/nginx-conf /etc/nginx/sites-enabled/default
111
115
# Replace nginx php socket location
112
- sed -i ' s/server unix:.*/server unix:\/var\/run\/php-fpm-domjudge.sock;/' /etc/nginx/sites-enabled/default
116
+ sudo sed -i ' s/server unix:.*/server unix:\/var\/run\/php-fpm-domjudge.sock;/' /etc/nginx/sites-enabled/default
113
117
# Remove default FPM pool config and link in DOMjudge version
114
118
for VERSION in $PHPSUPPORTED
115
119
do
116
120
if [[ -f /etc/php/${VERSION} /fpm/pool.d/www.conf ]]
117
121
then
118
- rm " /etc/php/${VERSION} /fpm/pool.d/www.conf"
122
+ sudo rm " /etc/php/${VERSION} /fpm/pool.d/www.conf"
119
123
fi
120
124
if [[ ! -f /etc/php/${VERSION} /fpm/pool.d/domjudge.conf ]]
121
125
then
122
- ln -s /domjudge/ etc/domjudge-fpm.conf " /etc/php/${VERSION} /fpm/pool.d/domjudge.conf"
126
+ sudo ln -s " ${PROJECT_DIR} / etc/domjudge-fpm.conf" " /etc/php/${VERSION} /fpm/pool.d/domjudge.conf"
123
127
fi
124
128
# Change pm.max_children
125
- sed -i " s/^pm\.max_children = .*$/pm.max_children = ${FPM_MAX_CHILDREN} /" " /etc/php/${VERSION} /fpm/pool.d/domjudge.conf"
129
+ sudo sed -i " s/^pm\.max_children = .*$/pm.max_children = ${FPM_MAX_CHILDREN} /" " /etc/php/${VERSION} /fpm/pool.d/domjudge.conf"
126
130
done
127
131
128
- chown domjudge: /domjudge/etc/dbpasswords.secret
129
- chown domjudge: /domjudge/etc/restapi.secret
130
- # shellcheck disable=SC2034
131
- HAS_INNER_NGINX=1
132
- cp etc/nginx-conf-inner /etc/nginx/snippets/domjudge-inner
132
+ sudo chown domjudge: " ${PROJECT_DIR} /etc/dbpasswords.secret"
133
+ sudo chown domjudge: " ${PROJECT_DIR} /etc/restapi.secret"
134
+ sudo cp etc/nginx-conf-inner /etc/nginx/snippets/domjudge-inner
133
135
NGINX_CONFIG_FILE=/etc/nginx/snippets/domjudge-inner
134
- sed -i ' s/\/domjudge\/ etc\ /nginx-conf-inner/\/ etc\ /nginx\ /snippets\ /domjudge-inner/ ' /etc/nginx/sites-enabled/default
136
+ sudo sed -i " s| ${PROJECT_DIR} / etc/nginx-conf-inner|/ etc/nginx/snippets/domjudge-inner| " /etc/nginx/sites-enabled/default
135
137
# Run DOMjudge in root
136
- sed -i ' /^# location \//,/^# \}/ s/# //' $NGINX_CONFIG_FILE
137
- sed -i ' /^location \/domjudge/,/^\}/ s/^/#/' $NGINX_CONFIG_FILE
138
- sed -i ' s/\/domjudge;/"";/' $NGINX_CONFIG_FILE
138
+ sudo sed -i ' /^# location \//,/^# \}/ s/# //' $NGINX_CONFIG_FILE
139
+ sudo sed -i ' /^location \/domjudge/,/^\}/ s/^/#/' $NGINX_CONFIG_FILE
140
+ sudo sed -i ' s/\/domjudge;/"";/' $NGINX_CONFIG_FILE
139
141
# Remove access_log and error_log entries
140
- sed -i ' /access_log/d' $NGINX_CONFIG_FILE
141
- sed -i ' /error_log/d' $NGINX_CONFIG_FILE
142
+ sudo sed -i ' /access_log/d' $NGINX_CONFIG_FILE
143
+ sudo sed -i ' /error_log/d' $NGINX_CONFIG_FILE
142
144
# Use debug front controller
143
- sed -i ' s/app\.php/app_dev.php/g' $NGINX_CONFIG_FILE
144
- sed -i ' s/app\\\.php/app\\_dev.php/g' $NGINX_CONFIG_FILE
145
+ sudo sed -i ' s/app\.php/app_dev.php/g' $NGINX_CONFIG_FILE
146
+ sudo sed -i ' s/app\\\.php/app\\_dev.php/g' $NGINX_CONFIG_FILE
145
147
# Set up permissions (make sure the script does not stop if this fails, as this will happen on macOS / Windows)
146
- chown domjudge: /domjudge/ webapp/var
148
+ sudo chown domjudge: " ${PROJECT_DIR} / webapp/var"
147
149
echo " [ok] Webserver config installed" ; echo
148
150
149
151
if [[ ! -d /chroot/domjudge ]]
150
152
then
151
153
echo " [..] Setting up chroot"
152
- bin/dj_make_chroot
154
+ sudo bin/dj_make_chroot
153
155
echo " [ok] Done setting up chroot" ; echo
154
156
fi
155
157
156
158
echo " [..] Setting up cgroups"
157
159
if [[ -f bin/create_cgroups ]]
158
160
then
159
- bin/create_cgroups
161
+ sudo bin/create_cgroups
160
162
else
161
- judge/create_cgroups
163
+ sudo judge/create_cgroups
162
164
fi
163
165
echo " [ok] cgroups set up" ; echo
164
166
165
167
echo " [..] Adding sudoers configuration"
166
- cp etc/sudoers-domjudge /etc/sudoers.d/
168
+ sudo cp etc/sudoers-domjudge /etc/sudoers.d/
167
169
echo " [ok] Sudoers configuration added" ; echo
168
170
169
- exec supervisord -n -c /etc/supervisor/supervisord.conf
171
+ sudo sed -i " s|/domjudge|${PROJECT_DIR} |" /etc/supervisor/conf.d/judgedaemon.conf
172
+ sudo sed -i " s|/domjudge|${PROJECT_DIR} |" /etc/supervisor/conf.d/judgedaemonextra.conf
173
+
174
+ exec sudo supervisord -n -c /etc/supervisor/supervisord.conf
0 commit comments