You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hydro/install/centos-7.sh

91 lines
2.9 KiB
Bash

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/bin/bash
echo "Running Hydro Installer for centos 7"
echo "CENTOS IS NOT RECOMMENDED TO USE."
echo "PLEASE USE UBUNTU INSTEAD."
echo "THIS SCRIPT MAY NOT WORK PROPERLY."
echo "Will continue installation in 10 secs, press Ctrl-C to exit"
echo "非常不推荐使用CentOS"
echo "请切换到 ubuntu 操作系统!"
echo "此脚本可能无法正常工作"
echo "使用 Ctrl-C 退出该脚本。"
sleep 10
db_password=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20)
MINIO_ACCESS_KEY=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20)
MINIO_SECRET_KEY=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20)
# Basic
yum install wget
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
mkdir -p /data/db
chown -R mongod:mongod /var/lib/mongo /var/log/mongodb /data/db
echo user.max_user_namespaces=10000 >> /etc/sysctl.d/98-userns.conf
sysctl -p
# 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' | sed 's/github.com\/nvm-sh\/nvm.git/gitee.com\/imirror\/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 MinIO
echo 'Installing MinIO'
wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
mkdir -p /data/file
pm2 start "./minio server /data/file" --name minio
# Install HydroOJ
# TODO: install basic addons?
echo "Installing Hydro"
yarn global add hydrooj @hydrooj/ui-default @hydrooj/hydrojudge
wget https://s3.undefined.moe/file/executor-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"
echo "MINIO_ACCESS_KEY=$MINIO_ACCESS_KEY
MINIO_SECRET_KEY=$MINIO_SECRET_KEY" >~/.hydro/env