forked from e621ng/e621ng
133 lines
5.3 KiB
Bash
133 lines
5.3 KiB
Bash
#!/bin/bash
|
|
|
|
echo "This script is out of date; please read the INSTALL document"
|
|
exit 1
|
|
|
|
if [ $USER != 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
|
|
|
|
# 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
|
|
|
|
# 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
|
|
|
|
# Create user account
|
|
useradd -m danbooru
|
|
PG_HBA_FILE="/etc/postgresql/8.3/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 ../..
|
|
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!"
|
|
echo "You should probably set the password for the danbooru account (run passwd danbooru)."
|