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

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

Nextcloud adalah perangkat lunak seperti Dropbox (Open Source) gratis, cabang dari proyek ownCloud. Nextcloud ditulis dalam PHP dan JavaScript, mendukung banyak sistem database seperti, MySQL/MariaDB, PostgreSQL, Oracle Database dan SQLite. Untuk menjaga sinkronisasi file Anda antara Desktop dan server Anda sendiri, Nextcloud menyediakan aplikasi untuk desktop Windows, Linux dan Mac dan aplikasi seluler untuk Android dan iOS. Nextcloud bukan hanya klon dropbox, ia menyediakan fitur tambahan seperti Kalender, Kontak, Jadwalkan tugas, dan media streaming dengan Ampache.

Dalam tutorial ini, saya akan menunjukkan cara menginstal dan mengkonfigurasi rilis Nextcloud 10 terbaru di server CentOS 7. Saya akan menjalankan Nextcloud dengan server web Nginx dan PHP7-FPM dan menggunakan MariaDB sebagai sistem database.

Prasyarat

  • CentOS 7 64bit
  • Hak istimewa root di server

Langkah 1 - Instal Nginx dan PHP7-FPM di CentOS 7

Sebelum kita mulai dengan instalasi Nginx dan php7-fpm, kita harus menambahkan repositori paket EPEL. Instal dengan perintah yum ini.

yum -y install epel-release

Sekarang instal Nginx dari repositori EPEL.

yum -y install nginx

Kemudian kita harus menambahkan repositori lain untuk php7-fpm. Ada beberapa repositori yang tersedia di internet yang menyediakan paket PHP 7, saya akan menggunakan webtatic di sini.

Tambahkan repositori webtatic PHP7-FPM:

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

Selanjutnya, instal PHP7-FPM dan beberapa paket tambahan untuk instalasi 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 /pra> 

Terakhir, periksa versi PHP dari terminal server untuk memverifikasi bahwa PHP telah diinstal dengan benar.

php -v

Langkah 2 - Konfigurasikan PHP7-FPM

Pada langkah ini, kita akan mengkonfigurasi php-fpm untuk dijalankan dengan Nginx. Php7-fpm akan berjalan di bawah nginx pengguna dan mendengarkan pada port 9000.

Edit file konfigurasi default php7-fpm dengan vim.

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

Di baris 8 dan 10, ubah pengguna dan grup menjadi 'nginx '.

pengguna =nginx
grup =nginx

Pada baris 22, pastikan php-fpm berjalan di bawah port server.

dengarkan =127.0.0.1:9000

Batalkan komentar pada baris 366-370 untuk mengaktifkan variabel lingkungan sistem php-fpm.

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

Simpan file dan keluar dari editor vim.

Selanjutnya, buat direktori baru untuk jalur sesi di direktori '/var/lib/', dan ubah pemiliknya menjadi pengguna 'nginx'.

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

Sekarang mulai php-fpm dan Nginx, lalu aktifkan layanan untuk memulai saat boot.

sudo systemctl start php-fpm
sudo systemctl start nginx

sudo systemctl aktifkan php-fpm
sudo systemctl aktifkan nginx

Konfigurasi PHP7-FPM selesai.

Langkah 3 - Instal dan Konfigurasi MariaDB

Saya akan menggunakan MariaDB untuk database Nextcloud. Instal paket mariadb-server dari repositori CentOS dengan yum.

yum -y install mariadb mariadb-server

Mulai layanan MariaDB dan tambahkan untuk dijalankan saat boot.

systemctl start mariadb
systemctl aktifkan mariadb

Sekarang konfigurasikan kata sandi root MariaDB.

mysql_secure_installation

Ketikkan kata sandi root Anda saat diminta.

Tetapkan kata sandi root? [Y/n] Y
Kata sandi baru:
Masukkan kembali kata sandi baru:

Hapus pengguna anonim? [Y/n] Y
Larang login root dari jarak jauh? [Y/n] Y
Hapus database pengujian dan akses ke sana? [Y/n] Y
Muat ulang tabel hak istimewa sekarang? [Y/n] Y

