Linux

解决CentOS中安装Nextcloud出现“内部服务器错误”

这个问题困扰了其他人包括我很长时间了:当我们在CentOS中安装好httpd、php,将Nextcloud程序解压进网站根目录,然后访问——

内部服务器错误

服务器发生一个内部错误并且无法完成你的请求.
如果多次出现这个错误, 请联系服务器管理员, 请把下面的技术细节包含在您的报告中.
更多细节可以在服务器日志中找到.

直入正题

这个问题的出现是由于文件夹权限设置的不到位。

如果直接简单地去设置权限,比如:

chown apache:apache nextcloud
chmod 770 nextcloud -Rf

那么你就会得到“内部服务器错误”的提示。

正确的做法是,

1.使用下面的配置脚本(这个脚本大概已经是第三遍被贴出来了):

随便找个地方(不要在Nextcloud的程序目录下),创建一个shell脚本:

vim permission.sh

然后把下面的内容粘贴进去(在vim中,你需要先按i,然后insert+shift键粘贴)

#!/bin/bash
ocpath='/var/www/nextcloud/'   #修改为你Nextcloud所放置的目录
htuser='apache'                #网页服务器用户
htgroup='apache'               #网页服务器的组
rootuser='root'
 
printf "Creating possible missing Directories\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater
 
printf "chmod Files and Directories\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
 
printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/
 
chmod +x ${ocpath}/occ
 
printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

按ESC键切换到普通模式,然后输入:wq保存退出。

2.关闭或正确地配置SELinux

临时的关闭可以用:

setenforce 0

永久关闭则可以编辑/etc/selinux/config 文件:

vim /etc/selinux/config

找到SELINUX=enforcing,将它改为SELINUX=disabled

再刷新页面,错误信息就消失了:

解决过程

按CentOS中通常的步骤,YUM安装httpd、php、maraidb,然后下载Nextcloud的安装包,解压,简单地设置了一下权限,关掉防火墙、SELinux,然后浏览器里访问,提示错误。

如果上述步骤是在Debian/Ubuntu中做,现在已经可以看到安装界面了,而这个是什么情况?!

按提示中所说,错误记录在了日志里,于是检查了一下error.log(一般位于/etc/httpd/logs里,取决于你的配置),发现了这样的错误信息:

[Sat Nov 18 19:54:20.198935 2017] [php7:notice] [pid 24868] [client 192.168.3.66:65387] {"reqId":"WhAfbEVDNMLHuXKdeyBnUAAAAAI","level":3,"time":"2017-11-18T11:54:20+00:00","remoteAddr":"192.168.3.66","user":"--","app":"PHP","method":"GET","url":"\\/index.php","message":"chmod(): No such file or directory at \\/var\\/www\\/nextcloudtest\\/lib\\/private\\/Log\\/File.php#134","userAgent":"Mozilla\\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\\/537.36 (KHTML, like Gecko) Chrome\\/62.0.3202.94 Safari\\/537.36","version":""}

呃………原来是一个PHP函数的报错。然而,chmod(): No such file or directory???

赶紧看下:

[root@imagineocean nextcloudtest]# ls lib/private/Log
ErrorHandler.php  Errorlog.php  File.php  Rotate.php  Syslog.php

这些文件明明好好地躺在那里!

第一反应是SELinux在捣鬼,于是检查了一下:

[root@imagineocean nextcloud]# getenforce 
Permissive

SELinux已关闭。

大约1年零3个月前,我发布了本博客第一篇ownCloud的文章:Owncloud安装过程,这篇文章就是在CentOS7环境下写的,全程都没有如此诡异的问题。考虑到可能是CentOS有所改动,而最近一次成功在CentOS上部署Nextcloud是在几个月前帮朋友装的,当时为了方便装逼,就用了权限设置脚本。

改用脚本,刷新页面,错误消失,取而代之的是亲切地安装页面。

虽然问题解决了,但原因却在之后的复现试验中变得扑朔迷离。我后来发现,在简单的权限设置的基础下,仅开启SELinux也会出现错误,关闭后恢复正常,而在第一次出现错误时明明已经关闭了SELinux。这是一个留待我继续研究的谜团。

(8)

本文由 橙叶博客 作者:FrankGreg 发表,转载请注明来源!

关键词:, ,

热评文章

评论:

