diff --git a/build.sh b/build.sh index be79d08..a0b33e9 100644 --- a/build.sh +++ b/build.sh @@ -5,7 +5,7 @@ # # id : AL1009 # -# Last modified: 2021-04-07 21:45 +# Last modified: 2021-04-12 21:18 # # Filename: build.sh # @@ -35,7 +35,6 @@ function echo_done() { } function get_db_config() { - cwd=$(pwd) key=$1 value=$(sed -n '/database/,/domain/p' "${CONFIG_FILE}" |awk -F : /^[[:space:]]*${key}/'{print $2}') @@ -81,7 +80,7 @@ EOF function check_soft { local _soft_name=$1 command -v ${_soft_name} > /dev/null || { - echo_red "请安装 ${_soft_name} 后再执行本脚本安装ferry。" + echo_red "请安装 ${_soft_name} 后再执行本脚本安装ferry。" exit 1 } } @@ -123,14 +122,20 @@ function mk_ferry_dir { } function test_mysql_connect() { - host=$1 - port=$2 - user=$3 - password=$4 - db=$5 - command="CREATE TABLE IF NOT EXISTS test(id INT); DROP TABLE test;" - echo_green "\n>>> $(gettext '拉取mysql docker 镜像如果是首次需要耗时,请稍等...')" - docker run -it --rm mysql:5 mysql -h${host} -P${port} -u${user} -p${password} ${db} -e "${command}" 2>/dev/null + host=$1 + port=$2 + user=$3 + password=$4 + db=$5 + sql_command="CREATE TABLE IF NOT EXISTS test(id INT); DROP TABLE test;" + command -v mysql > /dev/null + if [ "$?" -eq 0 ];then + mysql -h${host} -P${port} -u${user} -p${password} ${db} -e "${sql_command}" 2>/dev/null + else + [ "${host}" == "127.0.0.1" ] && return 0 + echo_green "\n>>> $(gettext '拉取mysql docker 镜像如果是首次需要耗时,请稍等...')" + docker run -it --rm mysql:5 mysql -h${host} -P${port} -u${user} -p${password} ${db} -e "${sql_command}" 2>/dev/null + fi } function init(){ @@ -148,41 +153,53 @@ function init(){ if [ -f "${BASE_DIR}/build/config/settings.yml" ];then CONFIG_FILE=${BASE_DIR}/build/config/settings.yml else - echo_red "配置文件 ${BASE_DIR}/build/config/settings.yml 不存在,请检查。" + echo_red "配置文件: ${BASE_DIR}/build/config/settings.yml 不存在,请检查。" exit 1 fi - echo_done +} +function set_external_redis() { + redis_host=$(awk --re-interval '/url: redis/{match($0,/([0-9]{1,3}\.){3}[0-9]{1,3}/,a); print a[0]}' ${CONFIG_FILE}) + read_from_input redis_host "$(gettext 'Please enter Redis server IP')" "" "${redis_host}" + + redis_port=$(awk -F : '/url: redis/{print $NF}' ${CONFIG_FILE}) + read_from_input redis_port "$(gettext 'Please enter Redis server port')" "" "${redis_port}" + + redis_pass=$(awk -F '/' '/url: redis/{if($0~"@")print $3}' ${CONFIG_FILE} |cut -f 1 -d '@') + read_from_input mysql_pass "$(gettext 'Please enter Redis password, 密码里面不能带@ /, 密码为空请务必修改配置文件!!')" "" "${redis_pass}" + + # 设置redis账号密码到配置文件 + sed -i "s/url: redis:\/\/.*/url: redis:\/\/${redis_pass}@${redis_host}:${redis_port}/g" ${CONFIG_FILE} } function set_external_mysql() { - mysql_host=$(get_db_config host) - read_from_input mysql_host "$(gettext 'Please enter MySQL server IP')" "" "${mysql_host}" + mysql_host=$(get_db_config host) + read_from_input mysql_host "$(gettext 'Please enter MySQL server IP')" "" "${mysql_host}" - mysql_port=$(get_db_config port) - read_from_input mysql_port "$(gettext 'Please enter MySQL server port')" "" "${mysql_port}" + mysql_port=$(get_db_config port) + read_from_input mysql_port "$(gettext 'Please enter MySQL server port')" "" "${mysql_port}" - mysql_db=$(get_db_config name) - read_from_input mysql_db "$(gettext 'Please enter MySQL database name')" "" "${mysql_db}" + mysql_db=$(get_db_config name) + read_from_input mysql_db "$(gettext 'Please enter MySQL database name')" "" "${mysql_db}" - mysql_user=$(get_db_config username) - read_from_input mysql_user "$(gettext 'Please enter MySQL username')" "" "${mysql_user}" + mysql_user=$(get_db_config username) + read_from_input mysql_user "$(gettext 'Please enter MySQL username')" "" "${mysql_user}" - mysql_pass=$(get_db_config password) - read_from_input mysql_pass "$(gettext 'Please enter MySQL password')" "" "${mysql_pass}" + mysql_pass=$(get_db_config password) + read_from_input mysql_pass "$(gettext 'Please enter MySQL password')" "" "${mysql_pass}" - test_mysql_connect ${mysql_host} ${mysql_port} ${mysql_user} ${mysql_pass} ${mysql_db} - if [[ "$?" != "0" ]]; then - echo_red "测试连接数据库失败, 请重新设置" - echo - set_external_mysql - fi + test_mysql_connect ${mysql_host} ${mysql_port} ${mysql_user} ${mysql_pass} ${mysql_db} + if [[ "$?" != "0" ]]; then + echo_red "测试连接数据库失败, 请重新设置" + echo + set_external_mysql + fi - set_db_config "host" ${mysql_host} - set_db_config "port" ${mysql_port} - set_db_config "username" ${mysql_user} - set_db_config "password" ${mysql_pass} - set_db_config "name" ${mysql_db} + set_db_config "host" ${mysql_host} + set_db_config "port" ${mysql_port} + set_db_config "username" ${mysql_user} + set_db_config "password" ${mysql_pass} + set_db_config "name" ${mysql_db} } function config_mysql { @@ -197,8 +214,20 @@ function config_mysql { fi } +function config_redis { + echo_green "\n>>> $(gettext '回车前请确保你已经安装了Redis,且启动服务')" + read_from_input confirm "$(gettext 'Do you have been installed Redis')?" "y/n" "y" + + if [[ "${confirm}" == "y" ]]; then + set_external_redis + else + echo_red "未安装Redis结束此次编译" + exit 1 + fi +} + function get_variables { - read_from_input front_url "$(gettext '请输入您的程序访问地址: ')" "" "https://fdevops.com:8001" + read_from_input front_url "$(gettext '请输入您的程序访问地址: ')" "" "https://127.0.0.1:8002" read_from_input front_clone_from "$(gettext '请选择从哪里拉取前端代码,默认是gitee: 1:gitee, 2: github, 3:自定义地址')" "" "1" if [ $front_clone_from == 1 ]; then @@ -210,15 +239,23 @@ function get_variables { fi config_mysql - read_from_input confirm "$(gettext '请确认是否创建配置文件中的redis库')?" "y/n[y]" "y" - if [[ "${confirm}" != "y" ]]; then - echo_red "结束此次编译" - exit 1 - fi + config_redis echo_done } +function config_front { + echo_green "\n>>> $(gettext '替换程序访问地址...')" + cat > ${BASE_DIR}/ferry_web/.env.production << EOF +# just a flag +ENV = 'production' + +# base api +VUE_APP_BASE_API = '$front_url' +EOF + +} + function install_front { echo_green "\n>>> $(gettext '开始拉取前端程序...')" read_from_input confirm "$(gettext '此处会执行 rm -rf ./ferry_web 的命令,若此命令不会造成当前环境的损伤则请继续')?" "y/n[y]" "y" @@ -238,7 +275,7 @@ function install_front { echo_red "克隆代码失败,请检查git地址: ${ui_address}或者网络质量" exit 1 fi - + config_front echo_green "\n>>> $(gettext '开始安装前端依赖...')" cnpm_base_dir=$(dirname $(dirname $(which npm))) npm install -g cnpm --registry=https://registry.npm.taobao.org --prefix ${cnpm_base_dir} @@ -246,19 +283,6 @@ function install_front { } -function config_front { - echo_green "\n>>> $(gettext '替换程序访问地址...')" - cat > ${BASE_DIR}/ferry_web/.env.production << EOF -# just a flag -ENV = 'production' - -# base api -VUE_APP_BASE_API = '$front_url' -EOF - -} - - function install_backend { echo_green "\n>>> $(gettext '开始编译后端程序...')" @@ -282,7 +306,7 @@ function install_backend { fi cp -r ${BASE_DIR}/ferry ${BASE_DIR}/build/ cd ${BASE_DIR}/build - ${BASE_DIR}/ferry init -c=config/settings.yml + ${BASE_DIR}/build/ferry init -c=config/settings.yml cd - &>/dev/null } @@ -291,13 +315,12 @@ function install_app() { init get_variables install_front - config_front install_backend } function start_backend { cd ${BASE_DIR}/build - ${BASE_DIR}/ferry server -c=config/settings.yml + ./ferry server -c=config/settings.yml } function main { diff --git a/config/settings.yml b/config/settings.yml index 0d9fe38..f9df756 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -53,7 +53,7 @@ settings: maxsize: 10240 path: ./logs/ferry.log redis: - url: redis://ferry123456@127.0.0.1:6379 + url: redis://127.0.0.1:6379 ssl: key: keystring pem: temp/pem.pem