Kata sandi root MariaDB telah ditetapkan, sekarang kita dapat masuk ke shell mysql untuk membuat database baru dan pengguna baru untuk Nextcloud. Saya akan membuat database baru bernama 'nextcloud_db ' dan pengguna 'pengguna cloud berikutnya ' dengan sandi '[email protected] '. Pilih kata sandi yang aman untuk instalasi Anda!

mysql -u root -p
Ketik Kata Sandi

Ketik kueri mysql di bawah ini untuk membuat database baru dan pengguna baru.

buat database nextcloud_db;
buat pengguna [email protected] yang diidentifikasi dengan '[email protected]';
berikan semua hak istimewa di nextcloud_db.* kepada [email protected] yang diidentifikasi dengan '[email protected]';
hak flush;

Database nextcloud_db dengan pengguna 'nextclouduser' telah dibuat.

Langkah 4 - Buat Sertifikat SSL yang ditandatangani sendiri untuk Nextcloud

Dalam tutorial ini, saya akan menjalankan nextcloud dengan koneksi https untuk klien. Anda dapat menggunakan SSL gratis seperti mari mengenkripsi atau membuat  sertifikat SSL yang ditandatangani sendiri. Saya akan membuat file sertifikat SSL yang ditandatangani sendiri dengan perintah OpenSSL.

Buat direktori baru untuk file SSL.

mkdir -p /etc/nginx/cert/

Dan buat file sertifikat SSL baru dengan perintah openssl di bawah ini.

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

Terakhir, ubah izin semua file sertifikat menjadi 600 dengan chmod.

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

Langkah 5 - Unduh dan Instal Nextcloud

Nextcloud dengan wget akan kita download langsung ke server, jadi kita harus install wget terlebih dahulu. Selain itu, kita membutuhkan program unzip. Instal kedua aplikasi dengan yum.

yum -y install wget unzip

Buka direktori /tmp dan unduh versi stabil Nextcloud 10 terbaru dari situs web Nextcloud dengan wget.

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

Ekstrak file zip nextcloud dan pindahkan isinya ke direktori '/usr/share/nginx/html/'.

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

Selanjutnya, buka direktori root web Nginx dan buat direktori 'data' baru untuk Nextcloud.

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

Ubah pemilik direktori 'nextcloud' menjadi pengguna dan grup 'nginx'.

chown nginx:nginx -R nextcloud/

Langkah 6 - Konfigurasi Host Virtual Nextcloud di Nginx

Pada langkah 5 kami telah mengunduh kode sumber Nextcloud dan mengonfigurasinya untuk berjalan di bawah server web Nginx. Tapi kita masih perlu mengkonfigurasi virtual host untuk Nextcloud. Buat file konfigurasi virtual host baru 'nextcloud.conf' di direktori 'conf.d' Nginx.

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

Tempel konfigurasi host virtual Nextcloud di bawah.

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

server {
    listen 80;
    server_name cloud.nextcloud.co;
    # menegakkan https
    return 301 https://$server_name$request_uri;
}

