forked from e621ng/e621ng
156 lines
6.4 KiB
Bash
156 lines
6.4 KiB
Bash
#!/bin/bash
|
|
|
|
# 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"
|
|
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 copy and install it in"
|
|
echo "/var/www/danbooru2."
|
|
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
|
|
|
|
RUBY_VERSION=1.9.3-p327
|
|
|
|
echo -n "Enter a name for the site (default: Danbooru): "
|
|
read SITENAME
|
|
|
|
if [[ -z "$SITENAME" ]] ; then
|
|
SITENAME=Danbooru
|
|
fi
|
|
|
|
# Install packages
|
|
echo "Installing packages..."
|
|
apt-get update
|
|
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 bzip2 ragel memcached libmemcache-dev git curl libcurl4-openssl-dev emacs imagemagick libmagickcore-dev libmagickwand-dev sendmail-bin sendmail psmisc postgresql postgresql-contrib libpq-dev
|
|
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
# Create user account
|
|
useradd -m danbooru
|
|
chsh -s /bin/bash danbooru
|
|
addgroup wheel
|
|
usermod -G root,wheel root
|
|
usermod -G danbooru,wheel danbooru
|
|
|
|
# Setup danbooru account
|
|
echo
|
|
echo "*************************************************"
|
|
echo "* Enter a new password for the danbooru account *"
|
|
echo "*************************************************"
|
|
echo
|
|
passwd danbooru
|
|
|
|
# Install rbenv
|
|
echo "Installing rbenv..."
|
|
cd /
|
|
sudo -u danbooru git clone git://github.com/sstephenson/rbenv.git /home/danbooru/.rbenv
|
|
sudo -u danbooru touch /home/danbooru/.bash_profile
|
|
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> /home/danbooru/.bash_profile
|
|
echo 'eval "$(rbenv init -)"' >> /home/danbooru/.bash_profile
|
|
sudo -u danbooru mkdir -p /home/danbooru/.rbenv/plugins
|
|
sudo -u danbooru git clone git://github.com/sstephenson/ruby-build.git /home/danbooru/.rbenv/plugins/ruby-build
|
|
sudo -u danbooru bash -l -c "rbenv install $RUBY_VERSION"
|
|
sudo -u danbooru bash -l -c "rbenv global $RUBY_VERSION"
|
|
|
|
#Generate secret token and secret key
|
|
sudo -u danbooru mkdir /home/danbooru/.danbooru/
|
|
sudo -u danbooru openssl rand -hex 32 > /home/danbooru/.danbooru/secret_token
|
|
sudo -u danbooru openssl rand -hex 32 > /home/danbooru/.danbooru/session_secret_key
|
|
chmod 600 /home/danbooru/.danbooru/session_secret_key
|
|
chmod 600 /home/danbooru/.danbooru/secret_token
|
|
chown -R danbooru:danbooru /home/danbooru/.danbooru/
|
|
|
|
# Install gems
|
|
sudo -u danbooru bash -l -c 'gem install --no-ri --no-rdoc capistrano'
|
|
sudo -u danbooru bash -l -c 'gem install --no-ri --no-rdoc capistrano-ext'
|
|
sudo -u danbooru bash -l -c 'gem install --no-ri --no-rdoc bundler'
|
|
sudo -u danbooru bash -l -c 'gem install --no-ri --no-rdoc whenever'
|
|
sudo -u danbooru bash -l -c 'gem install --no-ri --no-rdoc capistrano-unicorn'
|
|
|
|
# Install Nginx
|
|
curl http://nginx.org/keys/nginx_signing.key > /root/nginx_signing.key
|
|
apt-key add nginx_signing.key
|
|
echo "deb http://nginx.org/packages/debian/ squeeze nginx" >> /etc/apt/sources.list
|
|
echo "deb-src http://nginx.org/packages/debian/ squeeze nginx" >> /etc/apt/sources.list
|
|
apt-get update
|
|
apt-get -y install nginx
|
|
rm -f /etc/nginx/conf.d/*.conf
|
|
|
|
# Update PostgreSQL
|
|
PG_HBA_FILE="/etc/postgresql/8.4/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 restart
|
|
sudo -u postgres createuser -s danbooru
|
|
|
|
# Setup nginx
|
|
update-rc.d -f nginx defaults
|
|
curl -s https://raw.github.com/r888888888/danbooru/master/script/install/nginx.danbooru.conf > /etc/nginx/conf.d/danbooru.conf
|
|
sed -i -e "s/__hostname__/$HOSTNAME/g" /etc/nginx/conf.d/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
|
|
echo "/var/www/danbooru2/current/log/production.log {" >> $LOGROTATE_CONF_FILE
|
|
echo " daily" >> $LOGROTATE_CONF_FILE
|
|
echo " rotate 3" >> $LOGROTATE_CONF_FILE
|
|
echo " copytruncate" >> $LOGROTATE_CONF_FILE
|
|
echo "}" >> $LOGROTATE_CONF_FILE
|
|
|
|
sudo -u danbooru createdb danbooru2
|
|
sudo -u danbooru psql danbooru2 -c 'CREATE LANGUAGE plpgsql;'
|
|
|
|
cd /home/danbooru
|
|
sudo -u danbooru mkdir /home/danbooru/apps
|
|
cd /home/danbooru/apps
|
|
git clone git://github.com/r888888888/danbooru.git danbooru
|
|
chown -R danbooru:danbooru danbooru
|
|
|
|
echo
|
|
echo
|
|
echo "**************************************************************"
|
|
echo "* Danbooru is almost ready for deployment. *"
|
|
echo "* *"
|
|
echo "* A local copy has been checked out into /home/danbooru/apps *"
|
|
echo "* but you may want to clone your own copy from *"
|
|
echo "* http://github.com/r888888888/danbooru.git *"
|
|
echo "* *"
|
|
echo "* You will probably want to create your own branch and *"
|
|
echo "* modify the config/deploy/staging.rb and production.rb *"
|
|
echo "* files to point to the correct servers. *"
|
|
echo "* *"
|
|
echo "* You will also need to edit config/deploy.rb and replace *"
|
|
echo "* albert with danbooru. Then run: *"
|
|
echo "* *"
|
|
echo "* cap deploy:setup && cap deploy *"
|
|
echo "* This will run as staging environment *"
|
|
echo "* *"
|
|
echo "* cap production deploy:setup && cap production deploy *"
|
|
echo "* This will run as production environment *"
|
|
echo "* *"
|
|
echo "* The first account will automatically be made an admin. *"
|
|
echo "* You can edit the configuration files by editing *"
|
|
echo "* /var/www/danbooru2/shared/config/local_config and *"
|
|
echo "* /var/www/danbooru2/shared/config/database.yml *"
|
|
echo "**************************************************************"
|