Linuxの下でWebサービスを自動的に導入するスクリプト
さぎょう
SVNウェアハウスの生成、Webサーバのプロファイルとフックプログラム
パラメータの説明
SVN_ROOT SVNのルートディレクトリ
SVNADMIN_BIN svnadminのパス
SVN_BIN svnのパス
SVN_USERでSVNのユーザー名を更新
SVN_PWDはSVNのパスワードを更新するために使用されます
WEB_ETC Apacheのホスト構成ディレクトリ
WEB_ROOT ApacheのWebルートディレクトリ
WEB_USER Apacheの運転User
WEB_GROUP Apacheの運転Group
HOST_PREFIXで生成されたWebドメイン名の接頭辞
HOST_SUFFIXが生成したWebドメイン名の接尾辞
使用方法:
スクリプトの同ディレクトリの下にconfフォルダを作成し、テンプレートファイルに入れる
SVN: svnserve.conf authz passwd
SVNフック:post-commit
Webサーバのホストプロファイル:host.conf
テンプレートの例:
1. host.conf
置換パラメータPROJECT PROJECT_を保持してください.HOST
2. post-commit
置換パラメータSVN_を保持してくださいUSER SVN_PWD PROJECT_ROOT
コードは次のとおりです.
本文は「標璽情報」のブログから出て、転載をお断りします!
SVNウェアハウスの生成、Webサーバのプロファイルとフックプログラム
パラメータの説明
SVN_ROOT SVNのルートディレクトリ
SVNADMIN_BIN svnadminのパス
SVN_BIN svnのパス
SVN_USERでSVNのユーザー名を更新
SVN_PWDはSVNのパスワードを更新するために使用されます
WEB_ETC Apacheのホスト構成ディレクトリ
WEB_ROOT ApacheのWebルートディレクトリ
WEB_USER Apacheの運転User
WEB_GROUP Apacheの運転Group
HOST_PREFIXで生成されたWebドメイン名の接頭辞
HOST_SUFFIXが生成したWebドメイン名の接尾辞
使用方法:
スクリプトの同ディレクトリの下にconfフォルダを作成し、テンプレートファイルに入れる
SVN: svnserve.conf authz passwd
SVNフック:post-commit
Webサーバのホストプロファイル:host.conf
テンプレートの例:
1. host.conf
置換パラメータPROJECT PROJECT_を保持してください.HOST
<VirtualHost
*:80
>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/PROJECT"
ServerName www.PROJECT_HOST.com
<Directory
"/var/www/html/PROJECT"
>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
2. post-commit
置換パラメータSVN_を保持してくださいUSER SVN_PWD PROJECT_ROOT
#!/bin/bash
export LC_CTYPE=zh_CN.UTF-8
su www -c "svn update --username SVN_USER --password SVN_PWD PROJECT_ROOT"
コードは次のとおりです.
#!/bin/bash
###################################################################
# deploy script #
# , Apache , SVN #
# Apache Web #
# 2013-03-09 #
# shenhd #
###################################################################
##### define variables #####
PROJECT=$1
SVN_ROOT
=
PATH
/
svn
SVNADMIN_BIN
=
/usr/
bin
/
svnadmin
SVN_BIN
=
/usr/
bin
/
svn
SVN_USER
=
USER
SVN_PWD
=
PASSWORD
WEB_ETC
=
APACHE_CONF_DIR
WEB_ROOT
=
APACHE_HTDOC_DIR
WEB_USER
=
www
WEB_GROUP
=
www
HOST_PREFIX
=
HOST_SUFFIX
=
##### define variables #####
if
[
"${UID}"
!=
"0"
]
then
echo
Please
grant it root privileges
exit
elif
[
"${PROJECT}"
==
""
]
then
echo
Please
specify a project name
exit
fi
function
create_svn
()
{
SVN_REPO
=
$
{
SVN_ROOT
}/
$
{
PROJECT
}
# create project svn repository
$SVNADMIN_BIN create ${SVN_REPO}
# backup config files
mv ${SVN_REPO}/conf/svnserve.conf ${SVN_REPO}/conf/svnserve.conf.orgin
mv ${SVN_REPO}/conf/authz ${SVN_REPO}/conf/authz.orgin
mv ${SVN_REPO}/conf/passwd ${SVN_REPO}/conf/passwd.orgin
cp
./
conf
/
svnserve
.
conf $
{
SVN_REPO
}/
conf
/
cp
./
conf
/
authz $
{
SVN_REPO
}/
conf
/
sed
-
i
"s/PROJECT/${PROJECT}/g"
$
{
SVN_REPO
}/
conf
/
authz
cp
./
conf
/
passwd $
{
SVN_REPO
}/
conf
/
if
[
!
-
f
"${SVN_REPO}/conf/authz"
]
||
[
!
-
f
"${SVN_REPO}/conf/passwd"
]
\
||
[
!
-
f
"${SVN_REPO}/conf/svnserve.conf"
]
then
echo
Cannot
change configure files
for
svn
exit
fi
}
function
create_host
()
{
PROJECT_ETC
=
$
{
WEB_ETC
}/
$
{
PROJECT
}.
conf
PROJECT_ROOT
=
$
{
WEB_ROOT
}/
$
{
PROJECT
}
mkdir
-
p $
{
PROJECT_ROOT
}
if
[
!
-
d $
{
PROJECT_ROOT
}
]
then
echo
Cannot
create project htdoc root
exit
fi
# change directory owner
chown -R ${WEB_USER}:${WEB_GROUP} ${PROJECT_ROOT}
cp
./
conf
/
host
.
conf $
{
PROJECT_ETC
}
sed
-
i
"s/PROJECT_HOST/${HOST_PREFIX}${PROJECT}${HOST_SUFFIX}/g"
$
{
PROJECT_ETC
}
sed
-
i
"s/PROJECT/${PROJECT}/g"
$
{
PROJECT_ETC
}
}
function
hook_svn
()
{
$
{
SVN_BIN
}
checkout svn
:
//127.0.0.1/${PROJECT} --username ${SVN_USER} --password ${SVN_PWD} ${PROJECT_ROOT}
cp
./
conf
/
post
-
commit $
{
SVN_REPO
}/
hooks
/
chmod
+
x $
{
SVN_REPO
}/
hooks
/
post
-
commit
HOOK
=
$
{
SVN_REPO
}/
hooks
/
post
-
commit
sed
-
i
"s/SVN_USER/${SVN_USER}/g"
$
{
HOOK
}
sed
-
i
"s/SVN_PWD/${SVN_PWD}/g"
$
{
HOOK
}
WEBROOT
=
$
{
PROJECT_ROOT
//\//\\\/}
sed -i "s/PROJECT_ROOT/${WEBROOT}/g" ${HOOK}
}
create_svn
create_host
hook_svn
echo
Reload
your web server
.
本文は「標璽情報」のブログから出て、転載をお断りします!