lede/package/lean/luci-app-kodexplorer/root/etc/init.d/kodexplorer
Beginner 9cfbc21464
luci-app-kodexplorer: update php8 deps (#8445)
deps update to php8 and nginx-ssl

Co-authored-by: Tianling Shen <cnsztl@immortalwrt.org>
2021-12-18 10:50:04 +08:00

172 lines
4.3 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# Copyright (C) 2018-2020 Lienol <lawlienol@gmail.com>
START=99
CONFIG="kodexplorer"
TEMP_PATH="/var/etc/kodexplorer"
NGINX_CONFIG="$TEMP_PATH/nginx.conf"
PHP_FPM_CONFIG="$TEMP_PATH/php-fpm.conf"
PHP_CONFIG="/etc/php.ini"
PHP_BACKUP_CONFIG="/etc/php.ini.backup"
config_t_get() {
local index=0
[ -n "$4" ] && index=$4
local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
echo ${ret:=$3}
}
gen_nginx_config() {
port=$(config_t_get global port)
project_directory=$(config_t_get global project_directory)
cat <<-EOF > $1
user root root;
worker_processes 1;
pid /var/run/nginx_kodexplorer.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
sendfile on;
keepalive_timeout 65;
server {
listen $port;
listen [::]:$port;
server_name localhost;
location / {
root $project_directory;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php(.*)$ {
root $project_directory;
try_files \$uri = 404; # PHP 文件不存在返回404
fastcgi_pass unix:/var/run/php8-fpm.sock; # 通过 Unix 套接字执行 PHP
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; # 修复 Nginx fastcgi 漏洞
fastcgi_param PATH_INFO \$fastcgi_path_info;
include /etc/nginx/fastcgi_params;
}
}
}
EOF
}
gen_php_config() {
storage_device_path=$(config_t_get global storage_device_path)
memory_limit=$(config_t_get global memory_limit)
post_max_size=$(config_t_get global post_max_size)
upload_max_filesize=$(config_t_get global upload_max_filesize)
cp $PHP_CONFIG $PHP_BACKUP_CONFIG
cat <<-EOF >$PHP_CONFIG
[PHP]
zend.ze1_compatibility_mode = Off
engine = On
precision = 12
y2k_compliance = On
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
open_basedir = $storage_device_path:/tmp/:/proc/:/usr/bin/
disable_functions =
disable_classes =
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = $memory_limit
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
variables_order = "EGPCS"
request_order = "GP"
register_globals = Off
register_long_arrays = Off
register_argc_argv = On
auto_globals_jit = On
post_max_size = $post_max_size
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
;doc_root = "/www"
user_dir =
extension_dir = "/usr/lib/php"
enable_dl = On
cgi.fix_pathinfo=1
file_uploads = On
upload_tmp_dir = "/tmp"
upload_max_filesize = $upload_max_filesize
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
EOF
cat <<-EOF >$PHP_FPM_CONFIG
[global]
pid = /var/run/kodexplorer_php8-fpm.pid
error_log = /var/log/kodexplorer_php8-fpm.log
[www]
user = root
listen = /var/run/php8-fpm.sock
listen.mode = 0666
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
EOF
}
start() {
ENABLED=$(config_t_get global enable 0)
[ "$ENABLED" = "0" ] && return 0
mkdir -p $TEMP_PATH /var/log/nginx /var/lib/nginx
gen_php_config
/usr/bin/php-fpm -R -y $PHP_FPM_CONFIG -g "/var/run/php8-fpm.pid"
gen_nginx_config $NGINX_CONFIG
/usr/sbin/nginx -c $NGINX_CONFIG >/dev/null 2>&1 &
}
stop() {
/usr/sbin/nginx -c $NGINX_CONFIG -s stop >/dev/null 2>&1 &
killall -9 php-fpm >/dev/null 2>&1 &
rm -f /var/run/kodexplorer_php8-fpm.pid
rm -f /var/log/kodexplorer_php8-fpm.log
rm -f /var/run/php8-fpm.sock
[ -f "$PHP_BACKUP_CONFIG" -a -f "$PHP_CONFIG" ] && {
rm -f $PHP_CONFIG
cp $PHP_BACKUP_CONFIG $PHP_CONFIG
rm -f $PHP_BACKUP_CONFIG
}
}
restart() {
stop
start
}