Initial YakPanel commit
This commit is contained in:
239
script/webserver-ctl.sh
Normal file
239
script/webserver-ctl.sh
Normal file
@@ -0,0 +1,239 @@
|
||||
#!/bin/bash
|
||||
action=$1
|
||||
panel_path="/www/server/panel" # 面板路径
|
||||
webserver_bin="$panel_path/webserver/sbin/webserver" # nginx二进制文件
|
||||
webserver_conf="$panel_path/webserver/conf/webserver.conf" # nginx配置文件
|
||||
webserver_pid="$panel_path/webserver/logs/webserver.pid" # nginx pid文件
|
||||
|
||||
|
||||
PID=0
|
||||
|
||||
|
||||
|
||||
get_pid() {
|
||||
if [ ! -f "$webserver_pid" ]; then
|
||||
PID=0
|
||||
else
|
||||
PID=$(cat $webserver_pid)
|
||||
if [ "$PID" == "" ]; then
|
||||
PID=0
|
||||
else
|
||||
PID=$(ps aux | grep "$PID" | grep -v grep | awk '{print $2}')
|
||||
PID_11=$(ps aux | grep "$webserver_bin" | grep -v grep | awk '{print $2}')
|
||||
if [ "$PID" != "$PID_11" ]; then
|
||||
PID=0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
PID=$(ps aux | grep "$webserver_bin" | grep -v grep | awk '{print $2}')
|
||||
if [ -z "$PID" ]; then
|
||||
PID=0
|
||||
else
|
||||
PID="$PID"
|
||||
fi
|
||||
|
||||
if [ -z "$PID" ]; then
|
||||
PID=0
|
||||
fi
|
||||
}
|
||||
|
||||
validate_server_files() {
|
||||
if [ ! -f "$webserver_conf" ]; then
|
||||
echo "YakPanel web server configuration not found: $webserver_conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$webserver_bin" ]; then
|
||||
echo "YakPanel web server binary not found: $webserver_bin"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
start() {
|
||||
validate_server_files
|
||||
get_pid
|
||||
|
||||
if [ $PID -gt 0 ]; then
|
||||
echo "YakPanel web server is already running with PID ($PID)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -n "Starting YakPanel web server..."
|
||||
if [ -f "$webserver_pid" ]; then
|
||||
rm -f $webserver_pid
|
||||
fi
|
||||
chmod 700 $webserver_bin
|
||||
$webserver_bin -c $webserver_conf
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to start YakPanel web server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo " Started"
|
||||
}
|
||||
|
||||
stop() {
|
||||
validate_server_files
|
||||
get_pid
|
||||
if [ $PID -eq 0 ]; then
|
||||
echo "YakPanel web server is not running"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -n "Stopping YakPanel web server..."
|
||||
$webserver_bin -c $webserver_conf -s stop
|
||||
|
||||
pids=$(lsof -c webserver|grep LISTEN|awk '{print $2}'|sort -u)
|
||||
for pid in $pids; do
|
||||
kill -9 $pid
|
||||
done
|
||||
|
||||
pids=$(ps aux | grep "$webserver_bin" | grep -v grep | awk '{print $2}')
|
||||
for pid in $pids; do
|
||||
kill -9 $pid
|
||||
child_process=1
|
||||
done
|
||||
if [ "$child_process" = 1 ]; then
|
||||
if [ -f /www/server/panel/data/port.pl ]; then
|
||||
kill -9 $(lsof -t -i:$(cat /www/server/panel/data/port.pl) -sTCP:LISTEN)
|
||||
fi
|
||||
fi
|
||||
|
||||
echo " Stopped"
|
||||
}
|
||||
|
||||
restart() {
|
||||
validate_server_files
|
||||
get_pid
|
||||
echo -n "Restarting YakPanel web server..."
|
||||
if [ $PID -eq 0 ]; then
|
||||
$webserver_bin -c $webserver_conf
|
||||
else
|
||||
$webserver_bin -c $webserver_conf -s reopen
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to restart YakPanel web server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo " Restarted"
|
||||
}
|
||||
|
||||
status() {
|
||||
validate_server_files
|
||||
get_pid
|
||||
if [ $PID -eq 0 ]; then
|
||||
echo "YakPanel web server is not running"
|
||||
else
|
||||
cmdline=/proc/$PID/cmdline
|
||||
if [ ! -f $cmdline ]; then
|
||||
echo "YakPanel web server is not running"
|
||||
rm -f $webserver_pid
|
||||
exit 1
|
||||
fi
|
||||
echo "YakPanel web server is running with PID ($PID)"
|
||||
fi
|
||||
}
|
||||
|
||||
reload() {
|
||||
validate_server_files
|
||||
get_pid
|
||||
if [ $PID -eq 0 ]; then
|
||||
echo "YakPanel web server is not running"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -n "Reloading YakPanel web server..."
|
||||
$webserver_bin -c $webserver_conf -s reload
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to reload YakPanel web server"
|
||||
exit 1
|
||||
fi
|
||||
echo " Reloaded"
|
||||
}
|
||||
|
||||
configtest() {
|
||||
validate_server_files
|
||||
# 检查配置文件正确性,检查程序自动输出检查结果
|
||||
$webserver_bin -c $webserver_conf -t
|
||||
|
||||
}
|
||||
|
||||
download() {
|
||||
tip_file=$panel_path/data/download.pl
|
||||
if [ -f $tip_file ]; then
|
||||
echo "YakPanel web server binary has been downloaded"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 标记已下载
|
||||
echo "1" > $tip_file
|
||||
|
||||
# 获取machine
|
||||
machine=$(uname -m)
|
||||
zip_file=$panel_path/data/webserver-$machine.zip
|
||||
wget -O $zip_file https://node.yakpanel.com/webserver/webserver-$machine.zip
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to download YakPanel web server binary"
|
||||
rm -f $zip_file
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 验证文件hash
|
||||
hash256=$(sha256sum $zip_file | awk '{print $1}')
|
||||
cloud_hash256=$(wget -q -O - https://node.yakpanel.com/webserver/webserver-$machine.txt)
|
||||
if [ "$hash256" != "$cloud_hash256" ]; then
|
||||
echo "Failed to verify YakPanel web server binary"
|
||||
rm -f $zip_file
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 解压文件
|
||||
unzip -o $zip_file -d $panel_path/
|
||||
if [ ! -f $webserver_bin ]; then
|
||||
echo "Failed to extract YakPanel web server binary"
|
||||
rm -f $zip_file
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 删除临时文件
|
||||
rm -f $zip_file
|
||||
# 设置权限
|
||||
chmod 700 $webserver_bin
|
||||
echo "YakPanel web server binary has been downloaded"
|
||||
bash /www/server/panel/init.sh reload
|
||||
}
|
||||
|
||||
|
||||
case "$action" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
reload)
|
||||
reload
|
||||
;;
|
||||
configtest)
|
||||
configtest
|
||||
;;
|
||||
test)
|
||||
configtest
|
||||
;;
|
||||
download)
|
||||
download
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|status|reload|configtest|test|download}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user