Last active
June 8, 2018 12:01
-
-
Save tttamaki/658e1e5baf0471b120a67d57736bf45c to your computer and use it in GitHub Desktop.
Shell script for installing wandbox
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Due to upstart is out of date, I cannot run "initctl" and "start". Could you revise it?