diff --git a/INSTALL.debian b/INSTALL.debian index 932168487..7d2784669 100644 --- a/INSTALL.debian +++ b/INSTALL.debian @@ -1,6 +1,6 @@ #!/bin/bash -# Run: bash < <(curl -s https://raw.github.com/r888888888/danbooru/master/INSTALL.debian) +# Run: curl -s https://raw.github.com/r888888888/danbooru/master/INSTALL.debian > install.sh ; chmod +x install.sh ; ./install.sh if [[ "$(whoami)" != "root" ]] ; then echo "You must run this script as root" @@ -35,7 +35,7 @@ fi # Install packages 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 +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 emacs-nox # Install PostgreSQL 9.1 apt-get -y install python-software-properties @@ -51,12 +51,14 @@ fi echo "Installing RVM..." bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) echo "source /usr/local/rvm/scripts/rvm" >> /etc/bash.bashrc +echo "source /usr/local/rvm/scripts/rvm" >> /etc/profile 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 +gem install --no-ri --no-rdoc capistrano-ext # Install Passenger gem install --no-ri --no-rdoc -v 3.0.8 passenger @@ -68,6 +70,16 @@ fi # Create user account useradd -m danbooru +chsh -s /bin/bash danbooru +echo "source /usr/local/rvm/scripts/rvm" > /home/danbooru/.bashrc +chmod g-wx,o-wx /home/danbooru/.bashrc +chown danbooru:danbooru /home/danbooru/.bashrc +echo "export rvm_path=/usr/local/rvm" > /etc/rvmrc +addgroup wheel +usermod -G root,wheel root +usermod -G danbooru,wheel danbooru + +# Update PostgreSQL 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 @@ -87,6 +99,8 @@ curl -s https://raw.github.com/r888888888/danbooru/master/script/install/nginx.d sed -i -e 's/HOSTNAME/$hostname/g' /opt/nginx/conf/sites/danbooru.conf /etc/init.d/nginx start +echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers + # Setup logrotate LOGROTATE_CONF_FILE="/etc/logrotate.conf" echo >> $LOGROTATE_CONF_FILE diff --git a/app/logical/remote_file_manager.rb b/app/logical/remote_file_manager.rb new file mode 100644 index 000000000..beb2c7af5 --- /dev/null +++ b/app/logical/remote_file_manager.rb @@ -0,0 +1,23 @@ +class RemoteFileManager + attr_reader :path + + def initialize(path) + @path = path + end + + def distribute + Danbooru.config.other_server_hosts.each do |hostname| + Net::SFTP.start(hostname, Danbooru.config.remote_server_login) do |ftp| + ftp.upload!(path, path) + end + end + end + + def delete + Danbooru.config.other_server_hosts.each do |hostname| + Net::SFTP.start(hostname, Danbooru.config.remote_server_login) do |ftp| + ftp.remove(path) + end + end + end +end diff --git a/config/deploy.rb b/config/deploy.rb index bbf7e66c9..e70a241d0 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,5 +1,6 @@ $:.unshift(File.expand_path("./lib", ENV["rvm_path"])) set :rvm_ruby_string, "ruby-1.9.2" +set :rvm_bin_path, "/usr/local/rvm/bin" require 'rvm/capistrano' set :stages, %w(production staging) @@ -15,8 +16,30 @@ require 'whenever/capistrano' set :application, "danbooru" set :repository, "git://github.com/r888888888/danbooru.git" set :scm, :git +set :user, "danbooru" set :deploy_to, "/var/www/#{application}" +default_run_options[:pty] = true + +desc "Change ownership of common directory to user" +task :reset_ownership_of_common_directory do + sudo "chown -R #{user}:#{user} /var/www/danbooru" +end + +namespace :deploy do + namespace :web do + desc "Present a maintenance page to visitors." + task :disable do + run "mv #{current_path}/public/maintenance2.html #{current_path}/public/maintenance.html" + end + + desc "Makes the application web-accessible again." + task :enable do + run "mv #{current_path}/public/maintenance.html #{current_path}/public/maintenance2.html" + end + end +end + namespace :delayed_job do desc "Start delayed_job process" task :start, :roles => :app do @@ -34,6 +57,8 @@ namespace :delayed_job do end end +after "deploy:setup", "reset_ownership_of_common_directory" after "deploy:start", "delayed_job:start" after "deploy:stop", "delayed_job:stop" after "deploy:restart", "delayed_job:restart" +