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

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

Mar 25, 2017 am 09:12 AM

這篇文章主要介紹了詳解如何在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

熱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中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

nginx如何配置虛擬主機 nginx如何配置虛擬主機 Apr 14, 2025 am 08:15 AM

配置 nginx 虛擬主機允許在一個服務器上託管多個網站,每個網站擁有獨立域名和根目錄。具體配置步驟包括:創建虛擬主機配置文件配置服務器塊,指定服務器監聽端口、虛擬主機域名和文檔根目錄啟用虛擬主機,將配置文件鏈接到啟用目錄重新加載 nginx

nginx中如何重定向 nginx中如何重定向 Apr 14, 2025 am 08:42 AM

通過 Nginx 進行重定向的方法有 301 永久重定向(更新鏈接或移動頁面)和 302 臨時重定向(處理錯誤或臨時更改)。配置重定向涉及在 server 塊中使用 location 指令,高級功能包括正則表達式匹配、代理重定向和基於條件的重定向。重定向的常見用途包括更新 URL、處理錯誤、將 HTTP 重定向到 HTTPS,以及引導用戶訪問特定國家或語言版本。

如何查看nginx版本信息 如何查看nginx版本信息 Apr 14, 2025 am 08:24 AM

通過以下方法查看 Nginx 版本信息:直接命令法:“nginx -v” 輸出版本信息。配置文件中查看:在配置文件頂部找到“version”部分。系統信息命令:Linux:使用“rpm -qa | grep nginx”或“dpkg -l | grep nginx”命令。 FreeBSD:使用“pkg info nginx”命令。 Windows:打開 Nginx 服務屬性,版本信息位於“常規”選項卡。

nginx如何配置負載均衡 nginx如何配置負載均衡 Apr 14, 2025 am 08:33 AM

如何配置 Nginx 進行負載均衡?定義上游服務器池,指定服務器 IP 和端口。定義虛擬主機,監聽連接並轉發到上游池。指定位置,匹配請求並轉發到上游池。

nginx怎麼查看運行狀態 nginx怎麼查看運行狀態 Apr 14, 2025 am 11:48 AM

查看 Nginx 運行狀態的方法有:使用 ps 命令查看進程狀態;查看 Nginx 配置文件 /etc/nginx/nginx.conf;使用 Nginx 狀態模塊啟用狀態端點;使用 Prometheus、Zabbix 或 Nagios 等監控工具。

nginx如何配置php nginx如何配置php Apr 14, 2025 am 08:09 AM

配置 Nginx 運行 PHP 的步驟包括:安裝 PHP、安裝 Nginx、編輯 Nginx 主配置文件添加 PHP 配置、創建 PHP 文件、重啟 Nginx、測試 PHP,成功後會顯示 "PHP is working!" 消息。

nginx如何開啟偽靜態 nginx如何開啟偽靜態 Apr 14, 2025 am 08:21 AM

如何開啟 Nginx 偽靜態?啟用 MultiViews 模塊,允許服務器根據擴展名搜索文件。添加偽靜態規則,將 .php URL 重寫到匹配的 PHP 文件。確保 Web 服務器進程有權訪問 PHP 文件。重啟 Nginx 以應用更改,從而實現 URL 映射到文件路徑的功能。

如何重啟nginx的服務 如何重啟nginx的服務 Apr 14, 2025 am 08:27 AM

要重啟 nginx 服務,請執行以下步驟:1. 使用 sudo systemctl stop nginx 停止服務。 2. 使用 sudo systemctl start nginx 啟動服務。 3. 使用 sudo systemctl reload nginx 重新加載配置。

See all articles