GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menginstal Nextcloud dengan Nginx dan PHP 7.3 di CentOS 8

Nextcloud adalah perangkat lunak seperti dropbox (sumber terbuka) gratis, turunan dari proyek ownCloud. Nextcloud ditulis dalam PHP dan JavaScript, mendukung banyak sistem database seperti MySQL/MariaDB, PostgreSQL, database Oracle dan SQLite.

Agar file Anda tetap sinkron antara desktop dan server, Nextcloud menawarkan aplikasi untuk desktop Windows, Linux, dan Mac serta aplikasi seluler untuk Android dan iOS.

Dalam tutorial ini, kami menunjukkan cara menginstal Nextcloud 17 dengan server web Nginx, PHP 7.3 dan database MariaDB di server CentOS 8. Kami akan menginstal Nextcloud dan mengamankannya dengan sertifikat SSL Let's Encrypt gratis.

Prasyarat

Untuk panduan ini, kami akan menginstal Nextcloud di server CentOS 8 dengan RAM 2GB, ruang kosong 25GB, dan 2CPU.

Apa yang akan kami lakukan:

  • Instal Server Web Nginx
  • Instal PHP-FPM 7.3
  • Konfigurasi PHP-FPM 7.3
  • Instal dan Konfigurasikan Database MariaDB
  • Buat SSL Letsencrypt
  • Unduh Nextcloud 17
  • Siapkan Nginx Virtualhost untuk Nextcloud
  • Siapkan SELinux untuk Nextcloud
  • Pasca-Instalasi Nextcloud

Langkah 1 - Instal Nginx

Pertama, kita akan menginstal webserver Nginx ke server CentOS 8 dan membuka port HTTP dan HTTPS pada firewalld.

Instal Nginx dari repositori AppStream menggunakan perintah dnf di bawah ini.

sudo dnf install nginx

Setelah instalasi selesai, mulai layanan nginx dan tambahkan ke boot sistem.

systemctl start nginx
systemctl enable nginx

Sekarang periksa status layanan nginx menggunakan perintah di bawah ini.

systemctl status nginx

Anda akan mendapatkan layanan nginx aktif dan berjalan di server CentOS 8.

Selanjutnya, kita akan menambahkan layanan HTTP dan HTTPS ke firewalld.

Tambahkan layanan HTTP dan HTTPS ke firewalld menggunakan perintah firewall-cmd di bawah ini.

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

Setelah itu, muat ulang layanan firewalld.

firewall-cmd --reload

Hasilnya, Anda telah berhasil menginstal server web Nginx dan membuka port HTTP dan HTTPS di server CentOS 8.

Langkah 2 - Instal PHP-FPM

Menurut persyaratan sistem Nextcloud, disarankan untuk menggunakan PHP 7.2 atau PHP 7.3 untuk penginstalannya.

Untuk panduan ini, kita akan menggunakan PHP 7.3 yang dapat diinstal dari repositori REMI.

Sebelum melangkah lebih jauh, kita akan mengaktifkan repositori 'PowerTools' dan menambahkan repositori EPEL dan REMI untuk server CentOS 8.

Jalankan perintah dnf di bawah ini.

sudo dnf config-manager --set-enabled PowerTools
sudo dnf install epel-release
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Sekarang periksa semua repositori yang tersedia di sistem.

dnf repolist

Dan Anda akan mendapatkan hasil seperti di bawah ini.

Anda telah mengaktifkan repositori 'PowerTools' dan menambahkan repositori EPEL dan REMI untuk CentOS 8.

Selanjutnya, kita akan mengaktifkan repositori PHP 7.3 REMI.

Periksa semua modul yang tersedia untuk paket PHP.

dnf module list php

Sekarang aktifkan modul repositori PHP 7.3 REMI.

dnf module enable php:remi-7.3

Setelah itu, instal paket PHP dan PHP-FPM 7.3 untuk Nextcloud menggunakan perintah dnf di bawah ini.

sudo dnf install php-fpm php-cli php-devel php-gd php-mysqlnd php-pear php-xml php-mbstring php-pdo php-json php-pecl-apcu php-pecl-apcu-devel php-pecl-imagick-devel php-intl php-opcache php-zip

Dan Anda telah menginstal PHP dan PHP-FPM 7.3 ke sistem CentOS 8.

Langkah 3 - Konfigurasi PHP-FPM 7.3

Pada langkah ini, kami akan menyiapkan PHP-FPM untuk penerapan Nextcloud.

Edit konfigurasi 'php.ini' menggunakan perintah berikut.

vim /etc/php.ini

Batalkan komentar dan ubah konfigurasi seperti di bawah ini.

memory_limit = 512M
date.timezone = Asia/Jakarta
cgi.fixpathinfo = 0

Simpan dan tutup.

