版本和环境:
- Debian 8
- ss-panel v4
- lnmp 1.4
ss-panel v4 魔改版改动不大,可直接套用 sspanel v3 魔改版的教程。详细的搭建过程见参考资料,本文主要记录各种教程没提到的问题和解决方法。
网站报错 ERROR 500
起因是PHP基于 open_basedir
设置,来限制 PHP 程序跨目录访问的安全策略,其使用 .user.ini 文件和 nginx
来配合(作用和 .htaccess 文件相同,这个是基于 Apache httpd 服务器)。
lnmp1.4
一键安装对其配置是存在于/usr/local/nginx/conf/fastcgi.conf
文件fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
,个人感觉这个设计有点别扭,这个配置对所有站点都写死了不灵活。
对于详细错误的解释:由于我们在站点配置文件(/usr/local/nginx/conf/vhost/{WEB_SITE}.conf
),网站根目录配置 root /home/wwwroot/{WEB_SITE_NAME};
这一行进行修改(修改成了 root /home/wwwroot/{WEB_SITE_NAME}\public;
),因此 open_basedir=$document_root/...
中 $document_root
指的是网站的 public
目录,而非 /home/wwwroot/{WEB_SITE_NAME}
,在读取 bootstrap.php
文件(而该文件正好位于 /home/wwwroot/{WEB_SITE_NAME}
目录下,在 public
目录上一层)时出错,受跨目录访问安全限制。
主要有两种解决方案:
直接注释掉
fastcgi.conf
文件中的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
这一行,一棒子打死了目录访问安全策略在
fastcgi.conf
文件中,修改fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
,以test.com
为例(此域名为添加vhost时输入的域名),修改内容如下:(这样做的坏处时每次添加vhost时都需要手动添加⊙﹏⊙)
1 | /usr/local/nginx/conf/fastcgi.conf |
setuptools 版本过低
搭建后端 shadowsocks-manyuser ,安装 python 依赖时报 setuptools 版本过低的错误。
因为 Debian 的 pip 软件包太老了,用 python 官方提供的方法安装 setuptools 即可。
1 | wget https://bootstrap.pypa.io/ez_setup.py -O - | python |