Nextcloud Kurulumu CentOS 7

NextCloud Kurulumu PHP7-FPM & MySQL/MariaDB & Nginx & CentOS 7

Nextcloud , ücretsiz ve açık kaynak kodlu olup Dropbox benzeri bir yazılımdır. NextCloud projesi php ve javascript ile yazılmış olup , bir çok veritabanı (MySQL/MariaDB, PostgreSQL, ORACLE ve SQLite) ile çalışmayı desteklemektedir.

Dosyalarımızı bilgisayarlarımız ve mobil cihazlarımız arasında senkronize olarak tutan NextCloud ;

Masaüstü ve dizüstü bilgisayarlarınızda :Windows , MacOS , Linux

Mobil Cihazlarınızda : ios ve android

İşletim sistemlerine uygun uygulamalarıda ücretsiz olarak sunar.

NextCloud yalnızca Dropbox klonu değildir. Takvim , kişiler zamanlama görevleri Ampache (müzik yayını) ve canlı yayın gibi ek medya özellikleri sunar.

Bu yazıda , NextCloud 10 sürümünü bir CentOS 7 sunucusuna nasıl kuracağınızı ve yapılandıracağınızı göstereceğim. Bu kurulumda Nginx web sunucusu ve PHP7-FPM ile çalıştırıp, veritabanı sistemi olarak MySQL/MariaDB ‘yi kullanacağım.

Kurulum Adımları

Gereksinimler

  • CentOS 7 64bit
  • Root Yetkisi
Adım 1 – Nginx ve PHP7-FPM Kurulumu

Nginx ve PHP7-FPM kurulumuna başlamadan önce , EPEL paket deposunu eklemeliyiz. Bu kurulumu ‘yum’ komutu ile kuruyoruz.

yum –y install epel-release

Şimdi Nginx ‘i EPEL deposundan yükleyin

yum –y install nginx

Sonra PHP7-FPM için başka bir depo eklemeliyiz. İnternette PHP7 paketleri sağlayan birkaç depo var. Biz burada webtatic kullanacağız.

PHP7-FPM webatik deposunu ekleyin :

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

Daha sonra NextCloud kurulumu için PHP7-FPM ve bazı ek paketleri kurun.

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

Son olarak PHP ‘nin doğru yüklendiğini doğrulamak için terminalden PHP sürümünü kontrol ediyoruz.

php –v

Resim -1

Adım 2 – PHP7-FPM Konfigürasyonu

Bu adımda , PHP7-FPM ‘yi Nginx ile çalışacak şekilde yapılandıracağız. PHP7-FPM , kullanıcı Nginx ‘te  çalışacak ve 9000 numaralı portu (bağlantı) dinlemektedir.

Nano veya VIM ile varsayılan PHP7-FPM yapılandırma dosyasını düzenleyin.

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

veya

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

Satır 8 ve 10 ‘da , kullanıcıyı ve grubu ‘nginx’ olarak değiştirin.

user = nginx

group = nginx

  1. satırda, PHP7-FPM ‘nin sunucu bağlantı noktası (port) altında çalıştığından emin olun.

listen = 127.0.0.1:9000

PHP7-FPM sistem ortam değişkenlerini etkinleştirmek için 366 dan 370. Satıra kadar olan satırların açıklama satırı etiketlerini kaldırarak bu satırları aktif edin.

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

Dosyayı kaydedin ve kullandığınız metin düzenleyicisinden çıkın.

Sonra , oturum yolu için ‘/var/lib’ dizininde yeni bir dizin oluşturun ve sahibi ‘nginx’ kullanıcısı olarak değiştirin.

mkdir -p /var/lib/php/session

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

Şimfi PHP7-FPM ve Nginx’i başlatın, ardından hizmetlerin ön yükleme zamanında başlamasını sağlayın.

sudo systemctl start php-fpm
sudo systemctl start nginx

sudo systemctl enable php-fpm
sudo systemctl enable nginx

Resim-2

PHP7-FPM konfigürasyonu başarıyla tamamlandı.

Adım 3 – MariaDB Kurulumu ve Konfigürasyonu

MariaDB ‘yi NextCloud veritabanı için kullanacağız. MariaDB-Server paketini CentOS deposundan yum ile kurun.

yum -y install mariadb mariadb-server

MariaDB Hizmetini başlatın ve ön yükleme zamanında çalışacak şekilde ekleyin.

systemctl start mariadb

systemctl enable mariadb

Şimdi MariaDB root şifresini yapılandırın.

mysql_secure_installation

Şifrenizi girmek istediğinizi onaylayıp , adımları aşağıdaki gibi takip edin.

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

MariaDB root şifresi ayarlandı , şimdi NextCloud için yeni bir veritabanı ve yeni bir kullanıcı oluşturmak için mysql kabuğuna giriş yapabiliriz. ‘NextCloud_db’ adlı yeni bir veritabanı ve ‘parolanıBelirt123’ parolasıyla ile birlikte ‘nextclouduser’ kullanıcısı oluşturacağım.

NOT: Kendi kurulumunuz da güvenli bir şifre seçmeniz güvenliğiniz için önemlidir!

mysql -u root -p

Type Password

Yeni bir veritabanı ve yeni bir kullanıcı oluşturmak için aşağıdaki mysql sorgularını yazın.

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;

Resim-3

‘nextclouduser’ kullanıcısı ve ‘nextcloud_db’ veritabanı oluşturuldu.

Adım 4 – NextCloud için Bir Self-Signed SSL Sertifikası Oluşturma

NextCloud ‘u istemci (client) için bir https bağlantısı ile çalıştıracağız. Şifrelemek veya kendinden imzalı SSL sertifikası oluşturmak için ücretsiz SSL kullanabilirsiniz. OpenSSL komutuyla kendi imzalı SSL sertifika dosyamızı oluşturabiliriz.

Önce SSL dosyası için yeni bir dizin oluşturun.

mkdir -p /etc/nginx/cert/

Daha sonra aşağıdaki openssl komutu ile yeni bir SSL sertifika dosyası oluşturun.

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

Son olarak , chmod komutu ile tüm sertifika dosyalarının iznini 600 olarak değiştirin.

chmod 700 /etc/nginx/cert

chmod 600 /etc/nginx/cert/*

Resim-4

Adım 5 – NextCloud İndirme ve Kurma

NextCloud ‘u wget ile doğrudan sunucuya indireceğiz. Bu yüzden önce wget ‘i kurmamız gerekiyor. Ayrıca , unzip programına ihtiyaç var. Her iki uygulamayı yum ile kurabilirsiniz.

yum -y install wget unzip

/tmp dizinine gidin ve wget ile NextCloud web sitesinden en yeni kararlı sürümünü indirin.

cd /tmp

wget https://download.nextcloud.com/server/releases/nextcloud-12.0.3.zip

NextCloud  zip sıkıştırılmış dosyasını açın(ayıklayın). Daha sonra ‘/usr/share/nginx/html’ dizinine taşıyın.

unzip nextcloud-10.0.2.zip

mv nextcloud/ /usr/share/nginx/html/

Sonra , Nginx web kök dizinine gidin ve NextCloud için yeni bir ‘veri’ dizini oluşturun.

cd /usr/share/nginx/html/

mkdir -p nextcloud/data/

NextCloud Dizinin sahibini ‘nginx kullanıcısına ve grubuna değiştirin.

chown nginx:nginx -R nextcloud/
Adım 6 – NextCloud ve Nginx için Sanal Sunucu Konfigürasyonu
  1. Adımda , NextCloud kaynak kodunu indirdik ve Nginx web sunucusu altında çalışacak şekilde yapılandırdık. Ancak yine de NextCloud için sanal bir konfigürasyon yapılandırmanız gerekiyor. Nginx ‘conf.d’ dizininde yeni bir sanal host yapılandırma dosyası ve ‘nextcloud.conf’ oluşturun.
cd /etc/nginx/conf.d/

touch nextcloud.conf

nano nextcloud.conf

Aşağıdaki kod bloğunu olduğu gibi oluşturduğunuz nextcloud.conf dosyasına yapıştırın.

upstream php-handler {

    server 127.0.0.1:9000;

    #server unix:/var/run/php5-fpm.sock;

}



server {

    listen 80;

    server_name //#Sunucu ip / domain adresiniz;

    # enforce https

    return 301 https://$server_name$request_uri;

}



server {

    listen 443 ssl;

    server_name //#Sunucu ip / domain adresiniz;



    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;

    }

}

Kodu yapıştırdıktan sonra server_name kısımlarına (listen ve listen ssl için) “//#Sunucu ip / domain adresiniz” kısmına kendi ip adresiniz var ise domain adresinizi yazın. Kaydedin ve çıkın.

Son olarak Nginx yapılandırmasını test etmek için hizmeti yeniden başlatın!

nginx -t

systemctl restart nginx

Resim-5

Adım 7 – NextCloud için SELinux ve FirewallD Konfigürsayonu

SELinux ‘u zorlayıcı modda bırakacaksanız. NextCloud için yapılandırmalısınız. Yapılandırmak için yeni bir paket SELinux yönetim aracına ihtiyacımız var.

SELinux yönetim aracını bu komutu kullanarak kurun.

yum -y install policycoreutils-python

Sonra NextCloud ‘un SELinux altında çalışmasına izin vermek için aşağıdaki komutları root kullanıcı olarak çalıştırın. Farklı bir dizin kullandığınız takdirde NextCloud dizinini değiştirmeyi unutmayın.

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

Sonra , firewalld hizmetini etkinleştireceğiz ve NextCloud için HTTP ve HTTPS bağlantı noktalarını açacağız.

FirewallD ‘yi çalıştırın ve ön yükleme zamanında başlamasını sağlayın.

systemctl start firewalld

systemctl enable firewalld

Şimdi HTTP ve HTTPS bağlantı noktalarını firewall-cmd komutu ile açın, ardından güvenlik duvarını tekrar yükleyin.

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

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

firewall-cmd –reload

Resim-6

Tüm sunucu yapılandırması tamamlandı.

Adım 8 – NextCloud Kurulum Sihirbazı

Web Tarayıcınızı açın ve NextCloud için ayarladığınız alan adını ve/veya ip adresini yazın. (6. Adımda oluşturduğumuz ‘nextcloud.conf’ dosyasının içinde server_name kısımlarına (listen ve listen ssl için) “//#Sunucu ip / domain adresiniz”) Güvenli https bağlantısına yönlendirileceksiniz.

Açılan sayfada ;

İstediğiniz yönetici kullanıcı adı ve parolasını belirleyin. Ardından veritabanı ve veritabanı kimlik bilgilerinizi yazın.

‘Kurulumu Bitir’ butonuna tıklayın.

Resim-7

NextCloud Yönetici Kontrol Panel ‘i görüntülenir.

Resim-8

NextCloud Kullanıcı Ayarları

Resim-9

Admin Ayarları

Resim-10

NextCloud, CentOS 7 Sunucusu’nda Nginx,PHP7-FPM ve MariaDB ile kuruldu.