HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/site_total/scripts/install.sh
#!/bin/bash

# 检查是否以root权限运行
if [ "$EUID" -ne 0 ]; then
  echo "请使用root权限运行此脚本"
  exit 1
fi

# 设置变量
SERVICE_NAME="site_total"
INSTALL_DIR="/www/server/site_total"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
chown -R root:root $INSTALL_DIR

# 检查安装目录是否存在
if [ ! -d "$INSTALL_DIR" ]; then
  echo "错误: 安装目录 $INSTALL_DIR 不存在"
  exit 1
fi

# 检查可执行文件是否存在
if [ ! -f "${INSTALL_DIR}/${SERVICE_NAME}" ]; then
  echo "错误: 可执行文件 ${INSTALL_DIR}/${SERVICE_NAME} 不存在"
  exit 1
fi

# 确保可执行文件有执行权限
chmod +x "${INSTALL_DIR}/${SERVICE_NAME}"



# 复制nginx配置文件
NGINX_VHOST_PATH="/www/server/panel/vhost/nginx"
cp -f "${INSTALL_DIR}/scripts/site_log_format.conf" "${NGINX_VHOST_PATH}/0.site_total_log_format.conf"
if [ -f "${NGINX_VHOST_PATH}/0.site_total_map.conf" ];then
  rm -f "${NGINX_VHOST_PATH}/0.site_total_map.conf"
fi


# 复制apache配置文件
APACHE_CONF_DIR="/www/server/panel/vhost/apache"
cp -f "${INSTALL_DIR}/scripts/apache_log_format.conf" "${APACHE_CONF_DIR}/0.site_total_log_format.conf"
if [ -f "${APACHE_CONF_DIR}/0.site_total_cookie.conf" ];then
  rm -f "${APACHE_CONF_DIR}/0.site_total_cookie.conf"
fi

# 复制systemd服务文件
cp "${SCRIPT_DIR}/site_total.service" "$SERVICE_FILE"
if [ $? -ne 0 ]; then
  # lsattr 检查 /etc/systemd是否有i属性
  lsattr -d /etc/systemd|grep i >/dev/null 2>&1
  if [ $? -eq 0 ]; then
    echo "检测到 /etc/systemd 目录被加锁,正在解锁..."
    chattr -R -i /etc/systemd
    cp "${SCRIPT_DIR}/site_total.service" "$SERVICE_FILE"
    if [ $? -ne 0 ]; then
      echo "错误: 无法复制服务文件到 $SERVICE_FILE,即使解锁后仍然失败"
      exit 1
    fi
    chmod 644 "$SERVICE_FILE"
    systemctl daemon-reload
    systemctl enable "$SERVICE_NAME"

    # 再次加锁 /etc/systemd 目录
    chattr -R +i /etc/systemd &> /dev/null
  else
    echo "错误: 无法复制服务文件到 $SERVICE_FILE"
    exit 1
  fi
fi

# 设置正确的权限
chmod 644 "$SERVICE_FILE"


# 重新加载systemd配置
systemctl daemon-reload

# 启用并启动服务
systemctl enable "$SERVICE_NAME"
systemctl stop "$SERVICE_NAME"
systemctl start "$SERVICE_NAME"

# 检查服务状态
echo "服务安装完成,当前状态:"
sleep 2
systemctl status "$SERVICE_NAME"

echo "
使用以下命令管理服务:
启动: systemctl start $SERVICE_NAME
停止: systemctl stop $SERVICE_NAME
重启: systemctl restart $SERVICE_NAME
查看状态: systemctl status $SERVICE_NAME
查看日志: journalctl -u $SERVICE_NAME
"