Advertisement
7thwraith

Untitled

Aug 13th, 2011
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.63 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. cd /var/www
  4.  
  5. if [ $USER != root ] ; then
  6.   echo "You must run this script as root"
  7.   exit 1
  8. fi
  9.  
  10. echo "Danbooru Install"
  11. echo "This script will install Ruby, Rails, PostgreSQL, Unicorn, and Nginx. By the end,"
  12. echo "you should be able to connect to the server and create an account."
  13. echo
  14. echo "It will create a new user called danbooru which will run the Danbooru"
  15. echo "processes. It will download the latest trunk copy or v1.16.0 and install it in"
  16. echo "/var/www/danbooru. It will run unicorn, starting on port 8050"
  17. echo
  18. echo
  19. echo -n "Enter the hostname for this server (ex: danbooru.donmai.us): "
  20. read hostname
  21.  
  22. if [ -z $hostname ] ; then
  23.   echo "Must enter a hostname"
  24.   exit 1
  25. fi
  26.  
  27. echo -n "Enter a name for the site (default: Danbooru): "
  28. read sitename
  29.  
  30. if [ -z $sitename ] ; then
  31.   sitename=Danbooru
  32. fi
  33.  
  34. echo -n "Enter a path for danbooru (default: /var/www/danbooru): "
  35. read danboorupath
  36.  
  37. if [ -z $danboorupath ] ; then
  38.   danboorupath="/var/www/danbooru"
  39. fi
  40.  
  41. echo -n "Which danbooru version? [trunk, 1.16.0, 1.18.0]"
  42. read danbooruversion
  43.  
  44. if [ -z $danbooruversion ] ; then
  45.   danbooruversion="1.16.0"
  46. fi
  47.  
  48.  
  49. # Install packages
  50. echo "install required packages via apt-get"
  51. apt-get -y install mongrel gcc g++ make libreadline5-dev zlib1g-dev flex bison libgd2-noxpm libgd2-noxpm-dev bzip2 postgresql-8.4 postgresql-contrib-8.4 libpq-dev ruby ruby1.8-dev ri irb rdoc rubygems ragel memcached libmemcache-dev subversion nginx libopenssl-ruby libxml2-dev libxslt-dev libcurl4-openssl-dev
  52.  
  53. # Install Ruby gems
  54. echo "install Ruby/Rails"
  55.  
  56. # this bypasses the problem with debian's stupid old version of rubygems
  57. # html5 requires hoe, but not the most recent version
  58. gem install hoe --version=2.2.0 --no-ri --no-rdoc
  59.  
  60. for i in postgres diff-lcs html5 mongrel mongrel_cluster memcache-client aws-s3 json mechanize net-sftp passenger ; do gem install $i --no-ri --no-rdoc ; done
  61.  
  62. gem install rails --version=2.2.2 --no-ri --no-rdoc
  63.  
  64. # Create user account
  65. echo "create danbooru user, allow db access"
  66.  
  67. useradd -m danbooru
  68. PG_HBA_FILE="/etc/postgresql/8.4/main/pg_hba.conf"
  69. echo "local    all         postgres,danbooru                              trust" > $PG_HBA_FILE
  70. echo "host     all         postgres,danbooru          127.0.0.1/32        trust" >> $PG_HBA_FILE
  71.  
  72. if [ -f /etc/init.d/postgresql-8.4 ]; then /etc/init.d/postgresql-8.4 restart; else /etc/init.d/postgresql restart; fi
  73.  
  74. # Install Danbooru
  75. cd /var/www
  76.  
  77. echo "installing danbooru source"
  78.  
  79. case "$danbooruversion" in
  80.         1.16.0)
  81.                 echo "installing version: 1.16.0"
  82.                 svn export svn://donmai.us/danbooru/tags/danbooru-1.16.0 danbooru
  83.                 ;;
  84.         1.18.0)
  85.                 echo "installing version: 1.18.0"
  86.                 svn export svn://donmai.us/danbooru/tags/danbooru-1.18.0 danbooru
  87.                 ;;
  88.         trunk)
  89.                 echo "installing version: trunk"
  90.                 svn export svn://donmai.us/danbooru/trunk danbooru
  91.                 ;;
  92.         tar16) 
  93.                 echo "deflating tgz danbooru-1.16.0.tgz"
  94.                 tar xfz /tmp/danbooru-1.16.0.tgz -C /var/www
  95.                 ;;
  96.         tar18)
  97.                 echo "deflating tgz danbooru-1.18.0.tgz"
  98.                 tar xfz /tmp/danbooru-1.18.0.tgz -C /var/www
  99.                 ;;
  100. esac
  101.  
  102. chown -R danbooru:danbooru danbooru
  103. cd danbooru
  104. mkdir -p public/data/sample
  105. cd config
  106. cp database.yml.example database.yml
  107. cp local_config.rb.example local_config.rb
  108. sed -i -e "s/DAN_HOSTNAME/$hostname/g" local_config.rb
  109. sed -i -e "s/DAN_SITENAME/$sitename/g" local_config.rb
  110.  
  111. echo "--- " > mongrel_cluster.yml
  112. echo "cwd: /var/www/danbooru" >> mongrel_cluster.yml
  113. echo "port: \"8050\"" >> mongrel_cluster.yml
  114. echo "environment: production" >> mongrel_cluster.yml
  115. echo "address: 127.0.0.1" >> mongrel_cluster.yml
  116. echo "servers: 3" >> mongrel_cluster.yml
  117. echo "num_processors: 10" >> mongrel_cluster.yml
  118.  
  119. cd ../lib/danbooru_image_resizer
  120. ruby extconf.rb
  121. make
  122. cd ../..
  123.  
  124. echo "installing danbooru database"
  125.  
  126. apt-get install sudo
  127. sudo -u postgres createuser -s danbooru
  128. sudo -u danbooru createdb danbooru
  129. sudo -u danbooru createdb danbooru_dev
  130. sudo -u danbooru createdb danbooru_test
  131. sudo -u danbooru psql danbooru < db/postgres.sql
  132. sudo -u danbooru psql danbooru_dev < db/postgres.sql
  133. sudo -u danbooru psql danbooru_test < db/postgres.sql
  134.  
  135. # I did not run this command when I ran it, but maybe it'll do something useful...
  136.  
  137.     echo "initialising database"
  138.    
  139.     script/db-init.sh
  140.     script/db-init.sh
  141.     script/db-init.sh
  142.    
  143.     #### app/controller/application_controller in application umbenenen
  144.     mv app/controllers/application_controller.rb app/controllers/application.rb
  145.     #### config/envirnment.rb anpassen. ruby version rausnehmen
  146.     sed -i -e "/^RAILS_GEM_VERSION/d" config/environment.rb
  147.     ### middle ware entfernen
  148.     sed -i -e "/^config.middleware.use/d" config/environments/development.rb
  149.  
  150.  
  151.  
  152.  
  153. # Install latest gems
  154.  
  155. echo "installing the CORRECT RAIL"
  156. cd /var/www/danbooru
  157. gem install -v=2.3.11 rails --no-ri --no-rdoc
  158. sudo -u danbooru /var/lib/gems/1.8/bin/rake db:migrate RAILS_ENV=production
  159.  
  160.  
  161.  
  162. # Set up nginx
  163. DANBOORU_CONF_FILE="/etc/nginx/sites-enabled/danbooru.conf"
  164. echo "upstream mongrel {" > $DANBOORU_CONF_FILE
  165. echo "  server 127.0.0.1:8050;" >> $DANBOORU_CONF_FILE
  166. echo "  server 127.0.0.1:8051;" >> $DANBOORU_CONF_FILE
  167. echo "  server 127.0.0.1:8052;" >> $DANBOORU_CONF_FILE
  168. echo "}" >> $DANBOORU_CONF_FILE
  169. echo "server {" >> $DANBOORU_CONF_FILE
  170. echo "  listen 80;" >> $DANBOORU_CONF_FILE
  171. echo "  server_name $hostname;" >> $DANBOORU_CONF_FILE
  172. echo "  root /var/www/danbooru/public;" >> $DANBOORU_CONF_FILE
  173. echo "  index index.html;" >> $DANBOORU_CONF_FILE
  174. echo "  access_log /var/www/danbooru/log/server.access.log;" >> $DANBOORU_CONF_FILE
  175. echo "  error_log /var/www/danbooru/log/server.error.log;" >> $DANBOORU_CONF_FILE
  176. echo "  client_max_body_size 30m;" >> $DANBOORU_CONF_FILE
  177. echo "  location /stylesheets {" >> $DANBOORU_CONF_FILE
  178. echo "    expires max;" >> $DANBOORU_CONF_FILE
  179. echo "    break;" >> $DANBOORU_CONF_FILE
  180. echo "  }" >> $DANBOORU_CONF_FILE
  181. echo "  location /javascripts {" >> $DANBOORU_CONF_FILE
  182. echo "    expires max;" >> $DANBOORU_CONF_FILE
  183. echo "    break;" >> $DANBOORU_CONF_FILE
  184. echo "  }" >> $DANBOORU_CONF_FILE
  185. echo "  location /data {" >> $DANBOORU_CONF_FILE
  186. echo "    valid_referers none $hostname;" >> $DANBOORU_CONF_FILE
  187. echo "    if (\$invalid_referer) {" >> $DANBOORU_CONF_FILE
  188. echo "      return 403;" >> $DANBOORU_CONF_FILE
  189. echo "    }" >> $DANBOORU_CONF_FILE
  190. echo "    expires max;" >> $DANBOORU_CONF_FILE
  191. echo "    break;" >> $DANBOORU_CONF_FILE
  192. echo "  }" >> $DANBOORU_CONF_FILE
  193. echo "  location /maintenance.html {" >> $DANBOORU_CONF_FILE
  194. echo "    expires 10;" >> $DANBOORU_CONF_FILE
  195. echo "   }" >> $DANBOORU_CONF_FILE
  196. echo "  if (-f \$document_root/maintenance.html) {" >> $DANBOORU_CONF_FILE
  197. echo "    rewrite ^(.*)\$ /maintenance.html last;" >> $DANBOORU_CONF_FILE
  198. echo "    break;" >> $DANBOORU_CONF_FILE
  199. echo "  }" >> $DANBOORU_CONF_FILE
  200. echo "  location / {" >> $DANBOORU_CONF_FILE
  201. echo "    proxy_set_header X-Real-IP \$remote_addr;" >> $DANBOORU_CONF_FILE
  202. echo "    proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;" >> $DANBOORU_CONF_FILE
  203. echo "    proxy_set_header Host \$http_host;" >> $DANBOORU_CONF_FILE
  204. echo "    proxy_redirect false;" >> $DANBOORU_CONF_FILE
  205. echo "    if (!-f \$request_filename) {" >> $DANBOORU_CONF_FILE
  206. echo "      proxy_pass http://mongrel;" >> $DANBOORU_CONF_FILE
  207. echo "    }" >> $DANBOORU_CONF_FILE
  208. echo "  }" >> $DANBOORU_CONF_FILE
  209. echo "  error_page 404 /404.html;" >> $DANBOORU_CONF_FILE
  210. echo "  error_page 500 502 503 504 /500.html;" >> $DANBOORU_CONF_FILE
  211. echo "}" >> $DANBOORU_CONF_FILE
  212. /etc/init.d/nginx restart
  213.  
  214. echo
  215. echo "I'm done!"
  216. echo "You should probably set the password for the danbooru account (run passwd danbooru)."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement