宝塔面板环境安装 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。
正文
假设你已经
- 创建了一个站点;
- 同时创建了数据库。
在开始安装之前,你还需要做以下几件事:
- 确保你的 PHP 版本在 5.5——7.4 之间;
- 安装了 PHP 的 fileinfo 和 opcache 扩展;
- PHP 的 error_reporting 设为 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING,cgi.fix_pathinfo 设为开启;
- 删除了 PHP 的 passthru, exec, putenv 禁用函数;
- 把 edusoho 文件夹里面的 所有 内容放到了站点根目录;
- 请在“网站设置——域名设置——网站目录”选择运行目录为 /web;
- 把系统盘 /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 白名单,否则,添加课时视频时会被防火墙拦截而无法保存。