Skip to content

Commit

Permalink
Merge pull request #102 from ayapapa/dev-new
Browse files Browse the repository at this point in the history
#90, #93, #94, #95, #99 に対応
  • Loading branch information
ayapapa authored Feb 18, 2017
2 parents f287670 + e713856 commit 070c482
Show file tree
Hide file tree
Showing 56 changed files with 880 additions and 510 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ gems.installed
packages.installed
vendor/bundler/
test/.test
*.swp
2 changes: 1 addition & 1 deletion RM_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.3.1
3.3.2
96 changes: 56 additions & 40 deletions backup
Original file line number Diff line number Diff line change
@@ -1,16 +1,34 @@
#!/bin/bash
############################################################
# backup for ALMinium.
# 第一引数:バックアップディレクトリ(defaultは/var/opt/alminium-backup)
# 第1引数:バックアップディレクトリ
# defaultは/var/opt/alminium-backup
# "-"を指定したときはdeaultディレクトリを利用
# 第2引数:データベースホスト名
# 第3引数:データベース管理者パスワード
############################################################
ALM_SRC_DIR=${ALM_SRC_DIR:-$(cd $(dirname $0);pwd)}
ALM_VAR_DIR=${ALM_VAR_DIR:-/var/opt/alminium}
ALM_INSTALL_DIR=${ALM_INSTALL_DIR:-/opt/alminium}

ALM_CURRENT_DIR=${ALM_CURRENT_DIR:-`pwd`}
ALM_DB_HOST=${2:-${ALM_DB_HOST}}
ALM_DB_HOST=${ALM_DB_HOST:-localhost}
ALM_DB_ROOT_PASS=${3:-${ALM_DB_ROOT_PASS}}

if [ "$1" != "" ]; then
ALM_CURRENT_DIR=`pwd`

# move to sources directry
cd ${ALM_SRC_DIR}

# include functions
source inst-script/functions

# backup directry
if [ "$1" != "" -a "$1" != "-" ]; then
if [ "`echo $1 | cut -c 1`" = "/" ]; then
ALM_BACKUP_DIR=$1
else
ALM_BACKUP_DIR=$ALM_CURRENT_DIR/$1
ALM_BACKUP_DIR=${ALM_CURRENT_DIR}/$1
fi
else
# デフォルトバックアップディレクトリを設定
Expand All @@ -25,67 +43,65 @@ if [ "`whoami`" != 'root' ]; then
fi

#バックアップディレクトリのチェック
if [ ! -d $ALM_BACKUP_DIR ]; then
mkdir -p $ALM_BACKUP_DIR
#echo "バックアップディレクトリが見つかりませんでした。処理を中止します"
#exit 1
if [ ! -d ${ALM_BACKUP_DIR} ]; then
mkdir -p ${ALM_BACKUP_DIR}
fi

# バックアップファイル名決定
ALM_BACKUP_ID=`date +"%Y-%m-%d-%H-%M-%S"`
ALM_DBBACKUP_NAME=db.dump
ALM_FILE_BACKUP=files.tar.gz
ALM_REPOS_BACKUP=repo.tar.gz
ALM_BACKUP_NAME=$ALM_BACKUP_DIR/${ALM_BACKUP_ID}-alm-backup.tar.gz
ALM_BACKUP_NAME=${ALM_BACKUP_ID}-alm-backup.tar.gz

# バックアップ開始
echo "[`date`] : ALMiniumのデータの($ALM_BACKUP_NAME)へのバックアップを開始します。"
echo "[`date`] ALMiniumのデータのバックアップを開始します。"
echo "バックアップファイル名 : ${ALM_BACKUP_DIR}/${ALM_BACKUP_NAME}"

# バックアップ結果チェック
check_backup_result() {
if [ -f ${ALM_BACKUP_DIR}/$1 -a -s ${ALM_BACKUP_DIR}/$1 ]; then
echo "$2(${ALM_BACKUP_DIR}/$1)が成功しました。"
else
echo "$2(${ALM_BACKUP_DIR}/$1)が失敗しました。"
exit 1
fi
}

