mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 03:01:12 +00:00
perf: 优化安装脚本
This commit is contained in:
parent
ac17952cd3
commit
27ff24f44e
@ -2,6 +2,13 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [0.35.23]
|
||||||
|
|
||||||
|
### Performance
|
||||||
|
|
||||||
|
- 优化消息时间格式
|
||||||
|
- 优化app功能
|
||||||
|
|
||||||
## [0.35.20]
|
## [0.35.20]
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|||||||
20
README.md
20
README.md
@ -29,7 +29,7 @@ git clone -b pro --depth=1 https://gitee.com/aipaw/dootask.git
|
|||||||
# 2、Enter directory
|
# 2、Enter directory
|
||||||
cd dootask
|
cd dootask
|
||||||
|
|
||||||
# 3、Installation(Custom port installation: ./cmd install --port 2222)
|
# 3、Installation(Custom port installation, as: ./cmd install --port 80)
|
||||||
./cmd install
|
./cmd install
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -43,7 +43,8 @@ cd dootask
|
|||||||
### Change port
|
### Change port
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./cmd port 2222
|
# This method only replaces the HTTP port. To replace the HTTPS port, please read the SSL configuration below
|
||||||
|
./cmd port 80
|
||||||
```
|
```
|
||||||
|
|
||||||
### Change App Url
|
### Change App Url
|
||||||
@ -91,7 +92,16 @@ cd dootask
|
|||||||
./cmd mysql "your command" # To run a mysql command (backup: Backup database, recovery: Restore database)
|
./cmd mysql "your command" # To run a mysql command (backup: Backup database, recovery: Restore database)
|
||||||
```
|
```
|
||||||
|
|
||||||
### NGINX PROXY SSL
|
### SSL configuration
|
||||||
|
|
||||||
|
#### Method 1: Automatic configuration
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Running commands in a project
|
||||||
|
./cmd https
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Method 2: Nginx Agent Configuration
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1、Nginx config add
|
# 1、Nginx config add
|
||||||
@ -99,8 +109,8 @@ proxy_set_header X-Forwarded-Host $http_host;
|
|||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
# 2、Running commands in a project
|
# 2、Running commands in a project (If you unconfigure the NGINX agent, run: ./cmd https close)
|
||||||
./cmd https
|
./cmd https agent
|
||||||
```
|
```
|
||||||
|
|
||||||
## Upgrade
|
## Upgrade
|
||||||
|
|||||||
20
README_CN.md
20
README_CN.md
@ -29,7 +29,7 @@ git clone -b pro --depth=1 https://gitee.com/aipaw/dootask.git
|
|||||||
# 2、进入目录
|
# 2、进入目录
|
||||||
cd dootask
|
cd dootask
|
||||||
|
|
||||||
# 3、一键安装项目(自定义端口安装 ./cmd install --port 2222)
|
# 3、一键安装项目(自定义端口安装,如:./cmd install --port 80)
|
||||||
./cmd install
|
./cmd install
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -43,7 +43,8 @@ cd dootask
|
|||||||
### 更换端口
|
### 更换端口
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./cmd port 2222
|
# 此方法仅更换http端口,更换https端口请阅读下面SSL配置
|
||||||
|
./cmd port 80
|
||||||
```
|
```
|
||||||
|
|
||||||
### 更换URL
|
### 更换URL
|
||||||
@ -92,7 +93,16 @@ cd dootask
|
|||||||
./cmd mysql "your command" # 运行 mysql 命令 (backup: 备份数据库,recovery: 还原数据库)
|
./cmd mysql "your command" # 运行 mysql 命令 (backup: 备份数据库,recovery: 还原数据库)
|
||||||
```
|
```
|
||||||
|
|
||||||
### NGINX 代理 SSL
|
### SSL 配置
|
||||||
|
|
||||||
|
#### 方式一:自动配置
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 在项目下运行命令,根据提示执行即可
|
||||||
|
./cmd https
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 方式二:Nginx 代理配置
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1、Nginx 代理配置添加
|
# 1、Nginx 代理配置添加
|
||||||
@ -100,8 +110,8 @@ proxy_set_header X-Forwarded-Host $http_host;
|
|||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
# 2、在项目下运行命令
|
# 2、在项目下运行命令(如果取消 Nginx 代理配置请运行:./cmd https close)
|
||||||
./cmd https
|
./cmd https agent
|
||||||
```
|
```
|
||||||
|
|
||||||
## 升级更新
|
## 升级更新
|
||||||
|
|||||||
169
bin/https
Normal file
169
bin/https
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#fonts color
|
||||||
|
Green="\033[32m"
|
||||||
|
Yellow="\033[33m"
|
||||||
|
Red="\033[31m"
|
||||||
|
GreenBG="\033[42;37m"
|
||||||
|
YellowBG="\033[43;37m"
|
||||||
|
RedBG="\033[41;37m"
|
||||||
|
Font="\033[0m"
|
||||||
|
|
||||||
|
#notification information
|
||||||
|
OK="${Green}[OK]${Font}"
|
||||||
|
Warn="${Yellow}[警告]${Font}"
|
||||||
|
Error="${Red}[错误]${Font}"
|
||||||
|
|
||||||
|
cd "$(
|
||||||
|
cd "$(dirname "$0")" || exit
|
||||||
|
pwd
|
||||||
|
)" || exit
|
||||||
|
|
||||||
|
#================================================================
|
||||||
|
#================================================================
|
||||||
|
|
||||||
|
success() {
|
||||||
|
echo -e "${OK} ${GreenBG}$1${Font}"
|
||||||
|
}
|
||||||
|
|
||||||
|
warning() {
|
||||||
|
echo -e "${Warn} ${YellowBG}$1${Font}"
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
echo -e "${Error} ${RedBG}$1${Font}"
|
||||||
|
}
|
||||||
|
|
||||||
|
info() {
|
||||||
|
echo -e "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
env_get() {
|
||||||
|
local key=$1
|
||||||
|
local value=`cat $(dirname "$PWD")/.env | grep "^$key=" | awk -F '=' '{print $2}'`
|
||||||
|
echo "$value"
|
||||||
|
}
|
||||||
|
|
||||||
|
env_set() {
|
||||||
|
local key=$1
|
||||||
|
local val=$2
|
||||||
|
local exist=`cat $(dirname "$PWD")/.env | grep "^$key="`
|
||||||
|
if [ -z "$exist" ]; then
|
||||||
|
echo "$key=$val" >> $(dirname "$PWD")/.env
|
||||||
|
else
|
||||||
|
sed -i "/^${key}=/c\\${key}=${val}" $(dirname "$PWD")/.env
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#================================================================
|
||||||
|
#================================================================
|
||||||
|
|
||||||
|
check() {
|
||||||
|
while [ -z "$domain" ]; do
|
||||||
|
read -rp "请输入你的域名: " domain
|
||||||
|
# 判断域名是否合法
|
||||||
|
if [ -z "$domain" ]; then
|
||||||
|
error "域名不能为空"
|
||||||
|
elif [ -z "$(echo "$domain" | grep -E '^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$')" ]; then
|
||||||
|
error "域名格式不正确"
|
||||||
|
domain=""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
success "正在域名DNS解析IP..."
|
||||||
|
local domain_ip=$(ping -c 1 "${domain}" 2>/dev/null | grep PING | cut -d "(" -f2 | cut -d ")" -f1)
|
||||||
|
local local_ip=$(curl -sk ip.sb)
|
||||||
|
info "域名DNS解析IP: ${domain_ip}"
|
||||||
|
info "本机IP: ${local_ip}"
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
if [[ "$(echo "${local_ip}" | tr '.' '+' | bc)" == "$(echo "${domain_ip}" | tr '.' '+' | bc)" ]]; then
|
||||||
|
success "域名DNS解析IP 与 本机IP 匹配"
|
||||||
|
sleep 2
|
||||||
|
else
|
||||||
|
warning "域名DNS解析IP 与 本机IP 不匹配,是否继续操作? [Y/n]"
|
||||||
|
read -r continue_next
|
||||||
|
[[ -z ${continue_next} ]] && continue_next="Y"
|
||||||
|
case $continue_next in
|
||||||
|
[yY][eE][sS] | [yY])
|
||||||
|
success "继续操作"
|
||||||
|
sleep 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error "操作终止"
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
local sitePath="$(dirname "$PWD")/docker/nginx/site"
|
||||||
|
local sslPath="$sitePath/ssl"
|
||||||
|
if [[ -f "$sslPath/$domain.key" && -f "$sslPath/$domain.crt" ]]; then
|
||||||
|
warning "$domain 证书文件已存在,是否删除并继续操作? [Y/n]"
|
||||||
|
read -r continue_install
|
||||||
|
[[ -z ${continue_install} ]] && continue_install="Y"
|
||||||
|
case $continue_install in
|
||||||
|
[yY][eE][sS] | [yY])
|
||||||
|
rm -f "$sslPath/$domain.key"
|
||||||
|
rm -f "$sslPath/$domain.crt"
|
||||||
|
success "继续操作"
|
||||||
|
sleep 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error "操作终止"
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
apk add --no-cache openssl socat
|
||||||
|
curl https://get.acme.sh | sh
|
||||||
|
if [[ 0 -ne $? ]]; then
|
||||||
|
error "安装证书生成脚本失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if /root/.acme.sh/acme.sh --issue -d "${domain}" -w "$(dirname "$PWD")/public" --standalone -k ec-256 --force --test; then
|
||||||
|
success "SSL 证书测试签发成功,开始正式签发"
|
||||||
|
rm -rf "/root/.acme.sh/${domain}_ecc"
|
||||||
|
sleep 2
|
||||||
|
else
|
||||||
|
error "SSL 证书测试签发失败"
|
||||||
|
rm -rf "root/.acme.sh/${domain}_ecc"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if /root/.acme.sh/acme.sh --issue -d "${domain}" -w "$(dirname "$PWD")/public" --server letsencrypt --standalone -k ec-256 --force; then
|
||||||
|
success "SSL 证书生成成功"
|
||||||
|
sleep 2
|
||||||
|
mkdir -p $sslPath
|
||||||
|
if /root/.acme.sh/acme.sh --installcert -d "${domain}" --fullchainpath "${sslPath}/${domain}.crt" --keypath "${sslPath}/${domain}.key" --ecc --force; then
|
||||||
|
success "SSL 证书配置成功"
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
error "SSL 证书生成失败"
|
||||||
|
rm -rf "/root/.acme.sh/${domain}_ecc"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
env_set "APP_URL" "https://${domain}"
|
||||||
|
|
||||||
|
cat >${sitePath}/ssl.conf <<EOF
|
||||||
|
server_name ${domain};
|
||||||
|
listen 443 ssl;
|
||||||
|
ssl_certificate /etc/nginx/conf.d/site/ssl/${domain}.crt;
|
||||||
|
ssl_certificate_key /etc/nginx/conf.d/site/ssl/${domain}.key;
|
||||||
|
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
|
||||||
|
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
ssl_session_cache shared:SSL:10m;
|
||||||
|
ssl_session_timeout 10m;
|
||||||
|
error_page 497 https://\$host\$request_uri;
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
check
|
||||||
|
install
|
||||||
0
version.js → bin/version.js
vendored
0
version.js → bin/version.js
vendored
68
cmd
68
cmd
@ -2,13 +2,16 @@
|
|||||||
|
|
||||||
#fonts color
|
#fonts color
|
||||||
Green="\033[32m"
|
Green="\033[32m"
|
||||||
|
Yellow="\033[33m"
|
||||||
Red="\033[31m"
|
Red="\033[31m"
|
||||||
GreenBG="\033[42;37m"
|
GreenBG="\033[42;37m"
|
||||||
|
YellowBG="\033[43;37m"
|
||||||
RedBG="\033[41;37m"
|
RedBG="\033[41;37m"
|
||||||
Font="\033[0m"
|
Font="\033[0m"
|
||||||
|
|
||||||
#notification information
|
#notification information
|
||||||
OK="${Green}[OK]${Font}"
|
OK="${Green}[OK]${Font}"
|
||||||
|
Warn="${Yellow}[警告]${Font}"
|
||||||
Error="${Red}[错误]${Font}"
|
Error="${Red}[错误]${Font}"
|
||||||
|
|
||||||
cur_path="$(pwd)"
|
cur_path="$(pwd)"
|
||||||
@ -25,6 +28,18 @@ judge() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
success() {
|
||||||
|
echo -e "${OK} ${GreenBG}$1${Font}"
|
||||||
|
}
|
||||||
|
|
||||||
|
warning() {
|
||||||
|
echo -e "${Warn} ${YellowBG}$1${Font}"
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
echo -e "${Error} ${RedBG}$1${Font}"
|
||||||
|
}
|
||||||
|
|
||||||
rand() {
|
rand() {
|
||||||
local min=$1
|
local min=$1
|
||||||
local max=$(($2-$min+1))
|
local max=$(($2-$min+1))
|
||||||
@ -201,6 +216,49 @@ run_mysql() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
https_auto() {
|
||||||
|
restart_nginx="n"
|
||||||
|
if [[ "$(env_get APP_PORT)" != "80" ]]; then
|
||||||
|
warning "HTTP服务端口不是80,是否修改并继续操作? [Y/n]"
|
||||||
|
read -r continue_http
|
||||||
|
[[ -z ${continue_http} ]] && continue_http="Y"
|
||||||
|
case $continue_http in
|
||||||
|
[yY][eE][sS] | [yY])
|
||||||
|
success "继续操作"
|
||||||
|
env_set "APP_PORT" "80"
|
||||||
|
restart_nginx="y"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error "操作终止"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [[ "$(env_get APP_SSL_PORT)" != "443" ]]; then
|
||||||
|
warning "HTTPS服务端口不是443,是否修改并继续操作? [Y/n]"
|
||||||
|
read -r continue_https
|
||||||
|
[[ -z ${continue_https} ]] && continue_https="Y"
|
||||||
|
case $continue_https in
|
||||||
|
[yY][eE][sS] | [yY])
|
||||||
|
success "继续操作"
|
||||||
|
env_set "APP_SSL_PORT" "443"
|
||||||
|
restart_nginx="y"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error "操作终止"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [[ "$restart_nginx" == "y" ]]; then
|
||||||
|
$COMPOSE up -d
|
||||||
|
fi
|
||||||
|
docker run -it --rm -v $(pwd):/work nginx:alpine sh "/work/bin/https"
|
||||||
|
if [[ 0 -eq $? ]]; then
|
||||||
|
run_exec nginx "nginx -s reload"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
env_get() {
|
env_get() {
|
||||||
local key=$1
|
local key=$1
|
||||||
local value=`cat ${cur_path}/.env | grep "^$key=" | awk -F '=' '{print $2}'`
|
local value=`cat ${cur_path}/.env | grep "^$key=" | awk -F '=' '{print $2}'`
|
||||||
@ -323,7 +381,9 @@ if [ $# -gt 0 ]; then
|
|||||||
echo -e "$res"
|
echo -e "$res"
|
||||||
elif [[ "$1" == "update" ]]; then
|
elif [[ "$1" == "update" ]]; then
|
||||||
shift 1
|
shift 1
|
||||||
run_mysql backup
|
if [[ "$@" != "nobackup" ]]; then
|
||||||
|
run_mysql backup
|
||||||
|
fi
|
||||||
if [[ -z "$(arg_get local)" ]]; then
|
if [[ -z "$(arg_get local)" ]]; then
|
||||||
git fetch --all
|
git fetch --all
|
||||||
git reset --hard origin/$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
|
git reset --hard origin/$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
|
||||||
@ -401,10 +461,12 @@ if [ $# -gt 0 ]; then
|
|||||||
echo "success"
|
echo "success"
|
||||||
elif [[ "$1" == "https" ]]; then
|
elif [[ "$1" == "https" ]]; then
|
||||||
shift 1
|
shift 1
|
||||||
if [[ "$@" == "auto" ]]; then
|
if [[ "$1" == "agent" ]] || [[ "$1" == "true" ]]; then
|
||||||
|
env_set APP_SCHEME "true"
|
||||||
|
elif [[ "$1" == "close" ]] || [[ "$1" == "auto" ]]; then
|
||||||
env_set APP_SCHEME "auto"
|
env_set APP_SCHEME "auto"
|
||||||
else
|
else
|
||||||
env_set APP_SCHEME "true"
|
https_auto
|
||||||
fi
|
fi
|
||||||
restart_php
|
restart_php
|
||||||
elif [[ "$1" == "artisan" ]]; then
|
elif [[ "$1" == "artisan" ]]; then
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit c090a967c91a2626dacfb53219d3a6445b13fe53
|
Subproject commit becf712111e3cb7ed44598bbb33220515b511921
|
||||||
Loading…
x
Reference in New Issue
Block a user