mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-11-08 19:28:42 +00:00
feat(install/bundle): install script adapt to Ubuntu 18.04
Update base system to Ubuntu 18.04. .htaccess file's session path changed correctly. Add gnupg install choice, due to base system has no gpg support. Set DEBIAN_FRONTEND to noninteractive in order to prevent tzdata stuck. Change Dockerfile's verion and buanch checkout method, in order to save space. Fix mysql conf when not restart service and the database can't import judger info. Change install.sh, support PHP7.2, update libv8 repo to artful, with missing php-mbstring. The old JDK distfile mirrors are deprecated, changed to official.sed modded to get the latest jdk8. BREAKING CHANGE: Ubuntu 14/16 users shouln't execute this script, due to config files and packages not the same.
This commit is contained in:
parent
ce61130caf
commit
64683ad93f
@ -1,12 +1,11 @@
|
|||||||
FROM ubuntu:16.04
|
FROM ubuntu:18.04
|
||||||
MAINTAINER MascoSkray <MascoSkray@gmail.com>
|
MAINTAINER MascoSkray <MascoSkray@gmail.com>
|
||||||
|
|
||||||
#Update apt and install git
|
#Update apt and install git
|
||||||
RUN apt-get update -y && apt-get install -y git
|
RUN apt-get update && apt-get install -y git gnupg
|
||||||
#Clone the latest UOJ Community verison to local
|
#Clone the latest UOJ Community verison to local
|
||||||
RUN cd ~ && git clone https://github.com/UniversalOJ/UOJ-System.git
|
RUN cd ~ && git clone https://github.com/UniversalOJ/UOJ-System.git --depth 1 -b php7
|
||||||
#Install environment and set startup script
|
#Install environment and set startup script
|
||||||
RUN cd ~/UOJ-System/ && git checkout php7
|
|
||||||
RUN cd ~/UOJ-System/install/bundle && bash install.sh -e && echo "\
|
RUN cd ~/UOJ-System/install/bundle && bash install.sh -e && echo "\
|
||||||
#!/bin/bash\n\
|
#!/bin/bash\n\
|
||||||
if [ ! -f "/var/svn/.UOJSetupDone" ]; then\n\
|
if [ ! -f "/var/svn/.UOJSetupDone" ]; then\n\
|
||||||
|
@ -13,10 +13,11 @@ _svn_certroot_password_=$(genRandStr 32)
|
|||||||
getAptPackage(){
|
getAptPackage(){
|
||||||
echo -e "\n\n==> Getting environment packages"
|
echo -e "\n\n==> Getting environment packages"
|
||||||
#Set MySQL root password
|
#Set MySQL root password
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
debconf-set-selections <<< "mysql-server mysql-server/root_password password $_database_password_" && debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $_database_password_"
|
debconf-set-selections <<< "mysql-server mysql-server/root_password password $_database_password_" && debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $_database_password_"
|
||||||
#Update apt sources and install
|
#Update apt sources and install
|
||||||
echo "deb http://ppa.launchpad.net/pinepain/libv8/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/pinepain-libv8.list && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 60C60AA4
|
echo "deb http://ppa.launchpad.net/pinepain/libv8/ubuntu artful main" | tee -a /etc/apt/sources.list.d/pinepain-libv8.list && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 60C60AA4
|
||||||
apt-get update -y && apt-get install -y vim ntp zip unzip curl wget subversion apache2 libapache2-mod-xsendfile libapache2-mod-php php php-dev php-pear php-zip php-mysql mysql-server cmake fp-compiler re2c libv8-6.6-dev libyaml-dev python python3 python-requests
|
apt-get update && apt-get install -y vim ntp zip unzip curl wget subversion apache2 libapache2-mod-xsendfile libapache2-mod-php php php-dev php-pear php-zip php-mysql php-mbstring mysql-server cmake fp-compiler re2c libv8-6.6-dev libyaml-dev python python3 python-requests
|
||||||
#Install PHP extensions
|
#Install PHP extensions
|
||||||
cp -a /opt/libv8*/* /usr && echo -e "\n\n" | pecl install v8js yaml
|
cp -a /opt/libv8*/* /usr && echo -e "\n\n" | pecl install v8js yaml
|
||||||
}
|
}
|
||||||
@ -26,12 +27,12 @@ getOracleJDK(){
|
|||||||
#Add judger user
|
#Add judger user
|
||||||
useradd -m local_main_judger && usermod -a -G www-data local_main_judger
|
useradd -m local_main_judger && usermod -a -G www-data local_main_judger
|
||||||
#Get newest jdk dist file
|
#Get newest jdk dist file
|
||||||
JDK_MIRROR_LINK=http://ftp.osuosl.org/pub/funtoo/distfiles/oracle-java/
|
JDK_MIRROR_LINK=https://build.funtoo.org/distfiles/oracle-java/
|
||||||
JDK_CNMIRROR_LINK=http://funtoo.neu.edu.cn/funtoo/distfiles/oracle-java/
|
#Deprecated #JDK_CNMIRROR_LINK=http://funtoo.neu.edu.cn/funtoo/distfiles/oracle-java/
|
||||||
curl -s ${JDK_MIRROR_LINK} | grep -oP '>jdk-[7,8].*-linux-x64.tar' | sed -e 's/[\",>]//g' -e 's/-linux-x64.tar//g' >jdkdist.list
|
curl -s ${JDK_MIRROR_LINK} | grep -oP '>jdk-[7,8].*-linux-x64.tar' | sed -e 's/[\",>]//g' -e 's/-linux-x64.tar//g' >jdkdist.list
|
||||||
wget ${JDK_MIRROR_LINK}$(sed -n '1p' jdkdist.list)-linux-x64.tar.gz && wget ${JDK_MIRROR_LINK}$(sed -n '2p' jdkdist.list)-linux-x64.tar.gz
|
wget ${JDK_MIRROR_LINK}$(sed -n '1p' jdkdist.list)-linux-x64.tar.gz && wget ${JDK_MIRROR_LINK}$(sed -n '$p' jdkdist.list)-linux-x64.tar.gz
|
||||||
#Change jdk version to faq.php
|
#Change jdk version to faq.php
|
||||||
sed -i -e "s/jdk-7u76/$(sed -n '1p' jdkdist.list)/g" -e "s/jdk-8u31/$(sed -n '2p' jdkdist.list)/g" ../../uoj/1/app/controllers/faq.php
|
sed -i -e "s/jdk-7u76/$(sed -n '1p' jdkdist.list)/g" -e "s/jdk-8u31/$(sed -n '$p' jdkdist.list)/g" ../../uoj/1/app/controllers/faq.php
|
||||||
#Move jdk file to judge user root
|
#Move jdk file to judge user root
|
||||||
chown local_main_judger jdkdist.list jdk-*-linux-x64.tar.gz
|
chown local_main_judger jdkdist.list jdk-*-linux-x64.tar.gz
|
||||||
mv jdkdist.list jdk-*-linux-x64.tar.gz /home/local_main_judger/
|
mv jdkdist.list jdk-*-linux-x64.tar.gz /home/local_main_judger/
|
||||||
@ -58,11 +59,10 @@ setLAMPConf(){
|
|||||||
UOJEOF
|
UOJEOF
|
||||||
#Enable modules and make UOJ site conf enabled
|
#Enable modules and make UOJ site conf enabled
|
||||||
a2ensite 000-uoj.conf && a2dissite 000-default.conf
|
a2ensite 000-uoj.conf && a2dissite 000-default.conf
|
||||||
a2enmod rewrite headers && sed -i -e '166s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
|
a2enmod rewrite headers && sed -i -e '172s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
|
||||||
#Create UOJ session save dir and make PHP extensions available
|
#Create UOJ session save dir and make PHP extensions available
|
||||||
mkdir --mode=733 /var/lib/php/uoj_sessions && chmod +t /var/lib/php/uoj_sessions
|
mkdir --mode=733 /var/lib/php/uoj_sessions && chmod +t /var/lib/php/uoj_sessions
|
||||||
sed -i -e 's/session.save_path \/var\/lib\/php5\/uoj/session.save_path \/var\/lib\/php\/uoj_sessions/g' ../../uoj/1/.htaccess
|
sed -i -e '865a\extension=v8js.so\nextension=yaml.so' /etc/php/7.2/apache2/php.ini
|
||||||
sed -i -e '876a\extension=v8js.so\nextension=yaml.so' /etc/php/7.0/apache2/php.ini
|
|
||||||
#Set MySQL user directory and connection config
|
#Set MySQL user directory and connection config
|
||||||
usermod -d /var/lib/mysql/ mysql
|
usermod -d /var/lib/mysql/ mysql
|
||||||
cat >/etc/mysql/mysql.conf.d/uoj_mysqld.cnf <<UOJEOF
|
cat >/etc/mysql/mysql.conf.d/uoj_mysqld.cnf <<UOJEOF
|
||||||
@ -177,7 +177,7 @@ setWebConf(){
|
|||||||
file_put_contents('/var/www/uoj/app/.config.php', "<?php\nreturn ".str_replace('\'_httpHost_\'','UOJContext::httpHost()',var_export(\$config, true)).";\n");
|
file_put_contents('/var/www/uoj/app/.config.php', "<?php\nreturn ".str_replace('\'_httpHost_\'','UOJContext::httpHost()',var_export(\$config, true)).";\n");
|
||||||
UOJEOF
|
UOJEOF
|
||||||
#Import MySQL database
|
#Import MySQL database
|
||||||
service mysql start
|
service mysql restart
|
||||||
mysql -u root --password=$_database_password_ <app_uoj233.sql
|
mysql -u root --password=$_database_password_ <app_uoj233.sql
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Options -Indexes
|
Options -Indexes
|
||||||
|
|
||||||
php_value session.save_path /var/lib/php5/uoj
|
php_value session.save_path /var/lib/php/uoj_sessions
|
||||||
php_value session.gc_maxlifetime 172800
|
php_value session.gc_maxlifetime 172800
|
||||||
php_value session.cookie_lifetime 31536000
|
php_value session.cookie_lifetime 31536000
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user