11 条评论,访客:11 条,博主:0 条
  1. Olof
    Olof发布于: 

    按照要求弄了 还是现实内部服务器错误 怎么办啊 想哭 安装好几次了都这样

    • adasd
      adasd发布于: 

      你可以考虑 装一个filerun 再装 nextcloud。file run 网页端就直接显示 哪些 插件 没装 导致的异常。

  2. 瑾年
    瑾年发布于: 

    服务器不能完成你的请求。

    如果再次发生,请在下方将技术详情发送给服务器管理员。

    更多细节可以在服务器日志中找到.

    我是升级一半失败了,然后在进去就是维护中,然后我把维护模式关闭,在点升级,就显示这个页面。

    日志:2018-05-17T13:17:29+0800 c14cQhmHRO [info] request to updater
    2018-05-17T13:17:29+0800 c14cQhmHRO [info] currentStep()
    2018-05-17T13:17:29+0800 c14cQhmHRO [info] POST request for step “1”
    2018-05-17T13:17:29+0800 c14cQhmHRO [info] startStep(“1”)
    2018-05-17T13:17:29+0800 c14cQhmHRO [info] checkForExpectedFilesAndFolders()
    2018-05-17T13:17:29+0800 c14cQhmHRO [info] end of checkForExpectedFilesAndFolders()
    2018-05-17T13:17:29+0800 c14cQhmHRO [info] endStep(“1”)
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] request to updater
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] currentStep()
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] Step 1 is in state “end”.
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] POST request for step “2”
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] startStep(“2”)
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] checkWritePermissions()
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] end of checkWritePermissions()
    2018-05-17T13:17:29+0800 uQtH0F68Bg [info] endStep(“2”)
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] request to updater
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] currentStep()
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] Step 2 is in state “end”.
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] POST request for step “3”
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] startStep(“3”)
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] setMaintenanceMode(“true”)
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] configFileName /www/wwwroot/pan.timeit.cn/updater/../config/config.php
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] end of setMaintenanceMode()
    2018-05-17T13:17:30+0800 3IVy0XT1mx [info] endStep(“3”)
    2018-05-17T13:17:30+0800 AJXt6Yfw6q [info] request to updater
    2018-05-17T13:17:30+0800 AJXt6Yfw6q [info] currentStep()
    2018-05-17T13:17:30+0800 AJXt6Yfw6q [info] Step 3 is in state “end”.
    2018-05-17T13:17:30+0800 AJXt6Yfw6q [info] POST request for step “4”
    2018-05-17T13:17:30+0800 AJXt6Yfw6q [info] startStep(“4”)
    2018-05-17T13:17:30+0800 AJXt6Yfw6q [info] createBackup()
    2018-05-17T13:22:52+0800 tbXWPW0xhy [info] request to updater
    2018-05-17T13:22:52+0800 tbXWPW0xhy [info] currentStep()
    2018-05-17T13:22:52+0800 tbXWPW0xhy [info] Step 4 is in state “start”.

    • FrankGreg
      FrankGreg发布于: 

      我需要[debug]的信息……对于安装过程中出错来说,重装是最有效的解决办法

  3. Jungyo
    Jungyo发布于: 

    管理员点击设置才会出现“内部服务器错误”,普通用户点击设置可以正常进入;error_log显示which: no net in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin) 。求助,谢谢!

    • Jungyo
      Jungyo发布于: 

      已解决 onlyoffice应用升级后导致,移除恢复正常。

  4. Joachim
    Joachim发布于: 

    今天出现问题之后,发现执行代码以后,好像会设置根目录或者系统目录的权限,导致整个系统权限和用户组会出现问题。 最后导出数据重新做了系统,现在恢复的差不多了。 看是没有什么问题,但是执行之后也不知道哪里不对了。。。

  5. Joachim
    Joachim发布于: 

    用了第一个sh,连ssh都登陆不上了,所有的操作都是access denied 和 permission denied
    现在连服务器都进不去了。

    现在实在不知道怎么修。。。里面还有其他网站数据。

    求助,求助!!
    谢谢谢谢!

    • FrankGreg
      FrankGreg发布于: 

      我确实没看出来哪儿有问题…..先把硬盘挂载到别的主机上把数据恢复了.或者在单用户模式下重新设置权限.

    • 菠萝
      菠萝发布于: 

      我用了这个sh之后也是access denied,owncloud和nextcloud的权限真心难搞

  6. 听话の好孩子
    听话の好孩子发布于: 

    Nextcloud 安装后,出现博主说的无法解决的“内部服务器错误”,是因为 Activity 动态应用被禁用,在安装启用非自带应用时,会触发“内部服务器错误”(设置界面无法进入)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注