云码酷 发表于 2017-11-30 21:20:00

解决CentOS中安装ownCloud/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里,取决于你的配置),发现了这样的错误信息: {"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???赶紧看下:# ls lib/private/Log
ErrorHandler.phpErrorlog.phpFile.phpRotate.phpSyslog.php
这些文件明明好好地躺在那里!第一反应是SELinux在捣鬼,于是检查了一下:# getenforce
Permissive
SELinux已关闭。大约1年零3个月前,我发布了本博客第一篇ownCloud的文章:Owncloud安装过程,这篇文章就是在CentOS7环境下写的,全程都没有如此诡异的问题。考虑到可能是CentOS有所改动,而最近一次成功在CentOS上部署Nextcloud是在几个月前帮朋友装的,当时为了方便装逼,就用了权限设置脚本。改用脚本,刷新页面,错误消失,取而代之的是亲切地安装页面。虽然问题解决了,但原因却在之后的复现试验中变得扑朔迷离。我后来发现,在简单的权限设置的基础下,仅开启SELinux也会出现错误,关闭后恢复正常,而在第一次出现错误时明明已经关闭了SELinux。这是一个留待我继续研究的谜团。

94r7z 发表于 2018-4-22 07:20:47

看帖要回,回帖才健康,在踩踩,楼主辛苦了!

1a9fkm 发表于 2018-4-24 07:08:00

传说中的沙发???哇卡卡

tza 发表于 2018-4-24 17:35:55

我是个凑数的。。。

t01iz 发表于 2018-4-25 15:33:10

看帖要回,回帖才健康,在踩踩,楼主辛苦了!

6_a6_4 发表于 2018-4-26 21:23:08

秀起来~
页: [1]
查看完整版本: 解决CentOS中安装ownCloud/Nextcloud出现“内部服务器错误”