Sekarang edit konfigurasi opcache PHP '/etc/php.d/10-opcache.ini'.

vim /etc/php.d/10-opcache.ini

Ubah konfigurasi seperti di bawah ini.

opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Simpan dan tutup.

Selanjutnya, edit konfigurasi PHP-FPM '/etc/php-fpm.d/www.conf'.

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

Ubah 'pengguna' dan 'grup' menjadi 'nginx'.

user = nginx
group = nginx

Ubah konfigurasi 'listen' menjadi sock file seperti di bawah ini.

listen = /run/php-fpm/www.sock

Batalkan komentar variabel lingkungan PHP di bawah ini.

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

Batalkan komentar konfigurasi opcache pada baris terakhir.

php_value[opcache.file_cache] = /var/lib/php/opcache

Simpan dan tutup.

Sekarang buat direktori baru untuk sesi PHP dan opcache, lalu ubah pemilik direktori tersebut menjadi pengguna dan grup 'nginx'.

mkdir -p /var/lib/php/{session,opcache}
chown -R nginx:nginx /var/lib/php/{session,opcache}

Dan Anda telah menyelesaikan konfigurasi PHP-FPM untuk instalasi Nextcloud.

Mulai layanan PHP-FPM dan tambahkan ke boot sistem.

systemctl enable php-fpm
systemctl start php-fpm

Sekarang periksa file kaus kaki PHP-FPM dan status layanan.

netstat -pl | grep php
systemctl status php-fpm

Dan Anda akan mendapatkan hasil seperti di bawah ini.

Akibatnya, PHP-FPM aktif dan berjalan di bawah file sock '/run/php-fpm/www.sock'.

Langkah 4 - Instal dan Konfigurasi MariaDB

Pada langkah ini, kita akan menginstal server database MariaDB, mengatur otentikasi kata sandi root, dan membuat database dan pengguna baru untuk Nextcloud.

Instal database MariaDB menggunakan perintah dnf di bawah ini.

sudo dnf install mariadb mariadb-server

Setelah penginstalan selesai, mulai layanan MariaDB dan tambahkan ke boot sistem.

systemctl start mariadb
systemctl enable mariadb

Dan layanan MariaDB aktif dan berjalan.

Selanjutnya, kita akan mengatur otentikasi kata sandi root menggunakan perintah 'mysql_secure_installation' di bawah ini.

mysql_secure_installation

Ketik kata sandi root Anda dan ketik 'Y' untuk konfigurasi lainnya.

Set a root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Dan kata sandi root MariaDB telah dikonfigurasi.

Sekarang login ke shell MySQL menggunakan perintah mysql di bawah ini.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

Sekarang buat database baru 'nextcloud_db' dan buat pengguna baru 'nextclouduser' dengan kata sandi 'nextcloudpassdb' menggunakan kueri di bawah ini.

create database nextcloud_db;
create user [email protected] identified by 'nextcloudpassdb';
grant all privileges on nextcloud_db.* to [email protected] identified by 'nextcloudpassdb';
flush privileges;

Dan Anda telah membuat database dan pengguna untuk instalasi Nextcloud.

Langkah 4 - Buat SSL Letsencrypt

Pada langkah ini, kita akan membuat SSL letsencrypt menggunakan 'certbot'. Sertifikat SSL akan digunakan untuk mengamankan akses Nextcloud.

Instal certbot dari repositori EPEL menggunakan perintah dnf di bawah ini.

sudo dnf install certbot

Setelah penginstalan selesai, buat sertifikat SSL untuk nama domain Nextcloud menggunakan perintah di bawah ini dan pastikan untuk mengubah nama domain dan alamat email Anda sendiri.

certbot certonly --webroot --webroot-path /usr/share/nginx/html --agree-tos -m [email protected] -d cloud.hakase-labs.io

Setelah selesai, semua sertifikat SSL yang dihasilkan berada di direktori '/etc/letsencrypt/live/cloud.hakase-labs.io'.

Periksa dengan perintah berikut.

ls -lah /etc/letsencrypt/live/cloud.hakase-labs.io/

Dan Anda telah membuat SSL letsencrypt menggunakan alat certbot.

Langkah 5 - Unduh dan Instal Nextcloud

Pada langkah ini, kita akan mendownload Nextcloud 17 versi terbaru.

Sebelum mengunduh kode sumber cloud berikutnya, instal paket zip ke sistem.

sudo dnf install unzip

Sekarang masuk ke direktori '/var/www/' dan unduh kode sumber Nextcloud menggunakan perintah wget seperti di bawah ini.

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-17.0.2.zip

Ekstrak kode sumber Nextcloud menggunakan perintah di bawah ini.

unzip nextcloud-17.0.2.zip

Dan Anda akan mendapatkan direktori baru bernama 'nextcloud'.

