版本和环境:

  • 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 目录上一层)时出错,受跨目录访问安全限制。

主要有两种解决方案:

  1. 直接注释掉 fastcgi.conf 文件中的 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 这一行,一棒子打死了目录访问安全策略
  2. fastcgi.conf 文件中,修改 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; ,以 test.com 为例(此域名为添加vhost时输入的域名),修改内容如下:(这样做的坏处时每次添加vhost时都需要手动添加⊙﹏⊙)
/usr/local/nginx/conf/fastcgi.conf
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/test.com/:/tmp/:/proc/";

setuptools 版本过低

搭建后端 shadowsocks-manyuser ,安装 python 依赖时报 setuptools 版本过低的错误。

因为 Debian 的 pip 软件包太老了,用 python 官方提供的方法安装 setuptools 即可。

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

参考资料