搜尋
首頁後端開發php教程詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

這篇文章主要介紹了詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud,會透過 Nginx 和 PHP7-FPM 來運行 Nextcloud,同時使用 MariaDB 做為資料庫系統。

Nextcloud 是一款自由 (開源) 的類別 Dropbox 軟體,由 ownCloud 分支演化形成。它使用 PHP 和 Javascript 編寫,支援多種資料庫系統,例如 MySQL/MariaDB、PostgreSQL、Oracle 資料庫和 SQLite。它可以讓你的桌面系統和雲端伺服器中的檔案保持同步,Nextcloud 為 Windows、Linux、Mac、安卓以及蘋果手機都提供了客戶端支援。 Nextcloud 並非只是 Dropbox 的克隆,它還提供了許多附加特性,例如日曆、聯絡人、排程任務以及串流媒體 Ampache。

在這篇文章中,我將向你們展示如何在 CentOS 7 伺服器中安裝和設定最新版本的 Nextcloud 10。我會透過 Nginx 和 PHP7-FPM 來運行 Nextcloud,同時使用 MariaDB 做為資料庫系統。

先決條件

  1. 64 位元的CentOS 7

  2. 伺服器的Root 權限

步驟1 - 在CentOS 7 中安裝Nginx 和PHP7-FPM

在開始安裝Nginx 和php7-fpm 之前,我們還學要先新增EPEL 套件的倉庫來源。使用下列指令:

yum -y install epel-release

現在開始從 EPEL 倉庫來安裝 Nginx:

yum -y install nginx

然後我們還需要為 php7-fpm 加入另一個倉庫。網路中有很個遠端倉庫提供了 PHP 7 系列包,我在這裡使用的是 webtatic。

新增 PHP7-FPM webtatic 倉庫:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

然後就是安裝 PHP7-FPM 以及 Nextcloud 需要的一些套件。

 程式碼如下:

yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear 
php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel

最後,從伺服器終端機查看 PHP 的版本號,以便驗證 PHP 是否正確安裝。

php -v

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

步驟2 - 設定PHP7-FPM

在這一個步驟中,我們將設定php-fpm與Nginx 協同運作。 Php7-fpm 將使用 nginx 使用者來運行,並監聽 9000 連接埠。

使用 vim 編輯預設的 php7-fpm 設定檔

vim /etc/php-fpm.d/www.conf

在第 8 行和第 10行,user group 賦值為 nginx

user = nginx
group = nginx

在第 22 行,確保 php-fpm 運行在指定連接埠。

listen = 127.0.0.1:9000

取消第 366-370 行的註解,啟用 php-fpm 的系統環境變數

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

儲存檔案並退出 vim 編輯器

下一步,就是在 /var/lib/ 目錄下建立一個新的資料夾<a href="http://www.php.cn/php/php-tp-session.html" target="_blank">session</a>,並將其擁有者變更為 nginx 用戶。

mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/

然後啟動 php-fpm 和 Nginx,並且將它們設定為隨開機啟動的服務。

sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

PHP7-FPM 設定完成

步驟3 - 安裝與設定MariaDB

我這裡使用MariaDB 作為Nextcloud 的資料庫。可以直接使用 yum 指令從 CentOS 預設遠端倉庫安裝 mariadb-server 套件。

yum -y install mariadb mariadb-server

啟動 MariaDB,並將其加入到隨系統啟動的服務中去。

systemctl start mariadb
systemctl enable mariadb

現在開始設定 MariaDB 的 root 使用者密碼。

mysql_secure_installation

鍵入 Y ,然後設定 MariaDB 的 root 密碼。

Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

這樣就設定好了密碼,現在登入 mysql shell 並為 Nextcloud 建立一個新的資料庫和使用者。這裡我建立名為 nextcloud_db 的資料庫以及名為 nextclouduser 的用戶,用戶密碼為 nextclouduser@ 。當然了,要給自己的系統選用一個更安全的密碼。

mysql -u root -p

輸入 MariaDB 的 root 密碼,即可登入 mysql shell。

輸入以下 mysql 查詢語句來建立新的資料庫和使用者。