server {
    mendengarkan 443 ssl;
    nama_server cloud.nextcloud.co;

    ssl_certificate /etc/nginx/cert/nextcloud.crt;
    ssl_certificate_key /etc/nginx/cert/nextcloud.key;

    # Tambahkan header untuk melayani header terkait keamanan
    # Sebelum mengaktifkan header Strict-Transport-Security, harap baca ini
# topik terlebih dahulu.
    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;

    # Jalur ke akar instalasi Anda
    root /usr/share/nginx/html/nextcloud/;

    location =/robots.txt {
       izinkan semua;
        log_not_found off;
       access_log off;
    }

# 2 aturan berikut hanya diperlukan untuk aplikasi user_webfinger.
    # Hapus komentar jika Anda berencana menggunakan aplikasi ini.
    #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;
    }

    # setel ukuran unggahan maksimum
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Nonaktifkan gzip untuk menghindari e penghapusan header ETag
    gzip off;

    # Batalkan komentar jika server Anda dibuat dengan modul ngx_pagespeed
    # Modul ini saat ini tidak didukung.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
        rewrite ^ /index.php$uri;
    }

    lokasi ~ ^/(?:build|tests|config|lib|3rdparty|template|data)/ {
tolak semua;
    }
    lokasi ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
       tolak semua;
    }

    lokasi ~ ^/(?: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 aktif;
       #Hindari mengirim header keamanan dua kali
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
        fastcgiler>        fastcgi_request_buffering off;
    }

    lokasi ~ ^/(?:updater|ocs-provider)(?:$|/) {
       try_files $uri/ =404;
        index index.php;
    }

    # Menambahkan header kontrol cache untuk file js dan css
    # Pastikan lokasinya DI BAWAH blok PHP
   ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Menambahkan header untuk menampilkan header terkait keamanan (Hal ini dimaksudkan untuk
        # memiliki yang diduplikasi dengan yang di atas)
       # Sebelum mengaktifkan header Strict-Transport-Security, harap baca
        # topik ini terlebih dahulu.
        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;
       # Opsional:Jangan log akses ke aset
       access_log off;
    }

    lokasi ~* \.(?:svg|gif|png|html|ttf|woff|ico |jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Opsional:Jangan log akses ke aset lain
       access_log off;
    }
}

Simpan file dan keluar dari vim.

Sekarang uji konfigurasi Nginx untuk memastikan tidak ada kesalahan,s- Kemudian restart layanan.

nginx -t
systemctl restart nginx

Langkah 7 - Konfigurasi SELinux dan FirewallD untuk Nextcloud

Dalam tutorial ini, kita akan membiarkan SELinux dalam mode penegakan, jadi kita memerlukan alat manajemen paket SELinux baru untuk mengonfigurasi SELinux untuk Nextcloud.

Instal alat manajemen SELinux dengan perintah ini.

yum -y install policycoreutils-python-utils

Kemudian jalankan perintah di bawah ini sebagai pengguna root untuk memungkinkan Nextcloud berjalan di bawah SELinux. Ingatlah untuk mengubah direktori Nextcloud jika Anda menggunakan direktori yang berbeda.

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/ '

Selanjutnya, kita akan mengaktifkan layanan firewalld dan membuka port HTTP dan HTTPS untuk Nextcloud.

Mulai firewalld dan aktifkan untuk memulai saat boot.

systemctl start firewalld
systemctl aktifkan firewalld

Sekarang buka port HTTP dan HTTPS dengan perintah firewall-cmd, lalu muat ulang firewall.

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

Semua konfigurasi server sudah selesai.

Langkah 8 - Panduan Instalasi Nextcloud

Buka browser web Anda dan ketik nama domain Nextcloud Anda, milik saya adalah:cloud.nextcloud.co. Anda akan dialihkan ke koneksi https yang aman.

Ketik nama pengguna dan kata sandi admin yang Anda inginkan, lalu ketik kredensial database Anda. Klik 'Selesaikan Penyiapan '.

Dasbor Admin Nextcloud (Pengelola File) muncul.

Pengaturan Pengguna Nextcloud.

Setelan Admin.

Nextcloud telah diinstal dengan Nginx, PHP7-FPM, dan MariaDB di Server CentOS 7.


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

  2. Cara Menginstal WordPress dengan Nginx di CentOS 7

  3. Cara Menginstal dan Mengonfigurasi Nextcloud dengan Apache di CentOS 7

  1. Cara Instal phpMyAdmin dengan Nginx di CentOS 7

  2. Cara Menginstal Nextcloud dengan Nginx dan PHP 7.3 di CentOS 8

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

  1. Cara Instal WordPress dengan HHVM dan Nginx di CentOS 7

  2. Cara Menginstal dan Mengonfigurasi Askbot dengan Nginx di CentOS 7

  3. Cara Menginstal SuiteCRM dengan Nginx di CentOS 7