diff --git a/README.md b/README.md index 86a8689b..f576d1eb 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,14 @@ Hydro是一个高效的信息学在线测评系统。特点:易于部署,轻量,功能强大且易于扩展。 -使用安装脚本(ubuntu18.04) +使用安装脚本(根据系统版本选择,使用root用户执行) ```sh -curl -sSL https://cdn.jsdelivr.net/gh/hydro-dev/Hydro@master/install/ubuntu-1804.sh | bash +curl -sSL https://cdn.jsdelivr.net/gh/hydro-dev/Hydro@master/install/ubuntu-1604.sh | bash # ubuntu 16.04 +curl -sSL https://cdn.jsdelivr.net/gh/hydro-dev/Hydro@master/install/ubuntu-1804.sh | bash # ubuntu 18.04 +curl -sSL https://cdn.jsdelivr.net/gh/hydro-dev/Hydro@master/install/ubuntu-2004.sh | bash # ubuntu 20.04 +# 下方脚本未测试有效性,请尽量避免使用 +curl -sSL https://cdn.jsdelivr.net/gh/hydro-dev/Hydro@master/install/centos-7.sh | bash # centos 7 ``` 其他平台请参照文档手动安装。 diff --git a/install/centos-7.sh b/install/centos-7.sh new file mode 100644 index 00000000..7ebd7f56 --- /dev/null +++ b/install/centos-7.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +echo "Running Hydro Installer for centos 7" +db_password=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20) + +# Basic +mkdir -p /etc/yum.repos.d +echo "[mongodb-org-4.4] +name=MongoDB Repository +baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/ +gpgcheck=1 +enabled=1 +gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc" >/etc/yum.repos.d/mongodb-org-4.4.repo +echo "yum install -y mongodb-org" +yum install -y mongodb-org +mkdir -p /var/lib/mongo +mkdir -p /var/log/mongodb +chown -R mongod:mongod /var/lib/mongo /var/log/mongodb + +# Install NodeJS +echo "Installing NodeJS" +curl -o- https://cdn.jsdelivr.net/gh/nvm-sh/nvm@v0.36.0/install.sh | sed 's/raw.githubusercontent.com\/nvm-sh\/nvm\//cdn.jsdelivr.net\/gh\/nvm-sh\/nvm@/g' | bash +export NVM_DIR=/root/.nvm +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +nvm install 14 +nvm use 14 +npm i yarn -g +echo "Installing pm2" +yarn global add pm2 + +# Install MongoDB +echo "Installing MongoDB" +echo "db.createUser({ + user: 'hydro', + pwd: '$db_password', + roles: [ + { role: 'readWrite', db: 'hydro' } + ] +})" >/tmp/createUser.js +echo "pm2 start mongod" +pm2 start mongod >/dev/null +sleep 2 +mongo 127.0.0.1:27017/hydro /tmp/createUser.js +rm /tmp/createUser.js +echo "pm2 stop mongod" +pm2 stop mongod >/dev/null +pm2 del mongod >/dev/null +echo 'pm2 start "mongod --auth"' +pm2 start "mongod --auth" + +# Install Compiler +echo 'Installing g++' +apt-get install -y g++ >/dev/null + +# Install HydroOJ +# TODO: install basic addons? +echo "Installing Hydro" +yarn global add hydrooj @hydrooj/ui-default @hydrooj/hydrojudge +wget https://github.com/criyle/go-judge/releases/download/v0.7.1/executorserver-amd64 -O /usr/bin/sandbox +chmod +x /usr/bin/sandbox +pm2 start "/usr/bin/sandbox" +mkdir ~/.hydro +echo "{\"host\":\"127.0.0.1\",\"port\":\"27017\",\"name\":\"hydro\",\"username\":\"hydro\",\"password\":\"$db_password\"}" >~/.hydro/config.json +echo '["@hydrooj/ui-default","@hydrooj/hydrojudge"]' >~/.hydro/addon.json +pm2 start hydrooj + +# Done +echo "Done" +echo "Database username: hydro" +echo "Database password: $db_password" diff --git a/install/ubuntu-2004.sh b/install/ubuntu-2004.sh new file mode 100644 index 00000000..45b6c7e1 --- /dev/null +++ b/install/ubuntu-2004.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +echo "Running Hydro Installer for ubuntu 20.04" +db_password=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20) + +# Basic +echo "apt-get update" +apt-get -qq update +echo "apt-get install curl wget gnupg -y" +apt-get install -y curl wget gnupg >/dev/null +wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - +echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list +apt-get -qq update + +# Install NodeJS +echo "Installing NodeJS" +curl -o- https://cdn.jsdelivr.net/gh/nvm-sh/nvm@v0.36.0/install.sh | sed 's/raw.githubusercontent.com\/nvm-sh\/nvm\//cdn.jsdelivr.net\/gh\/nvm-sh\/nvm@/g' | bash +export NVM_DIR=/root/.nvm +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +nvm install 14 +nvm use 14 +npm i yarn -g +echo "Installing pm2" +yarn global add pm2 + +# Install MongoDB +echo "Installing MongoDB" +apt-get -qq install -y mongodb-org +mkdir -p /data/db +echo "db.createUser({ + user: 'hydro', + pwd: '$db_password', + roles: [ + { role: 'readWrite', db: 'hydro' } + ] +})" >/tmp/createUser.js +echo "pm2 start mongod" +pm2 start mongod >/dev/null +sleep 2 +mongo 127.0.0.1:27017/hydro /tmp/createUser.js +rm /tmp/createUser.js +echo "pm2 stop mongod" +pm2 stop mongod >/dev/null +pm2 del mongod >/dev/null +echo 'pm2 start "mongod --auth"' +pm2 start "mongod --auth" + +# Install Compiler +echo 'Installing g++' +apt-get install -y g++ >/dev/null + +# Install HydroOJ +# TODO: install basic addons? +echo "Installing Hydro" +yarn global add hydrooj @hydrooj/ui-default @hydrooj/hydrojudge +wget https://github.com/criyle/go-judge/releases/download/v0.7.1/executorserver-amd64 -O /usr/bin/sandbox +chmod +x /usr/bin/sandbox +pm2 start "/usr/bin/sandbox" +mkdir ~/.hydro +echo "{\"host\":\"127.0.0.1\",\"port\":\"27017\",\"name\":\"hydro\",\"username\":\"hydro\",\"password\":\"$db_password\"}" >~/.hydro/config.json +echo '["@hydrooj/ui-default","@hydrooj/hydrojudge"]' >~/.hydro/addon.json +pm2 start hydrooj + +# Done +echo "Done" +echo "Database username: hydro" +echo "Database password: $db_password"