Cài Đặt Owncloud 9.1.4 Trên CentOS 7

21

Menu bài viết

Owncloud là nền tảng mã nguồn mở phục vụ cho nhu cầu lưu trữ và đồng bộ file cực kì hữu dụng trong môi trường doanh nghiệp. Owncloud sử dụng giao diện web, giúp nhà quản trị dễ dàng thao tác với nó.

Trong bài viết này, mình sẽ hướng dẫn bạn đọc cách cài đặt Owncloud trên CentOS 7, sử dụng Nginx làm webserver.

Cài đặt Nginx và PHP :

Đầu tiên, ta cài đặt Nginx. Chương trình webserver này có sẵn trên repository EPEL, vì vậy ta chỉ cần add thêm :

# yum install epel-release

Tiếp theo :

# yum install nginx

Ta cài tiếp PHP-FPM (FastCGI Process Manager), sử dụng repository webtatic :

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

Sau bước trên, ta đã có thể  cài PHP và các package mà Owncloud yêu cầu :

# yum install php70w-fpm php70w-cli php70w-json  php70w-mcrypt  php70w-pear php70w-mysql php70w-xml php70w-gd php70w-mbstring php70w-pdo

Configure PHP-FPM cho Nginx :

Cấu hình PHP-FPM được thực hiện bằng cách edit file cấu hình php7-fpm :

# $EDITOR /etc/php-fpm.d/www.conf

Tìm đến dòng có chứa các cụm từ “user” và “group”, sau đó thay đổi :

user = nginx

group = nginx

Tiếp tục kéo xuống, tìm đến dòng “ listen “, và đổi thành nội dung như sau :

listen = 127.0.0.1:9000

Tiếp theo, bỏ comment những dòng sau :

env[HOSTNAME] = $HOSTNAME

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

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

Lưu và đóng file.

Tạo tiếp một folder tại thư mục /var/lib/, bằng dòng lệnh :

# mkdir -p /var/lib/php/session

Đổi quyền sở hữu sang user nginx :

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

Start nginx và PHP-FPM:

# sudo systemctl start php-fpm

# sudo systemctl start nginx

Enable để service tự khởi chạy mỗi khi máy tính khởi động :

# systemctl enable nginx

# systemctl enable php-fpm

Cài đặt MariaDB :

MariaDB có sẵn trên repository của CentOS, cài bằng dòng lệnh :

# yum install mariadb mariadb-server

Cấu hình MariaDB root password :

# mysql_secure_installation

Trong quá trình xử lý, sẽ có một số câu hỏi :

Set root password? [Y/n]

New password:

Re-enter new password:




Remove anonymous users? [Y/n]

Disallow root login remotely? [Y/n]

Remove test database and access to it? [Y/n]

Reload privilege tables now? [Y/n]

Login vào MariaDB để tạo database và user cho Owncloud. Trong ví dụ của mình, my_owncloud_db là tên database và ocuser là user. Password là my_strong_password :

# mysql -u root –p

Và sau đó :

mysql> CREATE DATABASE my_owncloud_db;

mysql> CREATE USER [email protected] IDENTIFIED BY 'my_strong_password';

mysql> GRANT ALL PRIVILEGES ON my_owncloud_db.* to [email protected] IDENTIFIED BY 'my_strong_passowrd';

mysql> FLUSH PRIVILEGES;

Generate SSL Certificate :

Đầu tiên, ta tạo thư mục chứa file SSL Certificate :

# mkdir -p /etc/nginx/cert/

Tiếp theo, generate một file SSL Certificate, mình sử dụng openssl :

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

Đổi permission :

# chmod 600 /etc/nginx/cert/*

Download ownCloud :

# wget https://download.owncloud.org/community/owncloud-9.1.4.zip

Giải nén và di chuyển nó vào thư mục /usr/share/nginx/html/ :

# unzip owncloud-9.1.2.zip

# mv owncloud/ /usr/share/nginx/html/

Đi đến thư mục gốc của Ngnix, sau đó tạo thư mục data cho Owncloud :

# cd /usr/share/nginx/html/

# mkdir -p owncloud/data/

Cấu hình Virtual Host trên Nginx :

Tạo một file cấu hình Virtual Host bằng dòng lệnh :

# $EDITOR /etc/nginx/conf.d/owncloud.conf

Paste những dòng sau vào file :

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 storage.example.com;




    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;

    }

}

Lưu và đóng file. Test lại Nginx :

# nginx –t

Nếu ok, hệ thống sẽ trả về kết quả “Syntax OK”.

Restart lại Nginx :

# systemctl restart nginx

Tổng kết :

Như vậy là ta đã hoàn tất phần cấu hình. Tiếp theo ta chỉ cần mở trình duyệt và đăng nhập theo đường dẫn ( VD :  storage.example.com ) để sử dụng Owncloud.

BÌNH LUẬN

Please enter your comment!
Please enter your name here