解決CentOS中安裝Nextcloud出現(xiàn)“內(nèi)部服務(wù)器錯(cuò)誤”

這個(gè)問題困擾了其他人包括我很長時(shí)間了:當(dāng)我們在CentOS中安裝好httpd、php,將Nextcloud程序解壓進(jìn)網(wǎng)站根目錄,然后訪問——

內(nèi)部服務(wù)器錯(cuò)誤

服務(wù)器發(fā)生一個(gè)內(nèi)部錯(cuò)誤并且無法完成你的請求.

如果多次出現(xiàn)這個(gè)錯(cuò)誤, 請聯(lián)系服務(wù)器管理員, 請把下面的技術(shù)細(xì)節(jié)包含在您的報(bào)告中.

更多細(xì)節(jié)可以在服務(wù)器日志中找到.

直入正題

這個(gè)問題的出現(xiàn)是由于文件夾權(quán)限設(shè)置的不到位。

如果直接簡單地去設(shè)置權(quán)限,比如:

? ? ? ? ?chown apache:apache nextcloud

? ? ? ? ?chmod 770 nextcloud -Rf

那么你就會(huì)得到“內(nèi)部服務(wù)器錯(cuò)誤”的提示。

正確的做法是,

1.使用下面的配置腳本(這個(gè)腳本大概已經(jīng)是第三遍被貼出來了):

隨便找個(gè)地方(不要在Nextcloud的程序目錄下),創(chuàng)建一個(gè)shell腳本:

? ? ? ?vim permission.sh

然后把下面的內(nèi)容粘貼進(jìn)去(在vim中,你需要先按i,然后insert+shift鍵粘貼)

注:以下代碼可能導(dǎo)致系統(tǒng)權(quán)限混亂?。?!原因不明?。?!慎用?。。。ㄈ绻惆l(fā)現(xiàn)錯(cuò)誤所在請告訴我!?。。?/b>

#!/bin/bash

ocpath='/var/www/nextcloud/'? #修改為你Nextcloud所放置的目錄

htuser='apache'? ? ? ? ? ? ? ? #網(wǎng)頁服務(wù)器用戶

htgroup='apache'? ? ? ? ? ? ? #網(wǎng)頁服務(wù)器的組

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.關(guān)閉或正確地配置SELinux

臨時(shí)的關(guān)閉可以用:

setenforce 0

永久關(guān)閉則可以編輯/etc/selinux/config?文件:

vim /etc/selinux/config

找到SELINUX=enforcing,將它改為SELINUX=disabled。

再刷新頁面,錯(cuò)誤信息就消失了:


解決過程

按CentOS中通常的步驟,YUM安裝httpd、php、maraidb,然后下載Nextcloud的安裝包,解壓,簡單地設(shè)置了一下權(quán)限,關(guān)掉防火墻、SELinux,然后瀏覽器里訪問,提示錯(cuò)誤。

如果上述步驟是在Debian/Ubuntu中做,現(xiàn)在已經(jīng)可以看到安裝界面了,而這個(gè)是什么情況?!

按提示中所說,錯(cuò)誤記錄在了日志里,于是檢查了一下error.log(一般位于/etc/httpd/logs里,取決于你的配置),發(fā)現(xiàn)了這樣的錯(cuò)誤信息:

[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":""}

呃………原來是一個(gè)PHP函數(shù)的報(bào)錯(cuò)。然而,chmod(): No such file or directory???

趕緊看下:

[root@imagineocean nextcloudtest]# ls lib/private/Log

ErrorHandler.php? Errorlog.php? File.php? Rotate.php? Syslog.php

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

第一反應(yīng)是SELinux在搗鬼,于是檢查了一下:

[root@imagineocean nextcloud]# getenforce

Permissive

SELinux已關(guān)閉。

大約1年零3個(gè)月前,我發(fā)布了本博客第一篇ownCloud的文章:Owncloud安裝過程,這篇文章就是在CentOS7環(huán)境下寫的,全程都沒有如此詭異的問題。考慮到可能是CentOS有所改動(dòng),而最近一次成功在CentOS上部署Nextcloud是在幾個(gè)月前幫朋友裝的,當(dāng)時(shí)為了方便裝逼,就用了權(quán)限設(shè)置腳本。

改用腳本,刷新頁面,錯(cuò)誤消失,取而代之的是親切地安裝頁面。

雖然問題解決了,但原因卻在之后的復(fù)現(xiàn)試驗(yàn)中變得撲朔迷離。我后來發(fā)現(xiàn),在簡單的權(quán)限設(shè)置的基礎(chǔ)下,僅開啟SELinux也會(huì)出現(xiàn)錯(cuò)誤,關(guān)閉后恢復(fù)正常,而在第一次出現(xiàn)錯(cuò)誤時(shí)明明已經(jīng)關(guān)閉了SELinux。這是一個(gè)留待我繼續(xù)研究的謎團(tuán)。

本文轉(zhuǎn)自? ? 橙葉博客 作者:FrankGreg?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容