OwnCloud adalah perangkat lunak server untuk sinkronisasi data dan berbagi file dengan antarmuka berbasis web yang mudah digunakan yang tersedia di bawah lisensi sumber terbuka. OwnCloud dapat diinstal pada server web Linux atau Windows, mudah dikonfigurasi dan memiliki dokumentasi online yang komprehensif. Klien asli tersedia untuk Windows, MacOS dan Linux (Aplikasi Desktop). Ada juga aplikasi seluler untuk Android dan iOS.
Dalam tutorial ini, saya akan memandu Anda untuk menginstal dan mengkonfigurasi ownCloud 9.1 di server CentOS 7. Saya akan menunjukkan cara mengkonfigurasi ownCloud dengan Nginx dan PHP 7 (sebagai FPM) dan MariaDB sebagai sistem database.
Prasyarat
- Server CentOS 7
- Hak Istimewa Root
Langkah 1 - Instal Nginx dan PHP7-FPM
Sebelum kita mulai dengan instalasi Nginx dan php7-fpm, kita harus menambahkan repositori EPEL yang berisi perangkat lunak tambahan yang tidak tersedia dari repositori dasar CentOS. Instal EPEL dengan perintah yum ini.
yum -y install epel-release
Sekarang instal Nginx dari repositori Epel.
yum -y install nginx
Sekarang kita harus menambahkan repositori lain untuk php7-fpm. Ada beberapa repositori untuk PHP 7 yang tersedia di internet, saya akan menggunakan repositori webtatic di sini.
Tambahkan repositori webtatic:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Selanjutnya, instal PHP7-FPM dengan beberapa paket tambahan untuk instalasi ownCloud.
yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json
Periksa versi PHP dari terminal server untuk memastikan bahwa instalasi berhasil.
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 pengguna nginx dan mendengarkan pada port 9000.
Edit konfigurasi default php7-fpm dengan vim.
vim /etc/php-fpm.d/www.conf
Di baris 8 dan 10, ubah pengguna dan grup menjadi 'nginx '.
user = nginx
group = nginx
Pada baris 22, pastikan php-fpm berjalan di bawah server port 9000.
listen = 127.0.0.1:9000
Batalkan komentar pada baris 366-370 untuk 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
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/
Mulai php-fpm dan nginx, lalu tambahkan untuk memulai saat boot.
sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx
Konfigurasi PHP7-FPM selesai.
Langkah 3 - Instal dan Konfigurasi MariaDB
OwnCloud mendukung database PostgreSQL dan MySQL, dalam tutorial ini, kita akan menggunakan MariaDB untuk database ownCloud. Instal paket mariadb-server dari repositori CentOS dengan perintah yum.
yum -y install mariadb mariadb-server
Mulai layanan MariaDB dan konfigurasikan kata sandi root MariaDB.
systemctl start mariadb
mysql_secure_installation
Ketikkan kata sandi root Anda saat diminta.
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
Kata sandi root MariaDB telah ditetapkan, sekarang kita dapat login ke shell MySQL untuk membuat database dan pengguna baru untuk ownCloud. Kita akan membuat database baru '
Kami akan membuat database baru 'owncloud_db ' di bawah pengguna 'ownclouduser ' dengan sandi '[email protected] '. Harap pilih sandi yang berbeda dan aman untuk penginstalan Anda!
mysql -u root -p
Type Password
Ketik kueri MySQL di bawah ini untuk membuat database baru dan pengguna baru.
create database owncloud_db;
create user [email protected] identified by '[email protected]';
grant all privileges on owncloud_db.* to [email protected] identified by '[email protected]';
flush privileges;
'owncloud_db database' dengan pengguna 'ownclouduser' telah dibuat.
Langkah 4 - Buat Sertifikat SSL yang ditandatangani sendiri
Dalam tutorial ini, kita akan menjalankan owncloud di bawah koneksi https untuk klien. Anda dapat menggunakan sertifikat SSL gratis seperti mari mengenkripsi. Dalam tutorial ini, saya akan membuat file sertifikat SSL saya sendiri dengan perintah OpenSSL.
Buat direktori baru untuk file SSL.
mkdir -p /etc/nginx/cert/
Kemudian buat file sertifikat SSL baru dengan perintah OpenSSL di bawah ini.
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/owncloud.crt -keyout /etc/nginx/cert/owncloud.key
Masukkan detail untuk sertifikat SSL seperti yang diminta oleh perintah OpenSSL. Kemudian ubah izin semua file sertifikat menjadi 600 dengan chmod.
chmod 600 /etc/nginx/cert/*
Langkah 5 - Unduh OwnCloud
Kita akan mendownload ownCloud dengan perintah wget, jadi kita perlu menginstal paket wget terlebih dahulu. Selain itu, kami membutuhkan paket unzip.
yum -y install wget unzip
Buka direktori tmp dan unduh ownCloud 9.1 stabil terbaru dari situs ownCloud dengan wget.
cd /tmp
wget https://download.owncloud.org/community/owncloud-9.1.2.zip
Ekstrak file zip ownCloud dan pindahkan ke direktori '/usr/share/nginx/html/'.
unzip owncloud-9.1.2.zip
mv owncloud/ /usr/share/nginx/html/
Selanjutnya, buka direktori root web nginx dan buat direktori 'data' baru untuk owncloud.
cd /usr/share/nginx/html/
mkdir -p owncloud/data/
Ubah pemilik direktori 'owncloud' menjadi pengguna dan grup 'nginx'.
chown nginx:nginx -R owncloud/
Langkah 6 - Konfigurasikan OwnCloud Virtual Host di Nginx
Pada langkah 5, kami telah mengunduh kode sumber ownCloud dan mengonfigurasinya untuk berjalan di bawah server web Nginx. Tapi kita masih perlu mengkonfigurasi virtual host untuk ownCloud.
Buat file konfigurasi virtual host baru 'owncloud.conf' di direktori 'conf.d'.
cd /etc/nginx/conf.d/
vim owncloud.conf
Tempel konfigurasi host virtual ownCloud di bawah.
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name data.owncloud.co;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name data.owncloud.co;
ssl_certificate /etc/nginx/cert/owncloud.crt;
ssl_certificate_key /etc/nginx/cert/owncloud.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=15552000; includeSubDomains";
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/owncloud/;
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;
}
location /.well-known/acme-challenge { }
# 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)/ {
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
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 $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=15552000; includeSubDomains";
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;
}
}
Simpan file dan keluar dari editor.
Terakhir, uji konfigurasi Nginx dan pastikan tidak ada kesalahan, lalu restart layanan.
nginx -t
systemctl restart nginx
Langkah 7 - Konfigurasi SELinux dan FirewallD
Dalam tutorial ini, kita akan membiarkan SELinux dalam mode penegakan, jadi kita memerlukan paket alat manajemen SELinux untuk mengonfigurasinya.
Instal alat manajemen SELinux dengan perintah yum ini.
yum -y install policycoreutils-python
Kemudian jalankan perintah di bawah ini sebagai root untuk memungkinkan ownCloud berjalan di bawah SELinux. Ingatlah untuk mengubah direktori ownCloud jika Anda menggunakan direktori yang berbeda untuk instalasi ownCloud.
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.user.ini'
restorecon -Rv '/usr/share/nginx/html/owncloud/'
Selanjutnya, aktifkan layanan firewalld dan buka port HTTP dan HTTPS untuk owncloud.
Mulai firewalld dan konfigurasikan untuk memulai saat boot.
systemctl start firewalld
systemctl enable firewalld
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
Bagian konfigurasi server selesai.
Langkah 8 - Panduan Instalasi OwnCloud
Sekarang buka browser web Anda dan ketikkan nama domain ownCloud ke dalam bidang URL, milik saya adalah:data.owncloud.co, dan Anda akan diarahkan ke koneksi HTTPS yang aman.
Ketik nama pengguna dan kata sandi admin baru Anda, lalu ketik kredensial basis data dan klik 'Selesai Penyiapan '.
Manajer File Dasbor Admin.
Pengaturan Pengguna.
Setelan Admin.
Owncloud telah berhasil diinstal dengan Nginx, PHP7-FPM, dan MariaDB di Server CentOS 7.