摘要訊息 : 在 CentOS 8, PHP 8 和 MySQL 8 下配置 Nextcloud.
0. 前言
Seafile 的教學我們已經寫過很多次了, 而 Nextcloud 卻沒有. 這是因為 Nextcloud 更新之後一直比較穩定, 使用文章《CentOS 7 + PHP 7 + MySQL 5.7 下搭建 NextCloud》中的方法仍然是可行的. 但是這篇文章是 2017 年寫的, 已經比較老舊. 這三四年間, CentOS8, PHP 8 和 MySQL 8 已經發布, 之前那一篇文章有些地方確實已經過時, 因此就有了這篇文章.
在進行之前, 首先要確保 unzip 和 wget 套件已經安裝, 如果不確定的話可以執行指令 dnf install unzip wget
.
本篇文章基於 《在 CentOS 8 下配置 Nginx + PHP 8 + MySQL 8 + phpMyAdmin + vsFTPd》.
更新紀錄 :
- 2022 年 6 月 13 日進行第一次更新和修正.
1. 下載
首先進入 Nextcloud 的網站 https://nextcloud.com/, 滑鼠移動到右上角的 Get Nextcloud 按鈕, 然後點擊 Nextcloud server, 然後找到 ARCHIVE FILE, 其左側有 DOWNLOAD SERVER 字樣. 點擊之後就有了一個藍色的 Download for server 按鈕. 右鍵複製下載連結可以得到 https://download.nextcloud.com/server/releases/latest.zip.
我們進入存放網站的專用檔案夾 cd /www
, 將 Nextcloud 下載到伺服器上 wget https://download.nextcloud.com/server/releases/latest.zip
並解壓縮 unzip latest.zip
. 解壓完成之後, 我選擇了重新命名一下檔案夾 (當然, 你也可以不這樣做) : mv nextcloud cloud
, 然後把檔案夾授權給 Nginx chown -R nginx:nginx cloud
.
2. 安裝
和 Seafile 不同, Nextcloud 採用最常用的網頁安裝方式, 因此安裝的過程比 Seafile 簡單很多. Seafile 是安裝完成之後才將網頁名稱繫結到網域名稱上, 而 Nextcloud 正好相反. 為此, 我這裡為大家準備了一份已經添加了 SSL 的 Nginx 配置檔案 :
upstream php-handler {
server unix:/var/opt/remi/php80/run/php-fpm/www.sock;
}
server {
listen 80; # 連接埠, 進階者可以更改, 新手不建議更改
listen [::]:80; # 連接埠, 進階者可以更改, 新手不建議更改
server_name 改為你的網域名稱;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2; # 連接埠, 進階者可以更改, 新手不建議更改
listen [::]:443 ssl http2; # 連接埠, 進階者可以更改, 新手不建議更改
server_name 改為你的網域名稱;
ssl_certificate 改為證書位置;
ssl_certificate_key 改為密鑰位置;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
fastcgi_hide_header X-Powered-By;
root /www/cloud; # 繫結的檔案夾, 根據你自己的情況進行更改. 如果完全根據本博客發布的文章進行安裝, 則不需要更改
index index.php index.html /index.php$request_uri;
expires 1m;
client_max_body_size 0;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
proxy_request_buffering off;
fastcgi_buffers 64 4K;
fastcgi_connect_timeout 1200s;
fastcgi_send_timeout 1200s;
fastcgi_read_timeout 1200s;
fastcgi_buffer_size 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
location = / {
if ( $http_user_agent ~ ^DavClnt ) {
return 302 /remote.php/webdav/$is_args$args;
}
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ^~ /.well-known {
rewrite ^/\.well-known/host-meta\.json /public.php?service=host-meta-json last;
rewrite ^/\.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/\.well-known/webfinger /public.php?service=webfinger last;
rewrite ^/\.well-known/nodeinfo /public.php?service=nodeinfo last;
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
try_files $uri $uri/ =404;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ \.(?:css|js|svg|gif)$ {
try_files $uri /index.php$request_uri;
expires 6M;
access_log off;
}
location ~ \.woff2?$ {
try_files $uri /index.php$request_uri;
expires 7d;
access_log off;
}
location / {
try_files $uri $uri/ /index.php$request_uri;
}
}
然後使用指令 nginx -t
測試以下配置檔案是否有錯. 如果沒有錯誤, 那麼就會顯示
否則, 你需要根據給出的錯誤提示更改配置. 配置完成之後, 我們需要重新載入 Nginx 的配置文件 : systemctl reload nginx
. 接著就可以訪問網站 :
帳號和密碼自訂. 對於資料庫, 由於我們已經安裝了 MySQL, 因此我們點擊位於管理者帳號輸入框下面的儲存空間和資料庫, 展開之後選擇 MySQL 並填寫相關配置 :
填寫完成之後點擊最下方的完成設定即可. 如果中間有跳轉到 https://localhost/index.php/core/apps/recommended
, 將中間的 localhost
改為你的網域名稱即可 (不知道這一個 BUG). 然後便有 :
3. 解除警告和配置
點擊右上角的頭像, 再點擊設定, 最後點擊左側管理中的概覽, 你可能會看到如下警告 :
我們需要專門針對 Nextcloud 進行一些配置.
對於第一個設定錯誤, 如果大家的記憶體不夠大, 則可以不用理會. 如果伺服器的記憶體大於 4G, 則我建議進行修改. 如果你是按照本博客給出的 PHP 8 安裝方式, 則執行下面指令 vim /etc/opt/remi/php80/php.ini
, 搜尋 memory_limit
, 將後面的數值改為比 512 更大的數字, 建議改為 512 或者 1024. 然後重啟 PHP-FPM : systemctl restart php80-php-fpm
. 刷新網頁之後, 第一個警告就消失了.
第二個和第三個警告是關於 Nginx 配置檔案的. 當時我在安裝的時候, Nginx 的配置檔案是不正確的, 所以導致了這兩個警告. 不過, 如果你使用本文給出的 Nginx 配置檔案, 那麼是不會出現這兩個警告的.
最後這兩個警告是關於 Nextcloud 配置檔案的. 為了解決這兩個警告, 我們首先安裝 Memcached : dnf install -y memcached
, 然後開啟它 : systemctl enable --now memcached
. 然後我們通過修改 Nextcloud 檔案夾下的 config/config.php
檔案進行配置. 一份完整的配置如下 (這份配置檔案在 Nextcloud 22.1 版本下測試通過), 所有的選項的說明都在該選項之後的註解中 (預設檔案指的是 /Nextcloud 的檔案夾/config/config.php
) :
<?php $CONFIG = [ 'instanceid' => '請更改',
'passwordsalt' => '請更改',
'secret' => '請更改',
/* 上面這三個選項的值保持和預設檔案相同, 不要進行更改 */
'trusted_domains' => [
'請更改'
], # 你的網域名稱, 可以添加多個, 中間用逗號隔開
'datadirectory' => '/www/cloud/data', # 存儲上傳檔案的檔案夾
'version' => '請更改', # 版本, 保持和預設配置檔案一致, 不要進行更改
'dbtype' => '請更改',
'dbhost' => '請更改',
'dbname' => '請更改',
'dbuser' => '請更改',
'dbpassword' => '請更改',
'dbtableprefix' => 'oc_',
/* 上面這幾個是關於資料庫的配置, 保持和預設檔案相同, 不要進行更改 */
'installed' => true, # 是否已經安裝, 不要進行更改
'default_language' => 'zh_HK', # 預設語言
'force_language' => false, # 強制顯示語言. 設定為某種語言視為開啟, 之後所有的用戶界面都會顯示這一種語言, 不能進行更改
'default_locale' => 'zh_HK', # 預設的地區或者國家
'default_phone_region' => 'zh_HK', # 預設的手機號碼前綴
'force_locale' => false, # 強制位於某個地區, 類似於 'force_language' 選項
'defaultapp' => 'dashboard,files', # 預設頁面
'knowledgebaseenabled' => true, # 是否開啟幫助選項
'allow_user_to_change_display_name' => true, # 是否允許用戶更改用戶名稱
'remember_login_cookie_lifetime' => 60*60*24*15, # 記住登陸的 cookie 生存時長
'session_lifetime' => 60 * 60 * 24, # session 的生存時長
'session_keepalive' => true, # 保持 session 活躍
'auto_logout' => false, # 自動退出
'token_auth_enforced' => false, # 強制開啟客戶端驗證
'token_auth_activity_update' => 300, # token 活躍時長, 單位為秒
'auth.bruteforce.protection.enabled' => true, # 密碼爆破保護
'auth.webauthn.enabled' => true, # 網頁驗證開啟
'hide_login_form' => false, # 隱藏登陸界面
'skeletondirectory' => '/www/cloud/core/skeleton', # skeleton 檔案夾, 只需要根據自己的情況更改 /www/cloud 部分即可
'templatedirectory' => '/www/cloud/nextcloud/templates', # templates 檔案夾, 只需要根據自己的情況更改 /www/cloud 部分即可
#'lost_password_link' => 'https://???/login/reset', # 忘記密碼界面, 建議刪除此項
'mail_domain' => '你的網域名稱', # 郵件發送網域名稱
'mail_from_address' => 'system', # 發送郵件的用戶名稱
'mail_smtpdebug' => false, # SMTP 偵錯模式
'mail_smtpmode' => 'php', # 郵件發送模式, 可选 : sendmail、smtp、qmail、php
#'mail_smtphost' => '127.0.0.1', # 郵件伺服器
#'mail_smtpport' => 25, # 郵件伺服器連接埠
#'mail_smtptimeout' => 10, # 郵件伺服器超時設定
#'mail_smtpsecure' => '', # 郵件伺服器安全設定, 可選 ssl 與 tls
#'mail_smtpauth' => false, # 郵件伺服器是否需要驗證
#'mail_smtpauthtype' => 'LOGIN', # 郵件伺服器驗證類型, 可選 LOGIN 與 PLAIN
#'mail_smtpname' => '', # 郵件伺服器帳戶名稱
#'mail_smtppassword' => '', # 郵件伺服器帳戶密碼
#'mail_template_class' => '\OC\Mail\EMailTemplate', # 郵件發送樣板
#'mail_send_plaintext_only' => false, # 僅採用文字發送
#'mail_smtpstreamoptions' => [], # 郵件伺服器其它選項
#'mail_sendmailmode' => 'smtp', # 郵件發送模式, 可選 smtp 和 pipe. 對於 smtp, 有一個參數 -bs 來表示使用 SMTP 協議進行標準輸入和輸出; 對於 pipe, 有一個參數 -t 表示使用標準輸入流來進行輸入和輸出
#'overwritehost' => '', # PROXY 重寫地址
#'overwriteprotocol' => '', # PROXY 重寫協議, 可選 HTTP 和 HTTPS
#'overwritewebroot' => '', # PROXY 父檔案夾
#'overwritecondaddr' => '', # PROXY 地址, 支援正規表達式
#'overwrite.cli.url' => '', # PROXY 網域名稱
#'htaccess.RewriteBase' => '/', # htaccess 重寫
#'htaccess.IgnoreFrontController' => false, #如果 Apache 沒有啓用 "mov_env", 則啓用此項
#'proxy' => '', # 代理伺服器
#'proxyuserpwd' => '', # 代理伺服器驗證
#'proxyexclude' => [], # PROXY 白名單
'allow_local_remote_servers' => false, # 遠端伺服器
'trashbin_retention_obligation' => 'disabled', # 垃圾桶內的檔案保留 D1 天, 在 D2 天之後刪除. 可以設定為 auto, 即 30 天刪除; disabled 為手動清理; D1 可以設定為 auto, D2 也可以設定為 auto. 'auto' 即代表 '30, 30'
'versions_retention_obligation' => 'disabled', # 文件版本控制. 時間和上個選項類似
'appcodechecker' => true, # 應用程式程式碼檢查
'updatechecker' => true, # 升級檢查
'updater.server.url' => 'https://updates.nextcloud.com/updater_server/', # 升級伺服器, 不要更改
'updater.release.channel' => 'stable', # 升級通道, 可選 daily, beta 和 stable
'has_internet_connection' => true, # 是否可以連結到網路
'connectivity_check_domains' => [
'www.nextcloud.com',
'www.startpage.com',
'www.eff.org',
'www.edri.org'
], # 網路連接性檢查的網域名稱選項
'check_for_working_wellknown_setup' => true, # .well-known URL 檢查
'check_for_working_htaccess' => false, # .htaccess 檢查, Nginx 用戶無需開啟
'check_data_directory_permissions' => true, # 檔案夾權限檢查
'config_is_read_only' => false, #配置檔案僅可讀而不可寫
'log_type' => 'file', # 日誌檔案類型
'logfile' => '/var/log/nextcloud.log', # 日誌檔案存儲位置
'logfilemode' => 0640, # 日誌檔案權限
'loglevel' => 2, # 日誌內容. 可選 0 = Debug, 1 = Info, 2 = Warning, 3 = Error, and 4 = Fatal
'syslog_tag' => 'Nextcloud', # 系統日誌標識
'log.condition' => [
'shared_secret' => '9woFrQvEvtkG2vRGYCPBZJGbGV8eyQVhrMxm23oQJELNueUotoHo9Vhu7RRJj8chJnUDHaqkWyCospXc2B6FwfYvJJphjEdv2XsL',
], # 日誌條件, 任何條件觸發都會導致日誌進入 debug 模式
'logdateformat' => 'l, d-M-Y H:i:s T', # 日誌日期類型, 訪問 https://www.php.net/manual/en/function.date.php 可以獲取更多類型
'logtimezone' => 'Asia/Hong_Kong', # 日誌地區
'log_query' => false, # 日誌寫入資料庫的查詢操作
'log_rotate_size' => 100 * 1024 * 1024, # 日誌文件大小
'customclient_desktop' =>
'https://nextcloud.com/install/#install-clients',
'customclient_android' =>
'https://play.google.com/store/apps/details?id=com.nextcloud.client',
'customclient_ios' =>
'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8',
'customclient_ios_appid' =>
'1125420102',
/* 上面幾個選項都是關於 Nextcloud 桌面或者手機應用程式下載的, 除非你有自己的地址, 否則不要進行更改 */
'appstoreenabled' => true, # 可以安裝新的應用程式
'appstoreurl' => 'https://apps.nextcloud.com/api/v1', # 應用程式獲取地址, 不要進行更改
'apps_paths' => [
[
'path'=> '/www/cloud/apps',
'url' => '/apps',
'writable' => true,
],
], # 應用程式相關選項
'enable_previews' => true, # 開啟預覽
'preview_max_x' => 4096, # 預覽最大寬度, null 表示不限制
'preview_max_y' => 4096, # 預覽最大高度, null 表示不限制
'preview_max_filesize_image' => -1, # 可預覽的最大檔案大小, -1 表示不限制. 單位為 MB
/*'preview_libreoffice_path' => '/usr/bin/libreoffice',
'preview_office_cl_parameters' =>
' --headless --nologo --nofirststartwizard --invisible --norestore '.
'--convert-to png --outdir ',*/
/* 上面兩個選項是關於在線 Office, 沒有安裝不需要配置
*/
'enabledPreviewProviders' => [
'OC\Preview\PNG',
'OC\Preview\JPEG',
'OC\Preview\GIF',
'OC\Preview\BMP',
'OC\Preview\XBitmap',
'OC\Preview\MP3',
'OC\Preview\TXT',
'OC\Preview\MarkDown',
'OC\Preview\OpenDocument',
'OC\Preview\Krita',
'OC\Preview\Illustrator',
'OC\Preview\HEIC',
'OC\Preview\Movie',
'OC\Preview\MSOffice2003',
'OC\Preview\MSOffice2007',
'OC\Preview\MSOfficeDoc',
'OC\Preview\PDF',
'OC\Preview\Photoshop',
'OC\Preview\Postscript',
'OC\Preview\StarOffice',
'OC\Preview\SVG',
'OC\Preview\TIFF',
'OC\Preview\Font',
], # 可預覽的類型
'ldapUserCleanupInterval' => 51, # 檢查 LDAP 用戶時間間隔
'sort_groups_by_name' => false, # 以名稱對用戶組進行排序
'comments.managerFactory' => '\OC\Comments\ManagerFactory', # 評論管理
'systemtags.managerFactory' => '\OC\SystemTag\ManagerFactory', # Tags 管理
/*'openssl' => [
'config' => '/absolute/location/of/openssl.cnf',
],*/ # SSL 選項, 我們已經在 Nginx 中配置, 所以不再需要此項
'memcache.local' => '\OC\Memcache\APCu', # 記憶體緩存
'memcache.distributed' => '\OC\Memcache\Memcached', # 使用 Memcached
/*'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'read_timeout' => 0.0,
'user' => '',
'password' => '',
'dbindex' => 0,
'ssl_context' => [
'local_cert' => '/certs/redis.crt',
'local_pk' => '/certs/redis.key',
'cafile' => '/certs/ca.crt'
]
],
'redis.cluster' => [
'seeds' => [
'localhost:7000',
'localhost:7001',
],
'timeout' => 0.0,
'read_timeout' => 0.0,
'failover_mode' => \RedisCluster::FAILOVER_ERROR,
'user' => '',
'password' => '',
'ssl_context' => [
'local_cert' => '/certs/redis.crt',
'local_pk' => '/certs/redis.key',
'cafile' => '/certs/ca.crt'
]
],*/ # 使用 Redis
'memcached_servers' => [
['localhost', 11211],
], # Memcached 伺服器
/**
* Connection options for memcached
*/
'memcached_options' => [
\Memcached::OPT_CONNECT_TIMEOUT => 50,
\Memcached::OPT_RETRY_TIMEOUT => 50,
\Memcached::OPT_SEND_TIMEOUT => 50,
\Memcached::OPT_RECV_TIMEOUT => 50,
\Memcached::OPT_POLL_TIMEOUT => 50,
\Memcached::OPT_COMPRESSION => true,
\Memcached::OPT_LIBKETAMA_COMPATIBLE => true,
\Memcached::OPT_BINARY_PROTOCOL => true,
], # Memcached 相關配置
'cache_path' => '/www/cloud/data/$user/cache', # 緩存保存檔案夾
'cache_chunk_gc_ttl' => 60*60*24, # 緩存保存時間
/*'objectstore' => [
'class' => 'OC\\Files\\ObjectStore\\Swift',
'arguments' => [
'username' => 'facebook100000123456789',
'password' => 'Secr3tPaSSWoRdt7',
'container' => 'nextcloud',
'objectPrefix' => 'oid:urn:',
'autocreate' => true,
'region' => 'RegionOne',
'url' => 'http://8.21.28.222:5000/v2.0',
'tenantName' => 'facebook100000123456789',
'serviceName' => 'swift',
'urlType' => 'internal'
],
],
'objectstore' => [
'class' => 'OC\\Files\\ObjectStore\\Swift',
'arguments' => [
'autocreate' => true,
'user' => [
'name' => 'swift',
'password' => 'swift',
'domain' => [
'name' => 'default',
],
],
'scope' => [
'project' => [
'name' => 'service',
'domain' => [
'name' => 'default',
],
],
],
'tenantName' => 'service',
'serviceName' => 'swift',
'region' => 'regionOne',
'url' => 'http://yourswifthost:5000/v3',
'bucket' => 'nextcloud',
],
],
'objectstore.multibucket.preview-distribution' => false,*/ # Object Store
'sharing.managerFactory' => '\OC\Share20\ProviderFactory', # Share Provider
'sharing.maxAutocompleteResults' => 25, # 搜尋最大回傳數量
'sharing.minSearchStringLength' => 0, # 搜尋字串最大長度
'sharing.enable_share_accept' => true, # 內部分享需要經過用戶同意
'sharing.force_share_accept' => false, # 內部分享強制接受, 設定為 true 之後用戶不再有自主選擇的權利
'sharing.enable_share_mail' => true, # 通過郵件分享
/*'dbdriveroptions' => [
PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET wait_timeout = 28800'
],*/ # MySQL SSL
#'sqlite.journal_mode' => 'DELETE', # SQLite Journal 模式
'mysql.utf8mb4' => true, # MySQL utf8mb4 模式
'supportedDatabases' => [
'sqlite',
'mysql',
'pgsql',
'oci',
], # 支援的資料庫
'tempdirectory' => '/www/cloud/tmp', # 臨時檔案存放位置
'hashing_default_password' => true,
'hashingThreads' => PASSWORD_ARGON2_DEFAULT_THREADS,
'hashingMemoryCost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST,
'hashingTimeCost' => PASSWORD_ARGON2_DEFAULT_TIME_COST,
'hashingCost' => 10,
/* 上面幾個選項關於密碼 hashing */
'blacklisted_files' => [], # 黑名單檔案
'share_folder' => '/', # 預設分享檔案夾
'theme' => '', #預設主題
'cipher' => 'AES-256-CTR', # 加密方式
'minimum.supported.desktop.version' => '2.0.0', # 桌面應用程式最低版本
'localstorage.allowsymlinks' => false, # 本地存儲 symlinks
'quota_include_external_storage' => false, # 外部存儲
'external_storage.auth_availability_delay' => 1800, # 外部存儲驗證延遲
'filesystem_check_changes' => 1, # 檔案系統更改檢測
'part_file_in_storage' => true, # 上傳時對檔案進行切割
'mount_file' => '/www/cloud/data/mount.json', #mount.json 存儲為止
'filesystem_cache_readonly' => false, # 檔案緩存只讀
#'trusted_proxies' => ['203.0.113.45', '198.51.100.128', '192.168.2.0/24'], # 信任的 PROXY
'forwarded_for_headers' => ['HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR'], # 轉發 HTTP headers
'max_filesize_animated_gifs_public_sharing' => 10, # GIF 圖像預覽大小限制. 單位為 MB
'filelocking.enabled' => true, # 檔案協作
'filelocking.ttl' => 60*60, # 檔案協作鎖定時間, 單位為秒
#'memcache.locking' => '\\OC\\Memcache\\Redis', # 檔案協作緩存方式
'filelocking.debug' => false, # 檔案協作 DEBUG 模式
'upgrade.disable-web' => false, # 關閉以網頁升級的方式
'debug' => false, # DEBUG 模式
'data-fingerprint' => '', # 備份確認
'copied_sample_config' => false, # 是否為預設配置. 想要這份檔案稱為預設配置, 此項必須為 false
#'lookup_server' => 'https://lookup.nextcloud.com', #自訂查詢伺服器
'gs.enabled' => false, # global scale
'gs.federation' => 'internal', # global scale 模式
/*'csrf.optout' => [
'/^WebDAVFS/', // OS X Finder
'/^Microsoft-WebDAV-MiniRedir/', // Windows webdav drive
],*/ # 使用的時候確定好你在做什麼!
'simpleSignUpLink.shown' => true, # 註冊頁面
'login_form_autocomplete' => true, # 允許瀏覽器自動填充
];
需要注意的是, 上述配置中的前面三個選項, 網域名稱和資料庫相關的選項請和原始配置檔案保持一致, 其它標識 "請更改" 的選項需要閣下根據自己的情況進行更改. 對於其它選項, 如果你不熟悉程式碼的編寫或者不熟悉 Nextcloud, 請保持和我的一致 (關於此份配置檔案有任何疑問的, 請在評論留下).
這裡我給出一個偵錯的方法 : 如果有一個配置產生錯誤導致 Nextcloud 出現問題, 那麼可以使用折半刪除的方法來找出具體哪一個配置出了問題. 首先, 選擇後面一半的配置, 注意不要選擇最後一行的 ];
, 直接刪除. 因為這一半配置是進階的, 可有可無, 即時刪掉 Nextcloud 也可以正常運作. 一旦 Nextcloud 恢復正常, 那麼出錯的部分就在後面那一半被刪除的配置中. 如果 Nextcloud 沒有恢復正常, 那麼不要把刪除的那一部分重新複製回去 (因為被刪除的那一部分可能還存在其它錯誤), 而是繼續刪除一半. 直到找到錯誤出現在哪一部分位置, 找到之後修正這些錯誤即可. 如果不知道如何修正的話, 直接刪除掉也是可以的.
最終我們可以看到 :
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :
您好
可否請教何謂global scale 模式呢
根據 Nextcloud 官方給出的解釋, 我的理解是這個模式主要是使用次要伺服器來分擔主要伺服器的一些請求, 並將這些來自使用者的請求重新導向至主要伺服器 (https://github.com/nextcloud/globalsiteselector), 有點類似於 CloudFlare 所做的事情.
非常感谢博主提供的安装教程,有一个地方想麻烦您解惑:
您所提供的已设置了ssl的nginx配置,在设置完成之后,运行nginx -t
反馈:
nginx: [emerg] 「upstream」 directive is not allowed here in /etc/nginx/nginx.conf:1
如获解答,不胜感激
閣下的 Nginx 是否是按照《在 CentOS 8 下配置 Nginx + PHP 8 + MySQL 8 + phpMyAdmin + vsFTPd》中的教學進行配置? 完全按照教學配置的話, 應該是不會出現類似的問題的.
目前本人猜測的解決方案應該是閣下的
/etc/nginx/nginx.conf
出了問題, 配置有誤.閣下可以嘗試在
/etc/nginx/nginx.conf
的http {}
區域中添加include /etc/nginx/conf.d/*.conf;
(注意結尾分號).非常感谢,有个问题想麻烦您解惑:
关于您提到的“已經添加了 SSL 的 Nginx 配置檔案 ”
运行 nginx -t 反馈:
nginx: [emerg] 「upstream」 directive is not allowed here in /etc/nginx/nginx.conf:1
暂时未在网络上找到解决方案,可否答复?
谢谢