SVN服务器系统升级

为什么要升级

之前SVN服务器的系统是CentOS6.5的,比较老旧了,老版本系统会存在一些安全隐患,而我们的SVN服务器又属于安全等级非常高的服务器,因此考虑对其进行一次升级,从CentOS6.5升级到7.3版本。

服务器当前的配置是:4组RAID1,其中一组是系统盘,2组是已经在用的代码库盘,还有1组是尚未使用的冗余盘。机器位于内网,无法联网,安装软件很不方便。

Plan A

准备了2套方案:

1、直接原系统升级

2、迁移到docker中

原系统升级的这个方案,是计划先在未使用的这一组RAID盘上,装好一个新的CentOS7系统,然后启动这个新系统,试试看上面的软件和进程能否正常使用,这样一旦出现问题,还可以通过原来的老系统盘快速恢复服务。

这个GX操作后,发现PHP无法使用了,考虑到内网环境安装软件很麻烦,且仍然采用虚拟机的方式,后续不够灵活,因此该方案被舍弃了,转而采用docker方案。

安装docker

启动新的7.3系统,然后安装docker,配置基本信息。这个具体操作比较简单,不再赘述。

生成镜像

我们依赖的软件有:

MySQL-5.5

PHP-5.6

Apache-

SVN-1.8

Python-3.5

考虑到这几个里面,MySQL我们只用了基本的功能,无需个性化,而其他的软件大多都需要个性化配置,因此我们选择从dockerhub中拉取一个MySQL5.5的镜像来制作我们最终的镜像。

由于SVN服务器在内网,无法联网,安装软件很不方便,因此我们选择先在外网把软件都装好,然后生成镜像,推送到内网docker仓库,再从内网拉取这个镜像。

Dockerfile

1
2
3
FROM hub.hexin.cn:9082/library/centos:6.6
COPY ./script /usr/local/src/script
RUN sh /usr/local/src/script/install.sh && sh /usr/local/src/script/installphp.sh && sh /usr/local/src/script/installpython.sh

install.sh(配置yum源、安装apache、apache和svn交互所需的模块):

1
2
3
4
5
6
7
8
9
10
11
12
13
echo -e "[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/\$releasever/svn-1.8/RPMS/\$basearch/
enabled=1
gpgcheck=0" >> /etc/yum.repos.d/wandisco-svn.repo

# 安装SVN rsync
yum install -y \
httpd \
mod_dav_svn \
httpd-devel

yum clean all

installphp.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
wget 'http://jp2.php.net/distributions/php-5.6.39.tar.gz'
tar -xvzf php-5.6.39.tar.gz
cd php-5.6.39
./configure --prefix=/usr/local/php5.6 --with-config-file-path=/usr/local/php5.6/etc --with-curl --enable-fpm --with-freetype-dir --with-pdo-mysql --with-iconv --enable-mbstring --enable-pcntl --enable-zip --with-apxs2=/usr/sbin/apxs --with-imap-ssl
cd ./ext/imap
/usr/local/php5.6/bin/phpize
yum -y install krb5*
ln -s /usr/lib64/libc-client.so /usr/lib/libc-client.so
mkdir -p /usr/kerberos
ln -s /usr/lib64 /usr/kerberos/lib
./configure --with-php-config=/usr/local/php5.6/bin/php-config --with-kerberos=/usr/kerberos --with-imap-ssl
make
make install

这里安装php的imap扩展会稍微麻烦一些,折腾了一会。

installpython.sh

1
2
3
4
5
6
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
tar xzf Python-3.5.1.tgz
cd Python-3.5.1
./configure --prefix=/usr/local/python3/
make altinstall
ln -s /usr/local/python3/bin/python3.5 /usr/bin/python3

Plan B

2019.01.04 GX提了一个新的方案,并且他自己尝试了,感觉可行:

制作一个CentOS6的镜像,然后将原SVN服务器的/usr/local目录挂载到这个新镜像下,因为之前的软件都是源码安装的,挂载过去直接可用(可能要装几个依赖包)!

感悟:

1、我们思考方案的时候,还是太常规了,可能并没有采用最smart的方案

2、技术牛人的动手能力是非常强的;换句话说,动手能力弱是不可能成为技术牛人的