#データベースをバックアップ
echo "MySQLデータベースをバックアップします。"
mysqldump -uroot alminium > $ALM_BACKUP_DIR/$ALM_DBBACKUP_NAME
if [ -f $ALM_BACKUP_DIR/$ALM_DBBACKUP_NAME ]; then
echo "MySQLデータベースのバックアップが成功しました。"
else
echo "MySQLデータベースのバックアップが失敗しました。"
exit 1
fi
mysqldump `db_option` alminium > ${ALM_BACKUP_DIR}/${ALM_DBBACKUP_NAME}
check_backup_result ${ALM_DBBACKUP_NAME} "データベースバックアップ"

#redmineの添付ファイルをバックアップ
echo "Redmineの添付ファイルをバックアップします。"
pushd /opt/alminium/files/
tar czf $ALM_BACKUP_DIR/$ALM_FILE_BACKUP .
if [ -f $ALM_BACKUP_DIR/$ALM_FILE_BACKUP ]; then
echo "Redmineの添付ファイルのバックアップが成功しました。"
else
echo "Redmineの添付ファイルのバックアップが失敗しました。"
exit 1
fi
pushd ${ALM_INSTALL_DIR}/files/
tar czf ${ALM_BACKUP_DIR}/${ALM_FILE_BACKUP} .
check_backup_result ${ALM_FILE_BACKUP} "添付ファイルバックアップ"
popd

#ソースコードリポジトリ
echo "ソースコードリポジトリをバックアップします。"
pushd /var/opt/alminium/
tar czf $ALM_BACKUP_DIR/$ALM_REPOS_BACKUP .
if [ -f $ALM_BACKUP_DIR/$ALM_REPOS_BACKUP ]; then
echo "ソースコードリポジトリのバックアップが成功しました。"
else
echo "ソースコードリポジトリのバックアップが失敗しました。"
exit 1
fi
pushd ${ALM_VAR_DIR}/
tar czf ${ALM_BACKUP_DIR}/${ALM_REPOS_BACKUP} .
check_backup_result ${ALM_REPOS_BACKUP} "ソースコードリポジトリバックアップ"
popd

# バックアップ統合
pushd $ALM_BACKUP_DIR
tar czf $ALM_BACKUP_NAME ./$ALM_DBBACKUP_NAME ./$ALM_FILE_BACKUP ./$ALM_REPOS_BACKUP
pushd ${ALM_BACKUP_DIR}
tar czf ./${ALM_BACKUP_NAME} \
./${ALM_DBBACKUP_NAME} ./${ALM_FILE_BACKUP} ./${ALM_REPOS_BACKUP}
check_backup_result ${ALM_BACKUP_NAME} "バックアップファイル統合"

# バックアップ終了
echo "[`date`] : ALMiniumのデータの($ALM_BACKUP_NAME)へのバックアップが終了しました。"
echo "[`date`] ALMiniumのデータのバックアップが終了しました。"
echo "バックアップファイル名:${ALM_BACKUP_DIR}/${ALM_BACKUP_NAME}"