create database nextcloud_db;
create user nextclouduser@localhost identified by &#39;nextclouduser@&#39;;
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by &#39;nextclouduser@&#39;;
flush privileges;

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

nextcloud_db 資料庫與 nextclouduser 資料庫使用者建立完成

步骤 4 - 为 Nextcloud 生成一个自签名 SSL 证书

在教程中,我会让客户端以 https 连接来运行 Nextcloud。你可以使用诸如 let's encrypt 等免费 SSL 证书,或者是自己创建自签名 (self signed) SSL 证书。这里我使用 OpenSSL 来创建自己的自签名 SSL 证书。

为 SSL 文件创建新目录:

mkdir -p /etc/nginx/cert/

如下,使用 openssl 生成一个新的 SSL 证书。

代码如下:

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key

最后使用 chmod 命令将所有证书文件的权限设置为 600。

chmod 700 /etc/nginx/cert
chmod 600 /etc/nginx/cert/*

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

步骤 5 - 下载和安装 Nextcloud

我直接使用 wget 命令下载 Nextcloud 到服务器上,因此需要先行安装 wget。此外,还需要安装 unzip 来进行解压。使用 yum 命令来安装这两个程序。

yum -y install wget unzip

先进入 /tmp 目录,然后使用 wget 从官网下载最新的 Nextcloud 10。

cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip

解压 Nextcloud,并将其移动到 /usr/share/nginx/html/ 目录。

unzip nextcloud-10.0.2.zip
mv nextcloud/ /usr/share/nginx/html/

下一步,转到 Nginx 的 web 根目录为 Nextcloud 创建一个 data 文件夹。

cd /usr/share/nginx/html/
mkdir -p nextcloud/data/

变更 nextcloud 目录的拥有者为 nginx 用户和组。

chown nginx:nginx -R nextcloud/

步骤 6 - 在 Nginx 中为 Nextcloud 配置虚拟主机

在步骤 5 我们已经下载好了 Nextcloud 源码,并配置好了让它运行于 Nginx 服务器中,但我们还需要为它配置一个虚拟主机。在 Nginx 的 conf.d 目录下创建一个新的虚拟主机配置文件 nextcloud.conf

cd /etc/nginx/conf.d/
vim nextcloud.conf

将以下内容粘贴到虚拟主机配置文件中:

upstream php-handler {
  server 127.0.0.1:9000;
  #server unix:/var/run/php5-fpm.sock;
}
server {
  listen 80;
  server_name cloud.nextcloud.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}
server {
  listen 443 ssl;
  server_name cloud.nextcloud.co;
  ssl_certificate /etc/nginx/cert/nextcloud.crt;
  ssl_certificate_key /etc/nginx/cert/nextcloud.key;
  # Add headers to serve security related headers
  # Before enabling Strict-Transport-Security headers please read into this
  # topic first.
  add_header Strict-Transport-Security "max-age=15768000;
  includeSubDomains; preload;";
  add_header X-Content-Type-Options nosniff;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-XSS-Protection "1; mode=block";
  add_header X-Robots-Tag none;
  add_header X-Download-Options noopen;
  add_header X-Permitted-Cross-Domain-Policies none;
  # Path to the root of your installation
  root /usr/share/nginx/html/nextcloud/;
  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }
  # The following 2 rules are only needed for the user_webfinger app.
  # Uncomment it if you&#39;re planning to use this app.
  #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
  #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
  # last;
  location = /.well-known/carddav {
   return 301 $scheme://$host/remote.php/dav;
  }
  location = /.well-known/caldav {
   return 301 $scheme://$host/remote.php/dav;
  }
  # set max upload size
  client_max_body_size 512M;
  fastcgi_buffers 64 4K;
  # Disable gzip to avoid the removal of the ETag header
  gzip off;
  # Uncomment if your server is build with the ngx_pagespeed module
  # This module is currently not supported.
  #pagespeed off;
  error_page 403 /core/templates/403.php;
  error_page 404 /core/templates/404.php;
  location / {
    rewrite ^ /index.php$uri;
  }
  location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    deny all;
  }
  location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
    deny all;
  }
  location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_param script_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    #Avoid sending the security headers twice
    fastcgi_param modHeadersAvailable true;
    fastcgi_param front_controller_active true;
    fastcgi_pass php-handler;
    fastcgi_intercept_errors on;
    fastcgi_request_buffering off;
  }
  location ~ ^/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri/ =404;
    index index.php;
  }
  # Adding the cache control header for js and css files
  # Make sure it is BELOW the PHP block
  location ~* \.(?:css|js)$ {
    try_files $uri /index.php$uri$is_args$args;
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers (It is intended to
    # have those duplicated to the ones above)
    # Before enabling Strict-Transport-Security headers please read into
    # this topic first.
    add_header Strict-Transport-Security "max-age=15768000;
    includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    # Optional: Don&#39;t log access to assets
    access_log off;
  }
  location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
    try_files $uri /index.php$uri$is_args$args;
    # Optional: Don&#39;t log access to other assets
    access_log off;
  }
}

保存文件并退出 vim。

下载测试以下该 Nginx 配置文件是否有错误,没有的话就可以重启服务了。

nginx -t
systemctl restart nginx

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

步骤 7 - 为 Nextcloud 配置 SELinux 和 FirewallD 规则

本教程中,我们将以强制模式运行 SELinux,因此需要一个 SELinux 管理工具来为 Nextcloud 配置 SELinux。

使用以下命令安装 SELinux 管理工具。

yum -y install policycoreutils-python

然后以 root 用户来运行以下命令,以便让 Nextcloud 运行于 SELinux 环境之下。如果你是用的其他名称的目录,记得将 nextcloud 替换掉。

semanage fcontext -a -t httpd_sys_rw_content_t &#39;/usr/share/nginx/html/nextcloud/data(/.*)?&#39;
semanage fcontext -a -t httpd_sys_rw_content_t &#39;/usr/share/nginx/html/nextcloud/config(/.*)?&#39;
semanage fcontext -a -t httpd_sys_rw_content_t &#39;/usr/share/nginx/html/nextcloud/apps(/.*)?&#39;
semanage fcontext -a -t httpd_sys_rw_content_t &#39;/usr/share/nginx/html/nextcloud/assets(/.*)?&#39;
semanage fcontext -a -t httpd_sys_rw_content_t &#39;/usr/share/nginx/html/nextcloud/.htaccess&#39;
semanage fcontext -a -t httpd_sys_rw_content_t &#39;/usr/share/nginx/html/nextcloud/.user.ini&#39;
restorecon -Rv &#39;/usr/share/nginx/html/nextcloud/&#39;

接下来,我们要启用 firewalld 服务,同时为 Nextcloud 开启 http 和 https 端口。

启动 firewalld 并设置随系统启动。

systemctl start firewalld
systemctl enable firewalld

现在使用 firewall-cmd 命令来开启 http 和 https 端口,然后重新加载防火墙。

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

至此,服务器配置完成。

步骤 8 - Nextcloud 安装

打开你的 Web 浏览器,输入你为 Nextcloud 设置的域名,我这里设置为 cloud.nextcloud.co,然后会重定向到安全性更好的 https 连接。

设置你的管理员用户名和密码,然后输入数据验证信息,点击 '完成安装 (Finish Setup)'。

Nextcloud 安装
詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學

Nextcloud 管理面板大致如下:

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學
Nextcloud 用户设置:

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學
管理设置:

詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學
至此,我们在 CentOS 7 服务器上通过使用 Nginx、PHP7-FPM、MariaDB 完成了 Nextcloud 的安装。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

以上是詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud的圖文教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP的當前狀態:查看網絡開發趨勢PHP的當前狀態:查看網絡開發趨勢Apr 13, 2025 am 12:20 AM

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

PHP與其他語言:比較PHP與其他語言:比較Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP與Python:核心功能PHP與Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHP:網絡開發的關鍵語言PHP:網絡開發的關鍵語言Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP:許多網站的基礎PHP:許多網站的基礎Apr 13, 2025 am 12:07 AM

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具