Skip to content

Instantly share code, notes, and snippets.

@tttamaki
Last active June 8, 2018 12:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tttamaki/658e1e5baf0471b120a67d57736bf45c to your computer and use it in GitHub Desktop.
Save tttamaki/658e1e5baf0471b120a67d57736bf45c to your computer and use it in GitHub Desktop.
Shell script for installing wandbox
# packages required
sudo apt-get install language-pack-ja-base git gcc g++ cmake automake libpcre3-dev zlib1g-dev libgcrypt11-dev libicu-dev libsqlite3-dev libboost-all-dev libcap-dev libcap2-bin
# user wandbox
sudo adduser --disabled-login --quiet wandbox
sudo su - wandbox
# mkdir
mkdir local
mkdir wandbox
# CppDB
cd /home/wandbox/wandbox
git clone https://github.com/melpon/cppdb.git
mkdir cppdb_build
cd cppdb_build
cmake ../cppdb/ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/wandbox/local/ -DDISABLE_MYSQL=ON -DDISABLE_PQ=ON -DDISABLE_ODBC=ON -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
make -j 2
make install
# CppCMS
cd /home/wandbox/wandbox
git clone https://github.com/melpon/cppcms.git
mkdir cppcms_build
cd cppcms_build
cmake ../cppcms/ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/wandbox/local/ -DDISABLE_SHARED=ON -DDISABLE_FCGI=ON -DDISABLE_SCGI=ON -DDISABLE_ICU_LOCALE=ON -DDISABLE_TCPCACHE=ON -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
make -j 2
make install
# Wandbox
cd /home/wandbox/wandbox
git clone https://github.com/melpon/wandbox.git
cd /home/wandbox/wandbox/wandbox
git submodule update -i
## cattleshed
cd /home/wandbox/wandbox/wandbox/cattleshed
sh configure --prefix=/home/wandbox/local
aclocal
automake
make -j 2
make -k install
# sudo setcap
# cap_sys_admin,cap_sys_chroot,cap_mknod,cap_net_admin,cap_sys_rawio,cap_sys_module=p /home/wandbox/local/bin/cattlegrid
## kennel2 patch
cd /home/wandbox/wandbox/wandbox
patch -p1 << EOF
diff --git a/kennel2/src/root.tmpl b/kennel2/src/root.tmpl
index 4e7c34b..1e383be 100644
--- a/kennel2/src/root.tmpl
+++ b/kennel2/src/root.tmpl
@@ -12,7 +12,7 @@
<head>
<meta charset="UTF-8">
- <title>[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ</title>
+ <title>[Wandbox]</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="description" content="Wandbox is Online Compiler">
<meta name="author" content="melpon, kikairoya">
diff --git a/kennel2/src/nojs_list.tmpl b/kennel2/src/nojs_list.tmpl
index 3cbca4e..0a2675c 100644
--- a/kennel2/src/nojs_list.tmpl
+++ b/kennel2/src/nojs_list.tmpl
@@ -12,7 +12,7 @@
<head>
<meta charset="UTF-8">
- <title>[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ</title>
+ <title>[Wandbox]</title>
<meta name="description" content="Wandbox is Online Compiler">
<meta name="author" content="melpon, kikairoya">
diff --git a/kennel2/src/nojs_root.tmpl b/kennel2/src/nojs_root.tmpl
index bf6bfe4..c2b18b0 100644
--- a/kennel2/src/nojs_root.tmpl
+++ b/kennel2/src/nojs_root.tmpl
@@ -12,7 +12,7 @@
<head>
<meta charset="UTF-8">
- <title>[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ</title>
+ <title>[Wandbox]</title>
<meta name="description" content="Wandbox is Online Compiler">
<meta name="author" content="melpon, kikairoya">
EOF
## kennel2
cd /home/wandbox/wandbox/wandbox/kennel2
./autogen.sh
./configure --prefix=/home/wandbox/local/ --with-cppcms=/home/wandbox/local/ --with-cppdb=/home/wandbox/local/
make -j 2
make install
# cattleshed.conf
mkdir -p /home/wandbox/local/var/log/wandbox/ran/
cd /home/wandbox/local/etc
patch -p0 << EOF
--- cattleshed.conf 2016-04-30 22:39:06.627696000 +0900
+++ cattleshed.conf 2016-05-01 23:15:14.755396535 +0900
@@ -3,7 +3,7 @@
"listen-port":2012,
"max-connections":32,
"basedir":"/tmp/wandbox",
- "storedir":"/var/log/wandbox/ran",
+ "storedir":"/home/wandbox/local/var/log/wandbox/ran",
},
"jail":{
"":{
@@ -18,11 +18,11 @@
"--data=134217728",
"--fsize=134217728",
"--nofile=256",
- "--nproc=256",
+ "--nproc=1024",
"--",
"/home/wandbox/local/bin/cattlegrid",
"--rootdir=./jail",
- "--mount=/bin,/etc,/lib,/lib32,/lib64,/usr/bin,/usr/lib,/usr/lib64,/usr/include,/usr/local,/usr/share/perl",
+ "--mount=/bin,/etc,/lib,/lib64,/usr/bin,/usr/lib,/usr/include,/usr/local,/usr/share/perl",
"--rwmount=/tmp=./jail/tmp,/home/jail=./store",
"--devices=/dev/null,/dev/zero,/dev/full,/dev/random,/dev/urandom",
"--chdir=/home/jail",
@@ -50,7 +50,7 @@
"--",
"/usr/local/cattleshed/bin/cattlegrid",
"--rootdir=./jail",
- "--mount=/bin,/etc,/lib,/lib32,/lib64,/usr/bin,/usr/lib,/usr/lib64,/usr/include,/usr/local,/usr/share/perl",
+ "--mount=/bin,/etc,/lib,/lib64,/usr/bin,/usr/lib,/usr/include,/usr/local,/usr/share/perl",
"--rwmount=/tmp=./jail/tmp,/home/jail=./store",
"--devices=/dev/null,/dev/zero,/dev/full,/dev/random,/dev/urandom",
"--chdir=/home/jail",
@@ -77,7 +77,7 @@
"--",
"/home/wandbox/local/bin/cattlegrid",
"--rootdir=./jail",
- "--mount=/bin,/etc,/lib,/lib64,/usr/bin,/usr/lib,/usr/lib64,/usr/include,/usr/local",
+ "--mount=/bin,/etc,/lib,/lib64,/usr/bin,/usr/lib,/usr/include,/usr/local",
"--rwmount=/tmp=./jail/tmp,/home/jail=./store",
"--devices=/dev/null,/dev/zero,/dev/full,/dev/random,/dev/urandom",
"--chdir=/home/jail",
EOF
# kennel.json
cd /home/wandbox/local/etc
patch -p0 << EOF
--- kennel.json.org 2016-05-05 14:09:57.869964748 +0900
+++ kennel.json 2016-05-05 16:12:38.809425207 +0900
@@ -2,8 +2,8 @@
{ "database": "sqlite3:db=/home/wandbox/local/var/lib/kennel/kennel_production.sqlite;@pool_size=10"
, "static_dir": "/home/wandbox/local/etc/static"
, "scheme": "http"
- , "domain": "melpon.org"
- , "map_root": "/wandbox"
+ , "domain": "127.0.0.1"
+ , "map_root": ""
, "dispatch_root": ""
, "cattleshed":
{ "host" : "127.0.0.1"
@@ -13,6 +13,7 @@
, "service" :
{ "api" : "http"
, "port" : 3500
+ , "ip" : "0.0.0.0"
}
, "gzip" :
{ "enable": false
EOF
# compilers.default
cd /home/wandbox/local/etc/cattleshed.conf.d
cat > compilers.default << EOF
{
"switches": {
"c89": {
"conflicts": [
"c89",
"c99",
"c11",
],
"display-name": "C89",
"flags": [
"-std=c89"
]
},
"c99": {
"conflicts": [
"c89",
"c99",
"c11",
],
"display-name": "C99",
"flags": [
"-std=c99"
]
},
"c11": {
"conflicts": [
"c89",
"c99",
"c11",
],
"display-name": "C11",
"flags": [
"-std=c11"
]
},
"warning": {
"display-name": "Warnings",
"flags": [
"-Wall",
"-Wextra"
]
},
"optimize": {
"display-name": "Optimization",
"flags": [
"-O2",
"-march=native"
]
},
"boost-nothing": {
"conflicts": [
"boost-nothing",
"boost-1.54"
],
"display-name": "Don't Use Boost",
"flags": [],
"display-flags": ""
},
"boost-1.54": {
"conflicts": [
"boost-nothing",
"boost-1.54"
],
"display-name": "Boost 1.54.0",
"flags": [
"-I/usr/include",
"-I/usr/include/boost",
"-L/usr/lib",
"-L/usr/lib/x86_64-linux-gnu",
"-Wl,-rpath,/usr/lib/x86_64-linux-gnu",
"-lboost_wserialization",
"-lboost_math_tr1f",
"-lboost_math_c99l",
"-lboost_math_tr1",
"-lboost_locale",
"-lboost_wave",
"-lboost_regex",
"-lboost_prg_exec_monitor",
"-lboost_atomic",
"-lboost_signals",
"-lboost_math_c99f",
"-lboost_context",
"-lboost_program_options",
"-lboost_coroutine",
"-lboost_serialization",
"-lboost_filesystem",
"-lboost_system",
"-lboost_timer",
"-lboost_log_setup",
"-lboost_random",
"-lboost_chrono",
"-lboost_exception",
"-lboost_iostreams",
"-lboost_thread",
"-lboost_date_time",
"-lboost_math_c99",
"-lboost_math_tr1l",
"-lboost_graph",
"-lboost_log"
],
"display-flags": "-I/usr/include/boost"
},
},
"compilers": [
{
"switches": [
"warning",
"optimize",
"boost-nothing",
"boost-1.54",
"c89",
"c99",
"c11"
],
"initial-checked": [
"warning",
"c99",
"boost-nothing"
],
"compile-command": [
"/usr/bin/gcc",
"-oprog",
"prog.c"
],
"name": "gcc",
"language": "C",
"output-file": "prog.c",
"compiler-option-raw": true,
"displayable": true,
"run-command": "./prog",
"display-compile-command": "gcc -o prog prog.c",
"display-name": "gcc",
"version-command": [
"/usr/bin/gcc",
"-dumpversion"
]
}
]
}
EOF
# init files
cd /home/wandbox/wandbox/wandbox
cat > cattleshed.conf << EOF
description "Backend of Sandbox Compiler"
start on runlevel [2345]
stop on runlevel [!2345]
exec su wandbox -c '/home/wandbox/local/bin/cattleshed >> /home/wandbox/local/var/log/cattleshed.log 2>&1'
respawn
EOF
cat > kennel2.conf << EOF
description "Frontend of Sandbox Compiler"
start on runlevel [2345]
stop on runlevel [!2345]
exec su wandbox -c '/home/wandbox/local/bin/kennel --syslog -c /home/wandbox/local/etc/kennel.json >> /home/wandbox/local/var/log/kennel2.log 2>&1'
respawn
EOF
# exit
exit
# sudo
sudo setcap cap_sys_admin,cap_sys_chroot,cap_mknod,cap_net_admin,cap_sys_rawio,cap_sys_module=p /home/wandbox/local/bin/cattlegrid
sudo cp /home/wandbox/wandbox/wandbox/cattleshed.conf /etc/init/
sudo cp /home/wandbox/wandbox/wandbox/kennel2.conf /etc/init/
sudo initctl reload-configuration
sudo rm -rf /tmp/wandbox
# start
sudo stop kennel2 || true
sudo stop cattleshed || true
sleep 1
sudo start cattleshed
sudo start kennel2
@jjqtony
Copy link

jjqtony commented Jun 8, 2018

Due to upstart is out of date, I cannot run "initctl" and "start". Could you revise it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment