遇到一个问题,我部署了一个开源版的禅道,具体版本是21.2 , 这是一个可以一键部署的版本,因为其内置了 apache,redis,mysql,php, xxd 这些都不用自己单独安装,只需要下载,解压,然后 切换到 zbox 目录下,执行以下命令就可以了
bash
./zbox start
如果步修改任何的配置,上面提到的这些软件都是按照默认的端口来启动
bash
Apache 80 stopped 2.4.62
PHP - stopped 8.1.30 prefork
MySQL 3306 stopped 10.6.20 MariaDB
XXD 11443 11444 stopped 9.2.1
Roadrunner - stopped 2023.3.12 @zentao
Redis 6379 stopped 6.2.16 Cache
但是当我们的服务器上这些端口被其他的服务占用的时候,我们就需要修改这些软件的端口,来保证正常启动。
我遇到的情况是我的80端口被nginx占用,我需要将其修改为8899 这个端口,然后我就修改了
/opt/zbox/etc/apache 目录下的apache配置文件,httpd.conf , 将apache的监听端口修改为8899

还有一处也也可以配置apache的端口
但我发现是注释的就没管它,然后启动了,放开是确实是好用的,但是过了一段时间,服务器欠费了,被强制关机了,续费重启之后,无论无何,apache都起不来,提示说是80端口被占用了,但是我明明配置的是8899,为啥要用80启动呢

说明配置文件中只有一个配置监听的地方,但是已经改为8899

说明启动的配置文件只有这一个,百思不得其解,哪里出了问题了,解决了一天没解决。
重点:我发现启动的时候,有一个提示

说明启动的时候,会从/opt/zbox/.env 这里加载信息,所以我就打开看看这个文件,执行ll -a
确实有这么个文件

bash
export ZENTAO_ENV=zbox-linux #一键安装包名称
export APACHE_HOST=127.0.0.1 #Apache服务IP
export APACHE_PORT=8899 #Apache服务端口
export MYSQL_HOST=127.0.0.1 #MySQL服务IP
export MYSQL_PORT=3306 #MySQL服务端口
export MYSQL_PASS=123456 #MySQL服务密码
export MYSQL_SOCK=/opt/zbox/tmp/mysql/mysql.sock #MySQL服务Socket
export DEFAULT_USER=nobody #默认用户
export DEFAULT_GROUP=nogroup #默认用户组
export MYSQL_SERVICE=enabled #启动MySQL服务
export CHECK_MYSQL=true #检查MySQL数据
export APACHE_SERVICE=enabled #启动Apache服务
export XXD_SERVICE=enabled #启动喧喧服务
export ROADRUNNER_SERVICE=enabled #启动roadrunner服务
export REDIS_SERVICE=enabled #启动Redis服务
export REDISCLI_AUTH=pass4Redis #Redis服务密码
export ZT_CACHE_ENABLE=true #禅道启用缓存
export ZT_CACHE_DRIVER=redis #禅道缓存驱动
export ZT_CACHE_SCOPE=private #禅道缓存作用域
export ZT_CACHE_NAMESPACE=zentao #禅道缓存命名空间
export ZT_CACHE_LIFETIME=0 #禅道缓存有效期
export ZT_REDIS_HOST=127.0.0.1 #禅道Redis服务IP
export ZT_REDIS_PORT=6379 #禅道Redis服务端口
export ZT_REDIS_PASSWORD=pass4Redis #禅道Redis服务密码
export ZT_REDIS_SERIALIZER=igbinary #禅道Redis序列化方式
export PATH=/opt/develop_tool/jdk1.8.0_251/bin:/opt/develop_tool/apache-maven-3.8.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/zbox/bin
然后我把这里的 apache 端口修改为8899,重新启动,正常了。
其实还可以通过其他的方法来解决这个问题,那就是通过命令行,在启动的时候指定apache的端口
bash
./zbox start --aport=8899
这个可以从 zbox 这个可执行文件中看出来
bash
while true; do
case "$1" in
--aport)
if ! [[ "$2" =~ ^[0-9]+$ ]] || [[ "$2" -lt 1 ]] || [[ "$2" -gt 65535 ]]; then
echo "Invalid Apache port: '$2'"
exit 1
fi
aport="$2"
shift 2
;;
--mport )
if ! [[ "$2" =~ ^[0-9]+$ ]] || [[ "$2" -lt 1 ]] || [[ "$2" -gt 65535 ]]; then
echo "Invalid MySQL port: '$2'"
exit 1
fi
mport="$2"
shift 2
;;
--rport )
if ! [[ "$2" =~ ^[0-9]+$ ]] || [[ "$2" -lt 1 ]] || [[ "$2" -gt 65535 ]]; then
echo "Invalid Redis port: '$2'"
exit 1
fi
rport="$2"
shift 2
;;
--)
shift
break
;;
*)
echo "Invalid option: '$1'"
可以看到可以通过 --aport 来指定apache的端口,--mport 来指定mysql的端口,--rport 来指定redis的端口