首頁 運維 Nginx 怎麼在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud

怎麼在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud

May 24, 2023 pm 08:13 PM
php nginx centos7

先決條件

  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 70w-string php php70w-pear php70w-xml 70w-string php70w-pdo json php70w-pecl-apcu php70w-pecl-apcu-devel

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

php -v
登入後複製

步驟 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/ 目錄下建立新的資料夾 session,並將其擁有者變更為 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
登入後複製

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
登入後複製

鍵入 ,然後設定 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 'nextclouduser@';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'nextclouduser@';
flush privileges;
登入後複製

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/*
登入後複製

步驟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'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'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't log access to other assets
    access_log off;
  }
}
登入後複製

保存文件并退出 vim。

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

nginx -t
systemctl restart nginx
登入後複製

步骤 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 '/usr/share/nginx/html/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.user.ini'
restorecon -rv '/usr/share/nginx/html/nextcloud/'
登入後複製

接下来,我们要启用 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
登入後複製

至此,服务器配置完成。

步骤 8 - nextcloud 安装

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

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

以上是怎麼在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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 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)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

為什麼要使用PHP?解釋的優點和好處 為什麼要使用PHP?解釋的優點和好處 Apr 16, 2025 am 12:16 AM

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

PHP與Python:用例和應用程序 PHP與Python:用例和應用程序 Apr 17, 2025 am 12:23 AM

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

See all articles