8000 alminium/smelt at dev · alminium/alminium · GitHub
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
executable file
·
317 lines (277 loc) · 8.57 KB

smelt

File metadata and controls

executable file
·
317 lines (277 loc) · 8.57 KB
#!/bin/bash
############################################################
# Smart installer for redmine/chiliproject.
############################################################
export ALM_SRC_DIR=$(cd $(dirname $0);pwd)
export ALM_ETC_DIR=/etc/opt/alminium
export ALM_VAR_DIR=/var/opt/alminium
export INSTALL_DIR=/opt/alminium
export RAILS_ENV=production
export SCRIPT_DIR=`pwd`
RM_VER=2.5.2
RM_ARC=http://www.redmine.org/releases/redmine-${RM_VER}.tar.gz
#RM_ARC=http://redmine.rubyforge.org/svn/tags
CPCMD='cp -fr'
RMCMD='rm -fr'
MEM=`free -t | grep Total | awk '{print $2}'`
if [ $MEM -lt 1000000 ]
then
echo "メモリが不足しています。"
echo "ALMiniumのインストールは1GB以上のRAMが利用できるマシン及び仮想マシンに"
echo "インストールしてください"
exit
fi
if [ "$USER" != 'root' ]
then
echo "ALMiniumのインストールはルートユーザで行う必要があります。"
echo "rootユーザもしくはsudoで実行してください。"
exit 1
fi
if [ ! -d cache ]
then
mkdir cache
fi
if [ -f /etc/redhat-release ]
then
APACHE_USER=apache
export APACHE_CONF_DIR=/etc/httpd/conf.d
MYSQLD='/etc/init.d/mysqld'
MYSQL='mysql'
CHK=`egrep "CentOS release 5|Red Hat Enterprise Linux .* 5" /etc/redhat-release`
if [ "$CHK" != '' ]
then
OS='rhel5'
echo "RHEL 5.x / CentOS 5.x / OEL 5.xが検出されました。"
echo "RHEL 5.x / CentOS 5.x / OEL 5.xは、サポートされていません。"
echo "インストールを中止します。"
exit 1
else
OS='rhel6'
echo "RHEL 6.x / CentOS 6.x / OEL 6.xが検出されました。"
fi
elif [ -f /etc/system-release ]
then
APACHE_USER=apache
export APACHE_CONF_DIR=/etc/httpd/conf.d
MYSQLD='/etc/init.d/mysqld'
MYSQL='mysql'
CHK=`egrep "Amazon Linux AMI" /etc/system-release`
if [ "$CHK" != '' ]
then
OS='rhel6'
echo "Amazon Linux AMIが検出されました。"
fi
elif [ -f /etc/debian_version ]
then
OS='debian'
APACHE_USER=www-data
export APACHE_CONF_DIR=/etc/apache2/conf.d
MYSQLD='/etc/init.d/mysql'
# TODO: -u -pを指定するとcreatedb.sqlの読み込みに失敗する
# MYSQL="$MYSQL -u root -p"
echo "Debian / Ubuntu が検出されました。"
echo "インストールに失敗するかも知れませんが、お許しくださいm(__)m"
echo ""
echo "途中MySQLのパスワードを聞かれたら空のままエンターキーを押してください。"
echo "MySQLのパスワードを設定するとインストールに失敗します。"
echo "パスワードを設定したい場合は、ALMiniumのインストール完了後行ってください"
else
CHK=`sw_vers | awk '$1 = "ProductName"{ _OS = $2 " " $3 " " $4; getline; print _OS,$2; exit }'`
if [ "$CHK" != '' ]
then
OS='mac'
APACHE_USER=www
export APACHE_CONF_DIR=/opt/local/apache2/conf
MYSQLD=/opt/local/share/mysql55/support-files/mysql.server
MYSQLD=mysql
CPCMD='cp -Rf'
RMCMD='rm -Rf'
echo "${CHK}が検出されました。"
else
echo "サポートされていないOSです。"
echo "現在サポートされいているOSは、"
echo ""
echo " * Ubuntu 12.04 Server"
echo " * Debian GNU/Linux 6.0"
echo " * RHEL/Oracle EL/CentOS/SL 6.0/6.1"
echo " * Amazon Linux AMI"
echo " * Mac OS X 10.7"
echo "です。"
exit
fi
fi
if [ "$ALM_HOSTNAME" == "" ]
then
echo "*******************************************************"
echo " ホスト名の設定"
echo "*******************************************************"
echo "ホスト名(IPアドレスもしくはDNS名)を入力してください。ホスト名はApacheのバーチャルホストで利用されます。"
echo "例えば、192.168.1.4をホスト名で入力すると、http://192.168.1.4/でアクセスすることになります。"
echo "(上記の設定ではhttp://localhost/では接続できないのでご注意ください)"
echo -n "ホスト名: "
read HOSTNAME
echo ""
echo ""
else
HOSTNAME=$ALM_HOSTNAME
fi
if [ "$SSL" == "" ]
then
echo "*******************************************************"
echo " SSLのサポート"
echo "*******************************************************"
echo "SSLのサポートを有効にすると、httpsのみの接続を許可します。"
echo "httpでのアクセスは、全てhttpsのポートへ転送されるようになります。"
echo "SSLの証明書は認証機関により署名されたものではありません。通信の暗号化のみ"
echo "に利用します。"
echo "gitの利用では、"
echo ""
echo " $ git config --global http.sslVerify false"
echo ""
echo "などのコマンドで、SSLの証明書を無効にする必要があります。"
echo ""
echo -n "SSL(https)サポートを有効にしますか?(y/N) "
read SSL
echo ""
echo ""
fi
# source inst-script/config-email.sh
if [ -e jenkins/setup/$OS/install.sh -a "$ENABLE_JENKINS" = "" ]
then
echo -n "継続的インテグレーションツールのJenkinsのインストール・設定を"
echo -n "行うことができます。デフォルトはインストールしません。"
echo -n "よく分からなければNを選択してください。"
echo -n ""
echo -n "Jenkinsをインストールしますか?[y/N]"
read ENABLE_JENKINS
fi
#if [ $TYPE = "" ]
#then
# echo "redmine もしくは chiliprojectを選択してください。"
# echo
# echo " 1. chiliproject"
# echo " 2. redmine"
# echo
# echo -n "番号を入力してください: "
#
# read TYPE
#fi
TYPE=2
case $TYPE in
1|chiliproject)
TYPE=chiliproject
;;
2|redmine)
TYPE=redmine
;;
*)
echo "未定義のチケットシステムが選択されました。"
echo "1もしくは2を入力してください。"
exit 1
;;
esac
# update submodules
if [ $(git config -l | egrep 'submodule.+url=' | wc -l) -ne \
$(grep submodule .gitmodules | wc -l) ]
then
git submodule init
fi
git submodule sync
git submodule update
## install packages
if [ ! -f packages.installed ]
then
echo "*** run pre-install script ***"
source inst-script/$OS/pre-install
touch packages.installed
fi
if [ ! -f gems.installed ]
then
echo "*** run gems script ***"
source inst-script/gems
touch gems.installed
fi
export RAKE=`which rake2.0`
if [ "$RAKE" = "" ]
then
RAKE=rake
fi
# setup database
$MYSQLD start
if [ "$MYSQL" = "" ]
then
MYSQL=`which mysql`
if [ "$MYSQL" = "" ]
then
MYSQL=`which mysql5`
fi
fi
$MYSQL < redmine/setup/createdb.sql
# setup for apache
mkdir -p $ALM_ETC_DIR
for FILE in $(ls -F -I *.conf etc | grep -v /)
do
cp "etc/$FILE" $ALM_ETC_DIR/
done
# create directory for vcs
mkdir -p $ALM_VAR_DIR/{git,svn,hg,maven}
chown -R $APACHE_USER:$APACHE_USER $ALM_VAR_DIR
# install chiliproject
mkdir -p $INSTALL_DIR
if [ $TYPE = "chiliproject" ]
then
if [ ! -f chiliproject-$CP_VER.tar.gz ]
then
wget $CP_ARC
fi
tar zxf chiliproject-$CP_VER.tar.gz
cp -fr chiliproject-$CP_VER/* $INSTALL_DIR/
rm -fr chiliproject-$CP_VER
fi
if [ $TYPE = "redmine" ]
then
cd cache
if [ ! -f redmine-$RM_VER.tar.gz ]
then
wget $RM_ARC
fi
if [ ! -f redmine-$RM_VER ]
then
# svn checkout $RM_ARC/$RM_VER redmine_$RM_VER
tar zxf redmine-$RM_VER.tar.gz
fi
cd ..
#(cd redmine-$RM_VER; patch -p1 -R < ../patch/redmine_disable_saltpassword.patch)
$CPCMD cache/redmine-$RM_VER/* $INSTALL_DIR/
$RMCMD cache/redmine-$RM_VER
fi
cp redmine/Gemfile.local $INSTALL_DIR/
$CPCMD redmine/config/* $INSTALL_DIR/config/
$CPCMD redmine/public/themes/* $INSTALL_DIR/public/themes/
# install plugins
source redmine/setup/redmine-plugins
# Customize
echo "*** run initialize SQL ***"
$MYSQL alminium < redmine/setup/init.mysql
mkdir -p $INSTALL_DIR/bin
$CPCMD redmine/bin/* $INSTALL_DIR/bin/
$CPCMD redmine/hooks $INSTALL_DIR/
chown -R $APACHE_USER:$APACHE_USER $INSTALL_DIR
# setup for email
#if [ "$SMTPSERVER" != "" ]
#then
# source inst-script/gen-email-config.sh
#fi
# setup for jenkins
if [ "$ENABLE_JENKINS" = "y" ]
then
source jenkins/setup/$OS/install.sh
source jenkins/setup/config.sh
fi
source inst-script/$OS/post-install
# プロジェクト作成時に自動的にリポジトリを作成するときに利用
#CHK=`egrep "reposman" /var/spool/cron/root`
#if [ "$CHK" = '' ]
#then
# echo "* * * * * /opt/alminium/extra/svn/reposman.rb -g apache -o apache -s /var/opt/alminium/git -u /var/opt/alminium/git -r localhost --scm git" >> /var/spool/cron/root
#fi
0