Sekarang buat direktori 'data' baru untuk Nextcloud. Direktori 'data' akan digunakan untuk menyimpan data pengguna.

mkdir -p /var/www/nextcloud/data/

Setelah itu, ubah pemilik direktori 'nextcloud' menjadi pengguna dan grup 'nginx'.

sudo chown -R nginx:nginx /var/www/nextcloud

Dan Anda telah mengunduh Nextcloud 17 terbaru ke direktori '/var/www'.

Langkah 6 - Siapkan Host Virtual Nginx untuk Nextcloud

Setelah mengunduh kode sumber Nextcloud, kami akan menyiapkan virtual host Nginx untuk Nextcloud.

Masuk ke direktori '/etc/nginx/conf.d' dan buat konfigurasi baru 'nextcloud.conf'.

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

Sekarang ubah nama domain dan jalur sertifikat SSL dengan milik Anda dan rekatkan konfigurasi berikut ke dalamnya.

upstream php-handler {
#server 127.0.0.1:9000;
server unix:/run/php-fpm/www.sock;
}

server {
listen 80;
listen [::]:80;
server_name cloud.hakase-labs.io;
# enforce https
return 301 https://$server_name:443$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.hakase-labs.io;

# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
# NOTE: some settings below might be redundant
ssl_certificate /etc/ssl/nginx/fullchain.pem;
ssl_certificate_key /etc/ssl/nginx/privkey.pem;

# 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;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
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;

# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;

# Path to the root of your installation
root /var/www/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;

# The following rule is only needed for the Social app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

location = /.well-known/carddav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}

# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;

# Enable gzip but do not remove ETag headers
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;

# Uncomment if your server is built with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;

location / {
rewrite ^ /index.php;
}

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\/.+|oc[ms]-provider\/.+)\.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;
# Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
# Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}

location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}

# Adding the cache control header for js, css and map files
# Make sure it is BELOW the PHP block
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
# 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;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
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;

# Optional: Don't log access to assets
access_log off;
}

location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
# Optional: Don't log access to other assets
access_log off;
}
}

Simpan dan tutup.

Setelah itu, uji konfigurasi nginx dan restart layanan Nginx. Dan pastikan tidak ada kesalahan.

nginx -t
systemctl restart nginx

Sekarang layanan Nginx akan membuka port HTTPS baru di sistem, periksa menggunakan perintah berikut.

netstat -plntu

Dan Anda akan mendapatkan hasil seperti di bawah ini.

Hasilnya, Anda telah menambahkan konfigurasi virtual host Nginx untuk Nextcloud dan mengaktifkan HTTPS aman di atasnya.

Langkah 7 - Siapkan SELinux untuk Nextcloud

Untuk tutorial ini, kita akan menggunakan SELinux pada mode 'enforcing'. Dan kami akan menyiapkan SELinux untuk instalasi Nextcloud.

Instal alat manajemen SELinux menggunakan perintah dnf di bawah ini.

sudo dnf install policycoreutils-python-utils

Sekarang jalankan perintah berikut sebagai root di server Anda.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini'

restorecon -Rv '/var/www/nextcloud/'

Dan konfigurasi SELinux untuk Nextcloud telah selesai.

Langkah 8 - Panduan Instalasi Nextcloud

Sekarang buka browser web Anda dan ketik nama domain Nextcloud Anda di bilah alamat.

https://cloud.hakase-labs.io/

Sekarang Anda akan mendapatkan halaman instalasi Nextcloud seperti di bawah ini.

Ketik user dan password admin Anda, lalu pilih 'MySQL/MariaDB' sebagai database Anda dan ketik detail tentang database yang telah Anda buat di atas.

Sekarang klik tombol 'Finish Setup' dan instalasi akan dimulai.

Setelah instalasi selesai, Anda akan mendapatkan dasbor Nextcloud seperti di bawah ini.

Hasilnya, Anda telah berhasil menginstal Nextcloud 17 terbaru dengan server web Nginx, PHP-FPM 7.3, dan database MariaDB di server CentOS 8.


Cent OS
  1. Cara Menginstal dan Mengkonfigurasi Nginx di CentOS 7

  2. Cara Menginstal WordPress dengan Nginx di CentOS 7

  3. Cara Menginstal Phorum dengan Nginx di CentOS 7

  1. Cara Instal phpMyAdmin dengan Nginx di CentOS 7

  2. Cara Menginstal dan Mengkonfigurasi OpenLiteSpeed ​​dengan PHP 7.4 di CentOS 8

  3. Cara Menginstal ownCloud 9.1 dengan Nginx dan MariaDB di CentOS 7

  1. Cara Menginstal Nextcloud dengan Nginx dan PHP7-FPM di CentOS 7

  2. Cara Menginstal SuiteCRM dengan Nginx di CentOS 7

  3. Cara Menginstal MediaWiki dengan Nginx di CentOS 7