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ı
- Adım 1 – Nginx ve PHP7-FPM kurulumu.
- Adım 2 – PHP7-FPM Konfigürasyonu
- Adım 3 – MariaDB kurulumu ve konfigürasyonu
- Adım 4 – NextCloud için bir Self-Signed SSL sertifikası oluşturma
- Adım 5 – NextCloud indirme ve kurulum
- Adım 6 – NextCloud ve Nginx için Sanal Sunucu konfigürasyonu
- Adım 7 – NectCloud için SELinux ve FireewallD konfigürasyonu
- Adım 8 – NextCloud kurulum sihirbazı
- Referans
Gereksinimler
- CentOS 7 64bit
- Root Yetkisi
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
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
- 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
PHP7-FPM konfigürasyonu başarıyla tamamlandı.
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;
‘nextclouduser’ kullanıcısı ve ‘nextcloud_db’ veritabanı oluşturuldu.
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/*
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ı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
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
Tüm sunucu yapılandırması tamamlandı.
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.
NextCloud Yönetici Kontrol Panel ‘i görüntülenir.
NextCloud Kullanıcı Ayarları
Admin Ayarları
NextCloud, CentOS 7 Sunucusu’nda Nginx,PHP7-FPM ve MariaDB ile kuruldu.
https://docs.nextcloud.com/