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 #!/bin/bash
echo "This script is out of date; please read the INSTALL document" if [[ "$(whoami)" != "root" ] ; then
exit 1
if [ $USER != root ] ; then
echo "You must run this script as root" echo "You must run this script as root"
exit 1 exit 1
fi fi
echo "Danbooru Install" # echo "Danbooru Install"
echo "This script will install Ruby, Rails, PostgreSQL, and Nginx. By the end," # 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 "you should be able to connect to the server and create an account."
echo # echo
echo "It will create a new user called danbooru which will run the Danbooru" # 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 "processes. It will download the latest copy and install it in"
echo "/var/www/danbooru. It will run three Mongrel processes, starting on port" # echo "/var/www/danbooru."
echo "8050." # echo
echo # echo -n "Enter the hostname for this server (ex: danbooru.donmai.us): "
echo -n "Enter the hostname for this server (ex: danbooru.donmai.us): " # read hostname
read hostname #
# if [[ -z "$hostname" ]] ; then
if [ -z $hostname ] ; then # echo "Must enter a hostname"
echo "Must enter a hostname" # exit 1
exit 1 # fi
fi #
# echo -n "Enter a name for the site (default: Danbooru): "
echo -n "Enter a name for the site (default: Danbooru): " # read sitename
read sitename #
# if [[ -z "$sitename" ]] ; then
if [ -z $sitename ] ; then # sitename=Danbooru
sitename=Danbooru # fi
fi
# Install packages # 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 # Install PostgreSQL 9.1
for i in postgres diff-lcs html5 mongrel mongrel_cluster memcache-client aws-s3 json ; do gem install $i ; done apt-get -y install python-software-properties
gem install rails --version=2.1.0 add-apt-repository ppa:pitti/postgresql
gem install acts_as_versioned 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 # Create user account
useradd -m danbooru # useradd -m danbooru
PG_HBA_FILE="/etc/postgresql/8.3/main/pg_hba.conf" PG_HBA_FILE="/etc/postgresql/9.1/main/pg_hba.conf"
echo "local all postgres,danbooru trust" > $PG_HBA_FILE echo "local all postgres,danbooru trust" > $PG_HBA_FILE
echo "host all postgres,danbooru 127.0.0.1/32 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 /etc/init.d/postgresql-9.1 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 ../..
sudo -u postgres createuser -s danbooru 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
echo "I'm done!" 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;
}