首页
Search
1
ikuai安装教程
27 阅读
2
Linux下python3运行环境快速安装教程
22 阅读
3
openresty宝塔一键安装opencc插件
20 阅读
4
使用FlareSolverr绕过cloudflare5秒盾
11 阅读
5
haproxy批量端口转发设置
5 阅读
默认分类
登录
Search
标签搜索
ikuai
vps
vpn
aliyun
腾讯云
Anaconda
python
haproxy
端口转发
nginx
openresty
opencc
go安装
ubunt
linux
debian
windows
golang
Typecho
累计撰写
8
篇文章
累计收到
0
条评论
首页
栏目
默认分类
页面
搜索到
1
篇与
的结果
2025-03-21
openresty宝塔一键安装opencc插件
先安装宝塔,再用编译模式安装openresty再执行以下一键脚本即可完成opencc的安装#!/bin/bash # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' # 无颜色 # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 检查命令执行结果 check_result() { if [ $? -ne 0 ]; then log_error "$1" exit 1 else log_info "$2" fi } # 检测操作系统类型和版本 detect_os() { if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID VERSION_ID=$VERSION_ID log_info "检测到操作系统: $OS $VERSION_ID" else log_error "无法检测操作系统类型" exit 1 fi # 检查支持的操作系统 case "$OS" in "centos"|"rhel"|"almalinux"|"rocky") if [[ "$VERSION_ID" =~ ^[789].*$ ]]; then PACKAGE_MANAGER="yum" else log_error "不支持的 $OS 版本: $VERSION_ID (需要 7/8/9)" exit 1 fi ;; "debian") if [[ "$VERSION_ID" =~ ^1[012].*$ ]]; then PACKAGE_MANAGER="apt-get" else log_error "不支持的 Debian 版本: $VERSION_ID (需要 10/11/12)" exit 1 fi ;; "ubuntu") PACKAGE_MANAGER="apt-get" ;; *) log_error "不支持的操作系统: $OS" exit 1 ;; esac } # 安装依赖 install_dependencies() { log_info "正在安装编译依赖..." if [ "$PACKAGE_MANAGER" = "yum" ]; then yum update -y check_result "系统更新失败" "系统更新成功" yum install -y git wget curl make gcc gcc-c++ pcre-devel openssl-devel zlib-devel cmake autoconf automake libtool perl-devel check_result "依赖安装失败" "依赖安装成功" else apt-get update check_result "系统更新失败" "系统更新成功" apt-get install -y git wget curl build-essential libpcre3-dev libssl-dev zlib1g-dev cmake autoconf automake libtool perl libperl-dev check_result "依赖安装失败" "依赖安装成功" fi } # 安装 OpenCC 1.1.8 install_opencc() { log_info "开始安装 OpenCC 1.1.8..." cd /tmp wget https://github.com/BYVoid/OpenCC/archive/refs/tags/ver.1.1.8.tar.gz -O opencc-1.1.8.tar.gz check_result "下载 OpenCC 失败" "OpenCC 源码下载成功" tar xf opencc-1.1.8.tar.gz check_result "解压 OpenCC 失败" "OpenCC 源码解压成功" cd OpenCC-ver.1.1.8 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=ON -DENABLE_DOXYGEN_DOC=OFF .. check_result "OpenCC 配置失败" "OpenCC 配置成功" make -j$(nproc) check_result "OpenCC 编译失败" "OpenCC 编译成功" make install check_result "OpenCC 安装失败" "OpenCC 1.1.8 安装成功" ldconfig log_info "OpenCC 1.1.8 库已添加到系统路径" } # 安装最新版 LuaJIT install_luajit() { log_info "开始安装最新版 LuaJIT..." cd /tmp git clone https://github.com/LuaJIT/LuaJIT.git check_result "克隆 LuaJIT 仓库失败" "LuaJIT 仓库克隆成功" cd LuaJIT make -j$(nproc) check_result "LuaJIT 编译失败" "LuaJIT 编译成功" make install PREFIX=/usr/local check_result "LuaJIT 安装失败" "LuaJIT 安装成功" ln -sf /usr/local/lib/libluajit-5.1.so.2 /usr/lib/libluajit-5.1.so.2 ln -sf /usr/local/lib/libluajit-5.1.so.2 /usr/lib64/libluajit-5.1.so.2 2>/dev/null || true ldconfig log_info "LuaJIT 库已添加到系统路径" } # 下载并编译 OpenResty download_and_compile_openresty() { log_info "开始下载和编译 OpenResty..." # 获取最新稳定版 OpenResty 版本 LATEST_VERSION=$(curl -s https://openresty.org/en/download.html | grep -o "openresty-[0-9.]*\.tar\.gz" | head -1 | sed 's/openresty-//;s/\.tar\.gz//') if [ -z "$LATEST_VERSION" ]; then LATEST_VERSION="1.21.4.2" # 默认版本,以防无法获取最新版本 log_warn "无法获取最新 OpenResty 版本,将使用默认版本: $LATEST_VERSION" else log_info "获取到最新 OpenResty 版本: $LATEST_VERSION" fi cd /tmp wget "https://openresty.org/download/openresty-$LATEST_VERSION.tar.gz" check_result "下载 OpenResty 失败" "OpenResty 源码下载成功" tar xf "openresty-$LATEST_VERSION.tar.gz" check_result "解压 OpenResty 失败" "OpenResty 源码解压成功" cd "openresty-$LATEST_VERSION" # 配置 OpenResty,增加 OpenCC 和 LuaJIT 支持 ./configure \ --prefix=/www/server/openresty \ --with-luajit=/usr/local \ --with-cc-opt="-I/usr/local/include" \ --with-ld-opt="-Wl,-rpath,/usr/local/lib" \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_stub_status_module check_result "OpenResty 配置失败" "OpenResty 配置成功" make -j$(nproc) check_result "OpenResty 编译失败" "OpenResty 编译成功" # 如果已安装 OpenResty 或 Nginx,先停止 if [ -f "/www/server/nginx/sbin/nginx" ]; then log_info "检测到已安装 Nginx,准备停止服务..." /etc/init.d/nginx stop 2>/dev/null || true fi if [ -f "/www/server/openresty/nginx/sbin/nginx" ]; then log_info "检测到已安装 OpenResty,准备停止服务..." /etc/init.d/openresty stop 2>/dev/null || true fi # 如果存在旧的 Nginx 目录,备份 if [ -d "/www/server/nginx" ]; then log_info "备份现有 Nginx 目录..." mv /www/server/nginx /www/server/nginx.bak.$(date +%Y%m%d%H%M%S) fi # 如果存在旧的 OpenResty 目录,备份 if [ -d "/www/server/openresty" ]; then log_info "备份现有 OpenResty 目录..." mv /www/server/openresty /www/server/openresty.bak.$(date +%Y%m%d%H%M%S) fi make install check_result "OpenResty 安装失败" "OpenResty 安装成功" # 创建从 OpenResty 到 Nginx 的符号链接 ln -sf /www/server/openresty/nginx /www/server/nginx check_result "创建 Nginx 符号链接失败" "创建 Nginx 符号链接成功" # 如果有旧的配置,复制回来 if [ -d "/www/server/nginx.bak.*/conf" ]; then LATEST_BACKUP=$(ls -td /www/server/nginx.bak.* | head -1) log_info "从备份 $LATEST_BACKUP 恢复 Nginx 配置..." cp -rf $LATEST_BACKUP/conf/* /www/server/nginx/conf/ check_result "恢复 Nginx 配置失败" "恢复 Nginx 配置成功" fi # 创建启动脚本 cat > /etc/init.d/nginx << 'EOL' #!/bin/bash # chkconfig: 2345 55 25 # description: Nginx Service Control Script # processname: nginx PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NGINX_PATH=/www/server/nginx case "$1" in start) echo -n "Starting Nginx... " $NGINX_PATH/sbin/nginx echo "done" ;; stop) echo -n "Stopping Nginx... " $NGINX_PATH/sbin/nginx -s stop echo "done" ;; restart) echo -n "Restarting Nginx... " $NGINX_PATH/sbin/nginx -s stop sleep 1 $NGINX_PATH/sbin/nginx echo "done" ;; reload) echo -n "Reloading Nginx configuration... " $NGINX_PATH/sbin/nginx -s reload echo "done" ;; status) if pidof nginx > /dev/null; then echo "Nginx is running" else echo "Nginx is not running" exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" exit 1 ;; esac exit 0 EOL chmod +x /etc/init.d/nginx # 创建 OpenResty 的启动脚本链接 ln -sf /etc/init.d/nginx /etc/init.d/openresty # 设置开机启动 if [ "$PACKAGE_MANAGER" = "yum" ]; then chkconfig --add nginx chkconfig nginx on else update-rc.d nginx defaults fi # 启动 Nginx 服务 /etc/init.d/nginx start check_result "启动 Nginx 服务失败" "启动 Nginx 服务成功" log_info "OpenResty 已安装并配置为 Nginx 服务" } # 主函数 main() { log_info "开始执行 OpenResty 环境配置脚本..." # 检查是否具有 root 权限 if [ "$(id -u)" != "0" ]; then log_error "此脚本需要 root 权限执行" exit 1 fi # 检查宝塔面板是否已安装 if [ ! -d "/www/server/panel" ]; then log_warn "未检测到宝塔面板,将继续执行但某些功能可能受限" fi # 执行安装流程 detect_os install_dependencies install_opencc install_luajit download_and_compile_openresty log_info "======================================" log_info "安装完成! OpenResty 已配置以下组件:" log_info "- OpenCC 1.1.8" log_info "- 最新版 LuaJIT" log_info "- OpenResty 已安装到 /www/server/openresty" log_info "- Nginx 符号链接已创建在 /www/server/nginx" log_info "======================================" log_info "您可以使用以下命令控制服务:" log_info "- 启动: /etc/init.d/nginx start" log_info "- 停止: /etc/init.d/nginx stop" log_info "- 重启: /etc/init.d/nginx restart" log_info "- 重载配置: /etc/init.d/nginx reload" log_info "======================================" } # 执行主函数 main
2025年03月21日
20 阅读
0 评论
0 点赞