updated INSTALL script

This commit is contained in:
albert 2011-08-24 16:56:30 -04:00
parent ebee1eb665
commit 6d022d308a
3 changed files with 131 additions and 114 deletions

View File

@ -1,131 +1,74 @@
#!/bin/bash
echo "This script is out of date; please read the INSTALL document"
exit 1
if [ $USER != root ] ; then
if [[ "$(whoami)" != "root" ] ; then
echo "You must run this script as root"
exit 1
fi
echo "Danbooru Install"
echo "This script will install Ruby, Rails, PostgreSQL, and Nginx. By the end,"
echo "you should be able to connect to the server and create an account."
echo
echo "It will create a new user called danbooru which will run the Danbooru"
echo "processes. It will download the latest trunk copy and install it in"
echo "/var/www/danbooru. It will run three Mongrel processes, starting on port"
echo "8050."
echo
echo -n "Enter the hostname for this server (ex: danbooru.donmai.us): "
read hostname
if [ -z $hostname ] ; then
echo "Must enter a hostname"
exit 1
fi
echo -n "Enter a name for the site (default: Danbooru): "
read sitename
if [ -z $sitename ] ; then
sitename=Danbooru
fi
# echo "Danbooru Install"
# echo "This script will install Ruby, Rails, PostgreSQL, and Nginx. By the end,"
# echo "you should be able to connect to the server and create an account."
# echo
# echo "It will create a new user called danbooru which will run the Danbooru"
# echo "processes. It will download the latest copy and install it in"
# echo "/var/www/danbooru."
# echo
# echo -n "Enter the hostname for this server (ex: danbooru.donmai.us): "
# read hostname
#
# if [[ -z "$hostname" ]] ; then
# echo "Must enter a hostname"
# exit 1
# fi
#
# echo -n "Enter a name for the site (default: Danbooru): "
# read sitename
#
# if [[ -z "$sitename" ]] ; then
# sitename=Danbooru
# fi
# Install packages
apt-get -y install sudo gcc g++ make libreadline5-dev zlib1g-dev flex bison libgd2-noxpm libgd2-noxpm-dev bzip2 postgresql-8.3 postgresql-contrib-8.3 libpq-dev ruby ruby1.8-dev ri irb rdoc rubygems ragel memcached libmemcache-dev subversion nginx rake libopenssl-ruby mongrel
echo "Installing packages..."
apt-get -y install build-essential automake openssl libssl-dev libyaml-dev libxml2-dev libxslt-dev autoconf ncurses-dev sudo gcc g++ libreadline-dev zlib1g-dev flex bison libgd2-noxpm libgd2-noxpm-dev bzip2 ragel memcached libmemcache-dev git curl libcurl4-openssl-dev
# Install Ruby gems
for i in postgres diff-lcs html5 mongrel mongrel_cluster memcache-client aws-s3 json ; do gem install $i ; done
gem install rails --version=2.1.0
gem install acts_as_versioned
# Install PostgreSQL 9.1
apt-get -y install python-software-properties
add-apt-repository ppa:pitti/postgresql
apt-get update
apt-get install postgresql-9.1 libpq-dev
# Install RVM
echo "Installing RVM..."
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
echo "source /usr/local/rvm/scripts/rvm" >> /etc/bash.bashrc
source /usr/local/rvm/scripts/rvm
rvm install ruby-1.9.2-p290 --with-openssl-dir=/usr/local
rvm 1.9.2 --default
# Install gems
gem install --no-ri --no-rdoc capistrano
# Install Passenger
gem install --no-ri --no-rdoc -v 3.0.8 passenger
rvm exec passenger-install-nginx-module
# Setup nginx
curl -s https://raw.github.com/ascarter/nginx-ubuntu-rvm/master/nginx > /etc/init.d/nginx
chmod +x,g-w /etc/init.d/nginx
update-rc.d -f nginx defaults
mkdir -p /opt/nginx/sites
curl -s https://raw.github.com/r888888888/danbooru/master/script/install/nginx.conf > /opt/nginx/conf/nginx.conf
curl -s https://raw.github.com/r888888888/danbooru/master/script/install/nginx.danbooru.conf > /opt/nginx/conf/sites/danbooru.conf
/etc/init.d/nginx start
# Create user account
useradd -m danbooru
PG_HBA_FILE="/etc/postgresql/8.3/main/pg_hba.conf"
# useradd -m danbooru
PG_HBA_FILE="/etc/postgresql/9.1/main/pg_hba.conf"
echo "local all postgres,danbooru trust" > $PG_HBA_FILE
echo "host all postgres,danbooru 127.0.0.1/32 trust" >> $PG_HBA_FILE
/etc/init.d/postgresql-8.3 restart
# Install Danbooru
cd /var/www
svn export svn://donmai.us/danbooru/trunk danbooru
chown -R danbooru:danbooru danbooru
cd danbooru
mkdir -p public/data/sample
cd config
cp database.yml.example database.yml
cp local_config.rb.example local_config.rb
sed -i -e "s/DAN_HOSTNAME/$hostname/g" local_config.rb
sed -i -e "s/DAN_SITENAME/$sitename/g" local_config.rb
echo "--- " > mongrel_cluster.yml
echo "cwd: /var/www/danbooru" >> mongrel_cluster.yml
echo "port: \"8050\"" >> mongrel_cluster.yml
echo "environment: production" >> mongrel_cluster.yml
echo "address: 127.0.0.1" >> mongrel_cluster.yml
echo "servers: 3" >> mongrel_cluster.yml
echo "num_processors: 10" >> mongrel_cluster.yml
cd ../lib/danbooru_image_resizer
ruby extconf.rb
make
cd ../..
/etc/init.d/postgresql-9.1 restart
sudo -u postgres createuser -s danbooru
sudo -u danbooru createdb danbooru
sudo -u danbooru psql danbooru < db/postgres.sql
sudo -u danbooru rake db:migrate RAILS_ENV=production
script/donmai/upbooru
# Set up nginx
DANBOORU_CONF_FILE="/etc/nginx/sites-enabled/danbooru.conf"
echo "upstream mongrel {" > $DANBOORU_CONF_FILE
echo " server 127.0.0.1:8050;" >> $DANBOORU_CONF_FILE
echo " server 127.0.0.1:8051;" >> $DANBOORU_CONF_FILE
echo " server 127.0.0.1:8052;" >> $DANBOORU_CONF_FILE
echo "}" >> $DANBOORU_CONF_FILE
echo "server {" >> $DANBOORU_CONF_FILE
echo " listen 80;" >> $DANBOORU_CONF_FILE
echo " server_name $hostname;" >> $DANBOORU_CONF_FILE
echo " root /var/www/danbooru/public;" >> $DANBOORU_CONF_FILE
echo " index index.html;" >> $DANBOORU_CONF_FILE
echo " access_log /var/www/danbooru/log/server.access.log;" >> $DANBOORU_CONF_FILE
echo " error_log /var/www/danbooru/log/server.error.log;" >> $DANBOORU_CONF_FILE
echo " client_max_body_size 30m;" >> $DANBOORU_CONF_FILE
echo " location /stylesheets {" >> $DANBOORU_CONF_FILE
echo " expires max;" >> $DANBOORU_CONF_FILE
echo " break;" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " location /javascripts {" >> $DANBOORU_CONF_FILE
echo " expires max;" >> $DANBOORU_CONF_FILE
echo " break;" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " location /data {" >> $DANBOORU_CONF_FILE
echo " valid_referers none $hostname;" >> $DANBOORU_CONF_FILE
echo " if (\$invalid_referer) {" >> $DANBOORU_CONF_FILE
echo " return 403;" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " expires max;" >> $DANBOORU_CONF_FILE
echo " break;" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " location /maintenance.html {" >> $DANBOORU_CONF_FILE
echo " expires 10;" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " if (-f \$document_root/maintenance.html) {" >> $DANBOORU_CONF_FILE
echo " rewrite ^(.*)\$ /maintenance.html last;" >> $DANBOORU_CONF_FILE
echo " break;" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " location / {" >> $DANBOORU_CONF_FILE
echo " proxy_set_header X-Real-IP \$remote_addr;" >> $DANBOORU_CONF_FILE
echo " proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;" >> $DANBOORU_CONF_FILE
echo " proxy_set_header Host \$http_host;" >> $DANBOORU_CONF_FILE
echo " proxy_redirect false;" >> $DANBOORU_CONF_FILE
echo " if (!-f \$request_filename) {" >> $DANBOORU_CONF_FILE
echo " proxy_pass http://mongrel;" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " }" >> $DANBOORU_CONF_FILE
echo " error_page 404 /404.html;" >> $DANBOORU_CONF_FILE
echo " error_page 500 502 503 504 /500.html;" >> $DANBOORU_CONF_FILE
echo "}" >> $DANBOORU_CONF_FILE
/etc/init.d/nginx restart
echo
echo "I'm done!"

31
script/install/nginx.conf Normal file
View File

@ -0,0 +1,31 @@
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
passenger_root /usr/local/rvm/gems/ruby-1.9.2-p290/gems/passenger-3.0.8;
passenger_ruby /usr/local/rvm/wrappers/default/ruby;
passenger_enabled on;
passenger_user_switching on;
passenger_default_user danbooru;
rails_spawn_method smart;
passenger_max_pool_size 3;
include mime.types;
default_type application/octet-stream;
sendfile on;
gzip on;
gzip_http_version 1.1;
gzip_vary off;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;
include /opt/nginx/conf/sites/*.conf;
}

View File

@ -0,0 +1,43 @@
server {
listen 80;
server_name $hostname;
root /var/www/danbooru/public;
index index.html;
access_log /var/www/danbooru/log/server.access.log;
error_log /var/www/danbooru/log/server.error.log;
client_max_body_size 30m;
location /stylesheets {
expires max;
break;
}
location /javascripts {
expires max;
break;
}
location /data {
valid_referers none $hostname;
if ($invalid_referer) {
return 403;
}
expires max;
break;
}
location /maintenance.html {
expires 10;
}
if (-f $document_root/maintenance.html) {
rewrite ^(.*)$ /maintenance.html last;
break;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect false;
if (!-f $request_filename) {
proxy_pass http://mongrel;
}
}
error_page 404 /404.html;
error_page 500 502 503 504 /500.html;
}