124 lines
4.1 KiB
Bash
124 lines
4.1 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/danbooru."
|
|
echo
|
|
echo "It is mostly automated but you will receive some prompts when installing"
|
|
echo "Passenger towards the end of the script."
|
|
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
|
|
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 emacs-nox
|
|
|
|
# Install PostgreSQL 9.1
|
|
apt-get -y install python-software-properties
|
|
add-apt-repository ppa:pitti/postgresql
|
|
apt-get update
|
|
apt-get install -y postgresql-9.1 libpq-dev
|
|
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
# Install RVM
|
|
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
|
|
gem install --no-ri --no-rdoc bundler
|
|
|
|
# Install Passenger
|
|
gem install --no-ri --no-rdoc -v 3.0.8 passenger
|
|
rvm exec passenger-install-nginx-module
|
|
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
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
|
|
|
|
/etc/init.d/postgresql restart
|
|
sudo -u postgres createuser -s danbooru
|
|
|
|
mkdir -p /var/log/www
|
|
|
|
# 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/conf/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
|
|
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
|
|
echo "/var/log/www/danbooru.access.log" >> $LOGROTATE_CONF_FILE
|
|
echo "/var/log/www/danbooru.error.log">> $LOGROTATE_CONF_FILE
|
|
echo "/var/www/danbooru/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
|
|
|
|
# Setup danbooru account
|
|
echo "*************************************************"
|
|
echo "* Enter a new password for the danbooru account *"
|
|
echo "*************************************************"
|
|
passwd danbooru
|
|
|
|
echo
|
|
echo "I'm done!"
|