Skip to content

Commit

Permalink
Initial version of my natty web server build script
Browse files Browse the repository at this point in the history
  • Loading branch information
root committed Oct 27, 2011
0 parents commit 18c4f92
Show file tree
Hide file tree
Showing 9 changed files with 209 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -0,0 +1 @@
*.*~
18 changes: 18 additions & 0 deletions config.sh
@@ -0,0 +1,18 @@
##
# Configure redis
##
# backup the redis.conf
cp /etc/redis/redis.conf /etc/redis/redis-$DATE.conf

# Change appendonly to true
cat /etc/redis/redis.conf | sed 's/appendonly no/appendonly yes/' > /etc/redis/redis.conf

##
# Setup the web roots
##
mkdir -p /var/www/servers

##
# Copy supervisor.ini to /etc/
cp etc/supervisord.conf /etc/
mkdir /etc/supervisord.d
2 changes: 2 additions & 0 deletions etc/nginx_wwwroot.conf
@@ -0,0 +1,2 @@
# This will be clobbered by mksite.sh. Don't edit this file
include /var/www/servers/*/etc/nginx.conf;
131 changes: 131 additions & 0 deletions etc/supervisord.conf
@@ -0,0 +1,131 @@
; Don't edit this file directly, put ini files
; in /etc/supervisord.d/

[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
;chmod=0700 ; sockef file mode (default 0700)
;chown=nobody:nogroup ; socket file uid:gid owner
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))

;[inet_http_server] ; inet (TCP) server disabled by default
;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
;umask=022 ; (process file creation umask;default 022)
;user=chrism ; (default is current user, required if root)
;identifier=supervisor ; (supervisord identifier, default is 'supervisor')
;directory=/tmp ; (default is not to cd during start)
;nocleanup=true ; (don't clean up tempfiles at start;default false)
;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value ; (key value pairs to add to environment)
;strip_ansi=false ; (strip ansi escape codes in logs; def. false)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris ; should be same as http_username if set
;password=123 ; should be same as http_password if set
;prompt=mysupervisor ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history ; use readline history if available

; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.

;[program:theprogramname]
;command=/bin/cat ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1 ; number of processes copies to start (def 1)
;directory=/tmp ; directory to cwd to before exec (def no cwd)
;umask=022 ; umask for process (default None)
;priority=999 ; the relative start priority (default 999)
;autostart=true ; start at supervisord start (default: true)
;autorestart=true ; retstart at unexpected quit (default: true)
;startsecs=10 ; number of secs prog must stay running (def. 1)
;startretries=3 ; max # of serial start failures (default 3)
;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT ; signal used to kill process (default TERM)
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism ; setuid to this UNIX account to run the program
;redirect_stderr=true ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false ; emit events on stdout writes (default false)
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false ; emit events on stderr writes (default false)
;environment=A=1,B=2 ; process environment additions (def no adds)
;serverurl=AUTO ; override serverurl computation (childutils)

; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.

;[eventlistener:theeventlistenername]
;command=/bin/eventlistener ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1 ; number of processes copies to start (def 1)
;events=EVENT ; event notif. types to subscribe to (req'd)
;buffer_size=10 ; event buffer queue size (default 10)
;directory=/tmp ; directory to cwd to before exec (def no cwd)
;umask=022 ; umask for process (default None)
;priority=-1 ; the relative start priority (default -1)
;autostart=true ; start at supervisord start (default: true)
;autorestart=unexpected ; restart at unexpected quit (default: unexpected)
;startsecs=10 ; number of secs prog must stay running (def. 1)
;startretries=3 ; max # of serial start failures (default 3)
;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT ; signal used to kill process (default TERM)
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism ; setuid to this UNIX account to run the program
;redirect_stderr=true ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
;stdout_events_enabled=false ; emit events on stdout writes (default false)
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups ; # of stderr logfile backups (default 10)
;stderr_events_enabled=false ; emit events on stderr writes (default false)
;environment=A=1,B=2 ; process environment additions
;serverurl=AUTO ; override serverurl computation (childutils)

; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.

;[group:thegroupname]
;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
;priority=999 ; the relative start priority (default 999)

; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor.d/*.ini
files = /var/www/servers/*/etc/supervisor.ini
20 changes: 20 additions & 0 deletions mksite.sh
@@ -0,0 +1,20 @@

if [ "$1x" = "x" ]; then
echo "usage: $0 [domain]"
exit
fi

DOMAIN=$1
ROOT=/var/www/servers/$1


# Copy the wwwroot.conf to /etc/nginx/conf.d/
# to enable /var/www/servers/*/etc/nginx.conf's
cp ./etc/nginx_wwwroot.conf /etc/nginx/conf.d/wwwroot.conf

mkdir -p $ROOT
cp -R ./wwwroot/* $ROOT/

sed "s/{{HOST}}/$DOMAIN/" wwwroot/etc/nginx.conf > $ROOT/etc/nginx.conf

echo "Created $1 @ $ROOT"
14 changes: 14 additions & 0 deletions packages.sh
@@ -0,0 +1,14 @@
apt-get install python-software-properties

# Install all the ppa's
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:uwsgi/release

# Refresh apt
apt-get update

# Install all the base packages
apt-get install git nginx redis-server memcached build-essential python-dev emacs python-setuptools git mercurial
easy_install pip virtualenv supervisor

DATE=`date +%Y-%m-%dT%T`
2 changes: 2 additions & 0 deletions setup.sh
@@ -0,0 +1,2 @@
./packages.sh
./config.sh
20 changes: 20 additions & 0 deletions wwwroot/etc/nginx.conf
@@ -0,0 +1,20 @@
# nginx site config. Do not change this... change nginx-site.conf
server {
server_name {{HOST}};

error_page 404 errors/404.html;
access_log logs/{{HOST}}.access.log;

root /var/www/servers/{{HOST}}/static/;

# serve static files directly
location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
}

location ~ /\.ht {
deny all;
}
include nginx-site.conf;
}
1 change: 1 addition & 0 deletions wwwroot/nginx-site.conf
@@ -0,0 +1 @@
# Place your custom server config in here

0 comments on commit 18c4f92

Please sign in to comment.