diff --git a/INSTALL.debian b/INSTALL.debian index 6bf1c8cd5..677e65499 100644 --- a/INSTALL.debian +++ b/INSTALL.debian @@ -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!" diff --git a/script/install/nginx.conf b/script/install/nginx.conf new file mode 100644 index 000000000..ac3f8e5ad --- /dev/null +++ b/script/install/nginx.conf @@ -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; +} diff --git a/script/install/nginx.danbooru.conf b/script/install/nginx.danbooru.conf new file mode 100644 index 000000000..df756ff36 --- /dev/null +++ b/script/install/nginx.danbooru.conf @@ -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; +} \ No newline at end of file