如果配置的环境还没满足要求,可以提供install.sh文件,并放置网站根目录下,一键安装程序会在网站安装完成时自动执行它。
在install.sh可以获取的信息有:
#/bin/bash
#获取用户安装时填写的域名
domain=$1
#获取nginx配置文件位置
config_file=/bctos/server/nginx/conf.d/${domain}.conf
#获取nginx伪静态配置文件位置
rewrite_file=/bctos/server/nginx/rewrite/${domain}.rewrite.conf
#获取PHP容器(PHP版本)
php=$(cat $config_file|grep ':9000'|sed 's/fastcgi_pass//'|sed 's/:9000;//'|sed 's/ //g')
#执行composer操作,如:
docker exec panel sh -c "cd /bctos/wwwroot/${domain};composer install"
#执行PHP操作(以root账号执行)
docker exec ${php} sh -c "cd /bctos/wwwroot/${domain};php think --help"
#执行PHP操作(以www-data账号执行)
docker exec ${php} sh -c "su - www-data -c 'cd /bctos/wwwroot/${domain};php think --help'"
#获取网站根目录(不包括运行目录,如public):
site_path=/bctos/wwwroot/${domain}
#或者
site_path=$(pwd)
#获取数据库容器(数据库版本)
mysql=$2
#数据库名称
db_name=$3
if [[ $mysql == 'not' ]];then
echo '没有配置数据库';
else
echo '已配置了数据库';
#获取数据库的root密码
root_pwd=$(grep 'MYSQL_ROOT_PASSWORD' /bctos/server/${mysql}/docker-compose.yml | sed -r 's/MYSQL_ROOT_PASSWORD://' | sed 's/ //g')
#执行数据库操作
docker exec -e MYSQL_PWD=$root_pwd -i ${mysql} mysql -uroot << EOF
SHOW DATABASES;
EOF
fi
#重启php(如果存在)
cd /bctos/server/${php}
docker restart ${php}
# 重启mysql(如果存在)
cd /bctos/server/${mysql}
docker restart ${mysql}
#重启nginx,默认安装完网站会自动重启
cd /bctos/server/nginx
[ -z $(docker ps --format '{{.Names}}'|grep nginx) ] && docker-compose up -d || docker restart nginx
假如你的SQL文件并不在根目录,一键安装程序无法帮你自动导入,这时就可以使用install.sh自行导入,假如你的install.sql文件路径是:public/install/install.sql
#/bin/bash
#获取用户安装时填写的域名
domain=$1
#获取数据库容器(数据库版本)
mysql=$2
#数据库名称
db_name=$3
#获取数据库的root密码
root_pwd=$(grep 'MYSQL_ROOT_PASSWORD' /bctos/server/${mysql}/docker-compose.yml | sed -r 's/MYSQL_ROOT_PASSWORD://' | sed 's/ //g')
#执行数据库导入操作
docker exec -i ${mysql} sh -c "exec mysql -uroot -p${root_pwd} ${db_name}" < public/install/install.sql
本文由小韦云原创,转载请注明出处:https://www.bctos.cn/doc/2/1928,否则追究其法律责任
关键词:install.sh