# 古いバックアップファイルを削除
if [ "$ALM_BACKUP_EXPIRY" != "" ]; then
echo "[`date`] : $ALM_BACKUP_EXPIRY日経過したバックアップファイルを削除します。"
find $ALM_BACKUP_DIR/*.tar.gz -mtime +$ALM_BACKUP_EXPIRY -exec rm -f {} \;
if [ "${ALM_BACKUP_EXPIRY}" != "" ]; then
echo -n "[`date`] ${ALM_BACKUP_EXPIRY}日経過した"
echo "バックアップファイルを削除します。"
find ${ALM_BACKUP_DIR}/*.tar.gz \
-mtime +${ALM_BACKUP_EXPIRY} -exec rm -f {} \;
fi
popd

6 changes: 3 additions & 3 deletions etc/vcs.conf
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
AuthName Subversion

# for Redmine Authentication
RedmineDSN "DBI:mysql:database=alminium;host=localhost"
RedmineDSN "DBI:mysql:database=alminium;host=#DB_HOST#"
RedmineDbUser "alminium"
RedmineDbPass "alminium"

Expand Down Expand Up @@ -49,7 +49,7 @@ SetEnv GIT_HTTP_EXPORT_ALL
AuthName Git

# for Redmine Authentication
RedmineDSN "DBI:mysql:database=alminium;host=localhost"
RedmineDSN "DBI:mysql:database=alminium;host=#DB_HOST#"
RedmineDbUser "alminium"
RedmineDbPass "alminium"
RedmineGitSmartHttp yes
Expand Down Expand Up @@ -108,7 +108,7 @@ WSGIScriptAlias #SUBDIR#/hg /etc/opt/alminium/hgweb.wsgi
AuthName Mercurial

# for Redmine Authentication
RedmineDSN "DBI:mysql:database=alminium;host=localhost"
RedmineDSN "DBI:mysql:database=alminium;host=#DB_HOST#"
RedmineDbUser "alminium"
RedmineDbPass "alminium"

Expand Down
4 changes: 2 additions & 2 deletions inst-script/check-git
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ if [ "`which git`" = "" ]; then
else
GIT_VER=`git --version | cut -c 13-15`
# 古いgitのときはアップグレード
if [ `echo "$GIT_VER >= 1.9" | bc` = 0 ]; then
if [ $ALM_GIT_AUTO_UPGRADE = 'y' ]; then
if [ `echo "${GIT_VER} >= 1.9" | bc` = 0 ]; then
if [ ${ALM_GIT_AUTO_UPGRADE} = 'y' ]; then
GIT_UPDATE=y
else
echo
Expand Down
2 changes: 1 addition & 1 deletion inst-script/check-mem
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/bash
# check memory size
MEM=`free -t | grep Total | awk '{print $2}'`
if [ $MEM -lt 1000000 ]; then
if [ ${MEM} -lt 1000000 ]; then
echo "メモリが不足しています。"
echo "ALMiniumのインストールは1GB以上のRAMが利用できるマシン及び仮想マシンに"
echo "インストールしてください"
Expand Down
2 changes: 1 addition & 1 deletion inst-script/check-old-alm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
# check old alminium existance
if [ -d $ALM_INSTALL_DIR/app ]; then
if [ -d ${ALM_INSTALL_DIR}/app ]; then
echo "古いALMiniumが見つかりました。一度アンインストールするか、"
echo "アップグレードコマンドを使ってインストールしてください。"
exit 1
Expand Down
12 changes: 3 additions & 9 deletions inst-script/check-os
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,23 @@
# ネットワーク0のデバイス名
ETH0=${ETH0:-eth0}
# check OS
if [ "$OS" = "" ]; then
if [ "${OS}" = "" ]; then
if [ -f /etc/redhat-release ]; then
APACHE_USER=apache
APACHE_CONF_DIR=/etc/httpd/conf.d
APACHE_LOG_DIR=httpd
MYSQL_LOG_DIR=mysql
MYSQLD='/etc/init.d/mysqld'
MYSQL='mysql'
CHK=`egrep "CentOS release 5|Red Hat Enterprise Linux .* 5" /etc/redhat-release`
if [ "$CHK" != '' ]; then
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
fi
CHK=`egrep "CentOS Linux release 7" /etc/redhat-release`
if [ "$CHK" != '' ]; then
if [ "${CHK}" != '' ]; then
OS='rhel7'
echo "CentOS 7.x が検出されました。"
MYSQL_LOG_DIR=mariadb
Expand All @@ -35,7 +34,6 @@ if [ "$OS" = "" ]; then
APACHE_LOG_DIR=apache2
MYSQL_LOG_DIR=mysql
MYSQLD='/etc/init.d/mysql'
MYSQL='mysql'
OS='debian'
echo "Ubuntu 14.04 が検出されました。"
elif [ -f /etc/lsb-release -a "`grep 16.04 /etc/lsb-release`" != "" ]; then
Expand All @@ -44,12 +42,8 @@ if [ "$OS" = "" ]; then
APACHE_LOG_DIR=apache2
MYSQL_LOG_DIR=mysql
MYSQLD='/etc/init.d/mysql'
MYSQL='mysql'
OS='ubuntu1604'
ETH0=enp0s3
if [ ! -f jenkins/setup/ubuntu1604 ]; then
ln -s debian jenkins/setup/ubuntu1604
fi
echo "Ubuntu 16.04 が検出されました。"
else
echo "サポートされていないOSです。"
Expand Down
57 changes: 46 additions & 11 deletions inst-script/config-alminium
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@ echo "パスワードを設定したい場合は、ALMiniumのインストール
echo ""

# ホスト名設定
if [ "$ALM_HOSTNAME" = "" ]; then
if [ "${ALM_HOSTNAME}" = "" ]; then
echo "*******************************************************"
echo " ホスト名の設定"
echo "*******************************************************"
echo "ホスト名(IPアドレスもしくはDNS名)を入力してください。ホスト名はApacheのバーチャルホストで利用されます。"
echo "例えば、192.168.1.4をホスト名で入力すると、http://192.168.1.4/でアクセスすることになります。"
IP_ADDR="`ip -f inet -o addr show $ETH0 | cut -d\ -f 7 | cut -d/ -f 1`"
echo -n "ホスト名[$IP_ADDR]:"
IP_ADDR="`ip -f inet -o addr show ${ETH0} | cut -d\ -f 7 | cut -d/ -f 1`"
echo -n "ホスト名[${IP_ADDR}]:"
read ALM_HOSTNAME
ALM_HOSTNAME=${ALM_HOSTNAME:-$IP_ADDR}
ALM_HOSTNAME=${ALM_HOSTNAME:-${IP_ADDR}}
echo ""
fi

# SSL設定
if [ "$ALM_ENABLE_SSL" = "" ]; then
if [ "${ALM_ENABLE_SSL}" = "" ]; then
echo "*******************************************************"
echo " SSLのサポート"
echo "*******************************************************"
Expand All @@ -44,7 +44,7 @@ fi
#
# サブディレクトリ指定
#
if [ "$ALM_RELATIVE_URL_ROOT" = "" ]; then
if [ "${ALM_RELATIVE_URL_ROOT}" = "" ]; then
echo "*****************************"
echo " サブディレクトリ指定 "
echo "*****************************"
Expand All @@ -57,23 +57,58 @@ if [ "$ALM_RELATIVE_URL_ROOT" = "" ]; then
echo ""
echo ""
else
ALM_SUBDIR="$ALM_RELATIVE_URL_ROOT"
ALM_SUBDIR="${ALM_RELATIVE_URL_ROOT}"
fi

if [ "$ALM_SUBDIR" != "" ]; then
if [ `echo $ALM_SUBDIR | cut -c 1` != '/' ]; then
ALM_SUBDIR="/$ALM_SUBDIR"
if [ "${ALM_SUBDIR}" != "" ]; then
if [ `echo ${ALM_SUBDIR} | cut -c 1` != '/' ]; then
ALM_SUBDIR="/${ALM_SUBDIR}"
fi
fi

# source inst-script/config-email.sh

if [ -e jenkins/setup/$OS/install.sh -a "$ALM_ENABLE_JENKINS" = "" ]; then
# jenkins
if [ -e jenkins/setup/${OS}/install.sh -a "${ALM_ENABLE_JENKINS}" = "" ]; then
echo -n "継続的インテグレーションツールのJenkinsのインストール・設定を"
echo -n "行うことができます。デフォルトはインストールしません。"
echo -n "よく分からなければNを選択してください。"
echo -n ""
echo -n "Jenkinsをインストールしますか?(y/N)"
read ALM_ENABLE_JENKINS
echo ""
fi

# OAuth2認証
if [ "${ALM_OAUTH2_METHOD}" = "" ]; then
echo "### 本機能は実験中(動作確認が不十分)です ###"
echo "OAuth2認証サービス(プロバイダ)を選択してください:"
echo " 1: Google"
echo " 2: GitHub"
echo " 3: GitLab (オンプレミスサービスも指定可能)"
echo " 4: Azure"
echo " other: OAuth2認証を利用しない"
echo -n "利用したいサービスの番号をお選びください: "
read ALM_OAUTH2_METHOD
if [ "${ALM_OAUTH2_METHOD}" = "" ] ; then
ALM_OAUTH2_METHOD="N"
fi
fi
case ${ALM_OAUTH2_METHOD} in
1)
ALM_OAUTH2_METHOD=google
;;
2)
ALM_OAUTH2_METHOD=github
;;
3)
ALM_OAUTH2_METHOD=gitlab
;;
4)
ALM_OAUTH2_METHOD=azure
;;
*)
ALM_OAUTH2_METHOD=N
;;
esac

2 changes: 1 addition & 1 deletion inst-script/config-apache
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
mkdir -p $ALM_ETC_DIR
for FILE in $(ls -F -I *.conf etc | grep -v /)
do
cp "etc/$FILE" $ALM_ETC_DIR/
cp "etc/${FILE}" ${ALM_ETC_DIR}/
done

24 changes: 12 additions & 12 deletions inst-script/config-backup
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@
#
ALM_VAR_DIR=${ALM_VAR_DIR:-/var/opt/alminium}
ALM_ETC_DIR=${ALM_ETC_DIR:-/etc/opt/alminium}
ALM_BACKUP_DIR=${ALM_BACKUP_DIR:-$ALM_VAR_DIR-backup}
ALM_BACKUP_DIR=${ALM_BACKUP_DIR:-${ALM_VAR_DIR}-backup}
ALM_BACKUP_LOG=${ALM_BACKUP_LOG:-/opt/alminium/log/backup.log}
ALM_BACKUP_MINUTE=${ALM_BACKUP_MINUTE:-0}
ALM_BACKUP_HOUR=${ALM_BACKUP_HOUR:-3}
ALM_BACKUP_DAY=${ALM_BACKUP_DAY:-*/2}
ALM_BACKUP_EXPIRY=${ALM_BACKUP_EXPIRY:-14}
cd $ALM_SRC_DIR
mkdir -p $ALM_BACKUP_DIR
#chown -R $APACHE_USER:$APACHE_USER $ALM_BACKUP_DIR
if [ -f $ALM_ETC_DIR/alminium-backup-cron ]; then
sed -e "s|#ALM_BACKUP_DIR#|$ALM_BACKUP_DIR|" \
-e "s|#ALM_BACKUP_LOG#|$ALM_BACKUP_LOG|" \
-e "s|#ALM_BACKUP_MINUTE#|$ALM_BACKUP_MINUTE|" \
-e "s|#ALM_BACKUP_HOUR#|$ALM_BACKUP_HOUR|" \
-e "s|#ALM_BACKUP_DAY#|$ALM_BACKUP_DAY|" \
-e "s|#ALM_BACKUP_EXPIRY#|$ALM_BACKUP_EXPIRY|" \
$ALM_ETC_DIR/alminium-backup-cron > /etc/cron.d/alminium-backup-cron

cd ${ALM_SRC_DIR}
mkdir -p ${ALM_BACKUP_DIR}
if [ -f ${ALM_ETC_DIR}/alminium-backup-cron ]; then
sed -e "s|#ALM_BACKUP_DIR#|${ALM_BACKUP_DIR}|" \
-e "s|#ALM_BACKUP_LOG#|${ALM_BACKUP_LOG}|" \
-e "s|#ALM_BACKUP_MINUTE#|${ALM_BACKUP_MINUTE}|" \
-e "s|#ALM_BACKUP_HOUR#|${ALM_BACKUP_HOUR}|" \
-e "s|#ALM_BACKUP_DAY#|${ALM_BACKUP_DAY}|" \
-e "s|#ALM_BACKUP_EXPIRY#|${ALM_BACKUP_EXPIRY}|" \
${ALM_ETC_DIR}/alminium-backup-cron > /etc/cron.d/alminium-backup-cron
chown root:root /etc/cron.d/alminium-backup-cron
else
echo -n バックアップ設定ファイルが見つかりません。
Expand Down
Loading

0 comments on commit 070c482

Please sign in to comment.