宝塔面板环境安装 EduSoho 的配置范例

写在前面

以下操作均以 CentOS 7.x 为例。

挂载磁盘:
yum install wget -y && wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && bash auto_disk.sh
升级系统:
yum update -y
安装宝塔:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
登录宝塔搭建环境并创建站点:

参见以下链接:http://docs.bt.cn
环境软件推荐 Nginx 最新版 或者 Apache 2.4 二选一,MySQL 8.0,PHP 7.4,phpMyAdmin 5.0。

正文

假设你已经

  1. 创建了一个站点;
  2. 同时创建了数据库。

在开始安装之前,你还需要做以下几件事:

  1. 确保你的 PHP 版本在 5.5——7.4 之间;
  2. 安装了 PHP 的 fileinfo 和 opcache 扩展;
  3. PHP 的 error_reporting 设为 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING,cgi.fix_pathinfo 设为开启;
  4. 删除了 PHP 的 passthru, exec, putenv 禁用函数;
  5. 把 edusoho 文件夹里面的 所有 内容放到了站点根目录;
  6. 请在“网站设置——域名设置——网站目录”选择运行目录为 /web;
  7. 把系统盘 /var/spool/cron 目录权限设置为 777。

使用 LAMP 环境的同学,看到这里就可以直接安装了。

使用 LNMP 的同学,做完以上步骤后,还需要打开“站点设置——伪静态”,选择 EduSoho 并保存。

访问您的网站,根据页面提示填写信息,即可安装 EduSoho。

以下内容仅供技术人员参考

下面是 LNMP 环境下 EduSoho 的伪静态配置文件:
location / { 
    index app.php; 
    try_files $uri @rewriteapp; 
} 
        
location @rewriteapp { 
    rewrite ^(.*)$ /app.php/$1 last; 
}

另外,对于 Nginx 环境,官方的标准配置还包括以下内容。查阅相关资料发现,以下内容的作用,主要是设定 /udisk 的根目录,设定 PHP 运行方式并使用 Nginx 的 fastcgi_split_path_info 来实现 PATH_INFO 功能,以代替 PHP 的 cgi.fix_pathinfo,消除脚本注入安全隐患。使用时需要作如下修改:

  • yourdomain.com 替换为自己的域名;
  • php-cgi-xx.sock 中的 xx 用实际安装的 PHP 版本号代替,不带小数点。
location ~ ^/udisk { 
    internal; 
    root /www/wwwroot/yourdomain.com/app/data/; 
} 
        
location ~ ^/(app|app_dev)\.php(/|$) { 
    fastcgi_pass unix:/tmp/php-cgi-xx.sock;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;  
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
    fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect; 
    fastcgi_param HTTP_X-Accel-Mapping /udisk=/www/wwwroot/yourdomain.com/app/data/udisk; 
    fastcgi_busy_buffers_size 128k; 
    fastcgi_temp_file_write_size 128k; 
    fastcgi_buffer_size 128k; 
    fastcgi_buffers 8 128k; 
} 
        
location ~ ^/files/.*\.php$ {
     deny all;
}
        
location ~ \.php$ { 
    fastcgi_pass unix:/tmp/php-cgi-xx.sock;
    fastcgi_split_path_info ^(.+\.php)(/.*)$; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
}

跟宝塔开发者讨论了一下,上面追加的这堆配置,大多数宝塔都已经默认包含在 enable-php-xx.conf 中了,也已经解决了注入隐患,所以并无必要全部追加,只要保留下面几条就可以了:

yourdomain.com 替换为自己的域名。
#EDUSOHO_START EduSoho 追加配置
location ~ ^/udisk { 
    internal; 
    root /www/wwwroot/yourdomain.com/app/data/; 
} 

location ~  ^/(app|app_dev)\.php(/|$) { 
    fastcgi_param HTTP_X-Accel-Mapping /udisk=/www/wwwroot/yourdomain.com/app/data/udisk; 
}

location ~ ^/files/.*\.php$ {
     return 404;
}
#EDUSOHO_END

参考资料

https://www.qiqiuyu.com/course/20/task/1598/show
https://amh.sh/bbs/forum.php?mod=viewthread&tid=8195&page=1#45795
https://snowstar.org/2017/12/11/nginx-with-php-and-path-info/

备注

使用宝塔防火墙的用户注意,如果网校视频保存在优酷或腾讯视频,添加通用分享代码时请关闭宝塔防火墙,或将 ^/media/course/ 添加到防火墙 URL 白名单,否则,添加课时视频时会被防火墙拦截而无法保存。

本文链接:

https://dev.euyyue.com/note/366.html
1 + 8 =
快来做第一个评论的人吧~