Hướng Dẫn Cài Đặt Nextcloud Trên CentOS 7

25

Nextcloud là nền tảng lưu trữ đám mây được sử dụng tương đối nhiều hiện nay. Trong bài hướng dẫn này, mình sẽ hướng dẫn bạn đọc cách cài đặt và cấu hình Nextcloud trên CentOS 7, với Nginx là web server, và MariaDB làm database.

Install Nginx và PHP7-FPM :

Đầu tiên, ta add repository EPEL, có chứa Nginx:

# yum install epel-release

Tiếp theo, cài đặt Nginx:

# yum install nginx

Add gói rpm webtatic để cài đặt PHP7-FPM :

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

Lúc này ta đã có thể cài đặt PHP7-FPM và một số thành phần cần thiết cho Nextcloud :

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

Kiểm tra lại phiên bản PHP :

# php –v

Cấu hình PHP-FPM :

Sau khi cài đặt, ta cần cấu hình PHP để có thể sử dụng được với Nginx. Ta edit file /etc/php-fpm.d/www.conf, search đến dòng user và group và sửa lại như sau :

user = nginx

group = nginx

Cũng ở file này, ta tìm đến dòng listen, và chỉnh lại như sau :

listen = 127.0.0.1:9000

PHP sẽ lắng nghe trên port 9000.

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

Save và đóng lại.

Tạo một thư mục trong đường dẫn /var/lib và đổi quyền sở hữu thành user nginx :

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

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

Start và enable cả hai Nginx và PHP7-FPM:

# systemctl start php-fpm

# systemctl start nginx

# systemctl enable php-fpm

# systemctl enable nginx

Cài đặt MariaDB :

Như đã nói lúc nãy, ta sẽ sử dụng MariaDB làm hệ thống cơ sở dữ liệu, ta cài đặt :

# yum install mariadb-server mariadb

Tiếp theo :

# systemctl start mysql

# systemctl start mysql

Sau đó, cấu hình tài khoản root cho MariaDB :

# mysql_secure_installation
Set root password? [Y/n]

New password: my_strong_root_password

Re-enter new password: my_strong_root_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]

Tiếp theo, ta login vào MariaDB và cấu hình nó để dùng với Nextcloud :

# mysql -u root –p

Cấu hình như sau :

mysql> CREATE DATABASE my_nextclouddb;

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

mysql> GRANT ALL PRIVILEGES ON my_nextclouddb.* TO [email protected] IDENTIFIED BY '[email protected]';

mysql> FLUSH PRIVILEGES;

mysql> EXIT;

Tạo một SSL certificate :

Để Nextcloud kết nối HTTPS với client, bạn cần có một SSL Certificate. Ở đây mình dùng OpenSSL. Đầu tiên, tạo thư mục để chứa file SSL này :

# mkdir -p /etc/nginx/cert/

Và tiến hành tạo nó :

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

Lưu ý : / etc / nginx / cert / là thư mục chứa tất cả chứng chỉ SSL mà server của bạn sẽ yêu cầu.

Đổi Permission :

# chmod 700 /etc/nginx/cert

# chmod 600 /etc/nginx/cert/*

Cài đặt Nextcloud :

Bây giờ đã đến lúc tải và cài đặt  Nextcloud. Download gói cài đặt tại :

# https://download.nextcloud.com/server/releases/nextcloud-11.0.2.zip

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

# unzip nextcloud-11.0.2.zip

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

Tạo một thư mục data cho Nextcloud :

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

Đổi quyền sở hữu của Nextcloud sang cho user nginx :

# chown nginx:nginx -R /usr/share/nginx/html/nextcloud

Cấu hình một Virtual Host cho Nextcloud :

Tạo một file cấu hình Virtual Host : /etc/nginx/conf.d/nextcloud.conf. Paste vào file này những dòng cấu hình sau :

upstream php-handler {

    server 127.0.0.1:9000;

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

}




server {

    listen 80;

    server_name storage.mydomain.com;

    # enforce https

    return 301 https://$server_name$request_uri;

}




server {

    listen 443 ssl;

    server_name storage.mydomain.com;




    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;

    }

}

Save, exit và test Nginx :

# nginx –t

Sau đó restart lại :

# systemctl restart nginx

Như vậy là chúng ta đã hoàn tất phần cài đặt cơ bản. Để sử dụng ta mở trình duyệt web và nhập vào tên domain để có thể bắt đầu sử dụng.

BÌNH LUẬN

Please enter your comment!
Please enter your name here