使用docker搭建一个testlink服务器,外连公司的mysql数据库,可以方便地对数据做迁移
准备工作
- 安装docker
- 确定一个可用的数据库
容器初始化并定制
pull原生镜像
pull原生centos镜像,pull成功的话如下所示,若在pull过程中下载较慢或者无法连接,请尝试更换docker源后再pull
1 | docker pull centos[:TAG] #不指定tag时默认tag为latest |
使用以下命令来查看本地的docker image:
1 | docker images |
运行centos镜像
执行以下命令
1 | docker run --privileged -dit -p 80:80 -e "container=docker" --name testlink_server centos /usr/sbin/init |
参数说明
–privileged
-dit 后台运行
-p 端口映射
-e 设置环境变量
–name 设置运行容器名
再执行docker exec进入容器终端操作
1 | docker exec -it testlink_server /bin/bash |
安装apache
使用centos自带的包管理工具yum来安装apache
1 | yum -y update #更新软件 |
等待以上命令安装成功后启动apache并将apach加入到开机自启动
1 | systemctl start httpd #启动apache服务 |
若在使用systemctl时提示Failed to get D-Bus connection: Operation not permitted,请检查容器是否使用–privileged启动,详细解决方法可参考Centos7 Docker容器中报错 Failed to get D-Bus connection: Operation not permitted
此时可以打开本地浏览器http://localhost/ 若提示展示如下页面,则表明apache服务启动成功
安装php5.6
添加centOS 7.0源
1 | yum install epel-release |
yum源配置好后安装PHP5.6
1 | yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof |
安装完成后建议执行clean来清除一些多余缓存,以减少生成的镜像的大小
1 | yum clean all |
检查当前php版本
1 | # php -v |
注意:若当前版本小于5.6,则在运行最新版testlink的php代码时会报错
安装testlink
下载testlink包
我们使用最新版testlink 1.9.19,其他版本请到testlink官网下载
方法一.在centos容器中 使用wget直接下载
1 | wget https://nchc.dl.sourceforge.net/project/testlink/TestLink%201.9/TestLink%201.9.19/testlink-1.9.19.tar.gz |
方法二.在宿主机上下载后复制到容器中
1 | wget https://nchc.dl.sourceforge.net/project/testlink/TestLink%201.9/TestLink%201.9.19/testlink-1.9.19.tar.gz |
ps:推荐使用方法二,这样就无需在容器中安装wget了,使得制作的镜像相对来说比较小
解压testlink包并安装
容器中执行
1 | tar -zvxf testlink-1.9.19.tar.gz testlink |
拷贝testlink到apache服务的指定目录
1 | mv testlink-1.9.19 /var/www/html/testlink |
重启apache服务后访问http://localhost/testlink 可进入如下界面则表明apache已安装成功
配置testlink
PHP配置
php配置文件目录为
/etc/php.ini
根据提示修改
A、Maximum Session Idle Time before Timeout 24 minutes and 0 seconds - (Short. Consider to extend.)
解决:php.ini文件修改: session.gc_maxlifetime的值为2400
B、Checking max. execution time (Parameter max_execution_time)
解决:php.ini文件修改:
max_execution_time = 120
C. Checking Postgres Database Failed! Postgres Database cannot be used.
Checking MSSQL Database Failed!
解决:如连接MySQL,不用处理该警告,否则安装即可
D、Checking LDAP library OK
解决:php.ini文件修改如下:
extension=php_ldap.dll
发现没有php_ldap.dll,安装PHP的LDAP扩展,还是没有,发现名字换了,于是把php_ldap.dll换成ldap.dll,不再报错
添加对应目录并增加读写权限
1 | chmod 777 /var/www/html/testlink/gui/templates_c |
配置数据库
配置数据库有两种方法,适用于不同的场景
方法一.手动生成数据表结构并添加对应的配置文件
适用条件:已有数据库,只需要单独添加teslink的数据库即可,方便数据的迁移
操作步骤:
- 在对应数据库中执行:
CREATE DATABASE testlink CHARACTER SET utf8 COLLATE utf8_general_ci - 使用testlink自带的sql脚本testlink_create_tables.sql生成表
- 使用testlink自带的sql脚本testlink_create_default_data生成默认数据
- 在testlink目录下新增配置文件config_DB.inc.php,内容如下:
1
2
3
4
5
6
7
define('DB_TYPE', 'mysql');
define('DB_USER', 'yourname');
define('DB_PASS', 'yourpassword');
define('DB_HOST', 'databasehost:databaseport');
define('DB_NAME', 'testlink');
ps:sql脚本路径 testlink/install/sql/mysql
方法二.根据http://localhost/testlink/install/中的提示逐步完成
适用条件:首次搭建,
操作步骤:根据web提示添加信息即可
配置完成后重启apache服务
至此,我们已经启动了一个可随时运行的容器,并在本机运行,但是很多时候我们需要把服务部署到特定服务器上
部署
部署时我们只需要将本地容器制作成镜像,然后部署到对应的服务器即可
制作docker镜像
1 | docker commit -a "example@example.com" -m "基于centos的镜像搭建" 2480719f8213 testlink-server/testlink:v4 |
镜像推送到指定hub
修改tag为规范的tag:
1 | docker tag SOURCE_IMAGE[:TAG] 仓库域名/仓库名/IMAGE[:TAG] |
修改tag成功后可以使用docker images查看
push本地镜像到服务器
1 | docker push 仓库域名/仓库名/IMAGE[:TAG] |
服务器下载镜像并启动
登陆要部署的服务器,下载对应镜像
1 | docker pull 仓库域名/仓库名/IMAGE[:TAG] |
启动容器
1 | docker run --privileged -dit -p 8009:80 -e "container=docker" --name testlink_server testlink:v4 /usr/sbin/init |
此时testlink服务器已部署完成,需要修改时执行以下命令,进入终端操作
1 | docker exec -it testlink_server /bin/bash |
以上
参考文章
Centos7 Docker容器中报错 Failed to get D-Bus connection: Operation not permitted
centos7 部署Apache服务器
在CentOS安装PHP5.6
testlink—安装与配置