這個(gè)問(wèn)題困擾了其他人包括我很長(zhǎng)時(shí)間了:當(dāng)我們?cè)贑entOS中安裝好httpd、php止剖,將Nextcloud程序解壓進(jìn)網(wǎng)站根目錄亚茬,然后訪問(wèn)——
內(nèi)部服務(wù)器錯(cuò)誤
服務(wù)器發(fā)生一個(gè)內(nèi)部錯(cuò)誤并且無(wú)法完成你的請(qǐng)求.
如果多次出現(xiàn)這個(gè)錯(cuò)誤, 請(qǐng)聯(lián)系服務(wù)器管理員, 請(qǐng)把下面的技術(shù)細(xì)節(jié)包含在您的報(bào)告中.
更多細(xì)節(jié)可以在服務(wù)器日志中找到.
直入正題
這個(gè)問(wèn)題的出現(xiàn)是由于文件夾權(quán)限設(shè)置的不到位郁岩。
如果直接簡(jiǎn)單地去設(shè)置權(quán)限耘拇,比如:
? ? ? ? ?chown apache:apache nextcloud
? ? ? ? ?chmod 770 nextcloud -Rf
那么你就會(huì)得到“內(nèi)部服務(wù)器錯(cuò)誤”的提示。
正確的做法是铁材,
1.使用下面的配置腳本(這個(gè)腳本大概已經(jīng)是第三遍被貼出來(lái)了):
隨便找個(gè)地方(不要在Nextcloud的程序目錄下)剖踊,創(chuàng)建一個(gè)shell腳本:
? ? ? ?vim permission.sh
然后把下面的內(nèi)容粘貼進(jìn)去(在vim中庶弃,你需要先按i,然后insert+shift鍵粘貼)
注:以下代碼可能導(dǎo)致系統(tǒng)權(quán)限混亂5鲁骸Pァ!原因不明0鹪臁=墒亍!慎用U蚧浴B潘搿!(如果你發(fā)現(xiàn)錯(cuò)誤所在請(qǐng)告訴我:龈亍4迳啊!)
#!/bin/bash
ocpath='/var/www/nextcloud/'? #修改為你Nextcloud所放置的目錄
htuser='apache'? ? ? ? ? ? ? ? #網(wǎng)頁(yè)服務(wù)器用戶
htgroup='apache'? ? ? ? ? ? ? #網(wǎng)頁(yè)服務(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罕模。
再刷新頁(yè)面评腺,錯(cuò)誤信息就消失了:
解決過(guò)程
按CentOS中通常的步驟,YUM安裝httpd淑掌、php蒿讥、maraidb,然后下載Nextcloud的安裝包抛腕,解壓芋绸,簡(jiǎn)單地設(shè)置了一下權(quán)限,關(guān)掉防火墻担敌、SELinux摔敛,然后瀏覽器里訪問(wèn),提示錯(cuò)誤柄错。
如果上述步驟是在Debian/Ubuntu中做舷夺,現(xiàn)在已經(jīng)可以看到安裝界面了苦酱,而這個(gè)是什么情況售貌?!
按提示中所說(shuō)疫萤,錯(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":""}
呃………原來(lái)是一個(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安裝過(guò)程梦鉴,這篇文章就是在CentOS7環(huán)境下寫的李茫,全程都沒(méi)有如此詭異的問(wèn)題》食龋考慮到可能是CentOS有所改動(dòng)魄宏,而最近一次成功在CentOS上部署Nextcloud是在幾個(gè)月前幫朋友裝的,當(dāng)時(shí)為了方便裝逼存筏,就用了權(quán)限設(shè)置腳本宠互。
改用腳本,刷新頁(yè)面方篮,錯(cuò)誤消失名秀,取而代之的是親切地安裝頁(yè)面。
雖然問(wèn)題解決了藕溅,但原因卻在之后的復(fù)現(xiàn)試驗(yàn)中變得撲朔迷離匕得。我后來(lái)發(fā)現(xiàn),在簡(jiǎ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?