Hướng dẫn cài đặt nextcloud trên centos 7

Hướng dẫn cài đặt nextcloud trên centos 7

nextcloud là gì?

Nextcloud là một phần mềm Mã nguồn mở  miễn phí giống như Dropbox , một nhánh của dự án ownCloud. Nextcloud được viết bằng PHP và JavaScript, nó hỗ trợ nhiều hệ thống cơ sở dữ liệu như, MySQL / MariaDB, PostgreSQL, Cơ sở dữ liệu Oracle và SQLite.

Để giữ cho các tệp của bạn được đồng bộ hóa giữa Máy tính để bàn và máy chủ của riêng bạn, Nextcloud cung cấp các ứng dụng cho máy tính để bàn Windows, Linux và Mac và ứng dụng dành cho thiết bị di động cho Android và iOS.

Nextcloud không chỉ là bản sao dropbox, nó còn cung cấp các tính năng bổ sung như Lịch, Danh bạ, công việc Lịch biểu và phương tiện truyền trực tuyến bằng Ampache.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình bản phát hành Nextcloud mới nhất trên máy chủ CentOS 7. Tôi sẽ chạy Nextcloud với một máy chủ web Nginx và PHP7-FPM và sử dụng MariaDB làm hệ thống cơ sở dữ liệu.

BÀI VIẾT LIÊN QUAN:

Yêu cầu:

  • CentOS 7 64bit
  • Root privileges on the server

1. Install Nginx and PHP7-FPM on CentOS 7

Chạy lênh update Centos

yum check-update

Cài đặt EPEL package repository

yum -y install epel-release

Cài đặt Nginx từ the EPEL repository

yum -y install nginx

Thêm PHP7-FPM webtatic repository

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

Tiếp theo cài đặt PHP7-FPM và một vài additional packages dành cho nextcloud

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

Cuối cùng kiểm tra việc cài đặt PHP7 đã thành công chưa bằng lệnh sau:

php -v

kiểm tra việc cài đặt PHP7

2 Cấu hình PHP7-FPM

Trong bước này, chúng ta sẽ cấu hình php-fpm để chạy với Nginx. Php7-fpm sẽ chạy với nginx của người dùng và sử dụng cổng 9000.

Chỉnh sửa tập tin cấu hình php7-fpm mặc định với vim.

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

Tại dòng 8 và 10, thay đổi user và  group thành ‘nginx‘.

user = nginx
group = nginx

Tại dòng 22, chắc chắn rằng php-fpm đang chạy với server port.

listen = 127.0.0.1:9000

Xoá ghi chú ở các dòng 366 đến 370 để kích hoạt the php-fpm system environment variables. ( xoá dấu #)

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Lưu lại file và thoát trình soạn thảo Vim

Tiếp theo, tạo một thư mục session trong ‘/ var / lib /‘ và thay đổi chủ sở hữu thành người dùng ‘nginx’., bằng lệnh sau:

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

Khởi động php-fpm và Nginx

sudo systemctl start php-fpm
sudo systemctl start nginx

sudo systemctl enable php-fpm
sudo systemctl enable nginx

Khởi động php-fpm và Nginx

3 Cài đặt và cấu hình MariaDB

Tôi sẽ sử dụng cơ sở dữ liệu MariaDB cho Nextcloud. Cài đặt gói mariadb-server với yum

yum -y install mariadb mariadb-server

khỏi chạy MariaDB

systemctl start mariadb
systemctl enable mariadb

Cấu hình MariaDB root password

mysql_secure_installation

Nhập mật khẩu gốc của bạn khi được yêu cầu.

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

Mật khẩu root của MariaDB đã được thiết lập, bây giờ chúng ta có thể đăng nhập vào shell mysql để tạo một cơ sở dữ liệu mới và một người dùng mới cho Nextcloud.

mysql -u root -p
Type Password

Tôi sẽ tạo một cơ sở dữ liệu mới có tên ‘nextcloud_db‘ và một người dùng ‘nextclouduser‘ với mật khẩu ‘nextclouduser@‘.

Khi cài đặt các bạn thay thế tên database, user, password khác để đảm bảo an toàn, và nhớ ghi nhớ tài khoản này.

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;

tạo một cơ sở dữ liệu

Ok Tạo cơ sở dữ liệu cho nextcloud xong.

4 Tạo chứng chỉ SSL cho nextcloud

Trong hướng dẫn này, tôi sẽ chạy nextcloud với https. Bạn có thể sử dụng SSL miễn phí như let’s encrypt. Tôi sẽ tạo tệp chứng chỉ SSL của riêng mình với lệnh OpenSSL.

Tạo một thư mục mới cho tệp SSL.

mkdir -p /etc/nginx/cert/

Và tạo tệp chứng chỉ SSL mới bằng lệnh openssl bên dưới

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

Cuối cùng, thay đổi quyền của tất cả các tệp chứng chỉ thành 600

chmod 700 /etc/nginx/cert
chmod 600 /etc/nginx/cert/*

Tạo SSL

5 Tải và cài đặt Nextcloud

Tôi sẽ tải về Nextcloud trực tiếp đến máy chủ của Nextcloud với wget, vì vậy ta phải cài đặt wget đầu tiên. Ngoài ra,  cần chương trình giải nén zip

yum -y install wget unzip

Đi tới thư mục / tmp và tải xuống phiên bản Nextcloud mới nhất từ trang web Nextcloud với wget

cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip

Lưu ý: phần mình tô màu là link tải nextcloud, các bạn lên trang chủ để lấy link download phiên bản mới nhất và thay thế.

Giải nén tệp zip nextcloud và di chuyển nội dung của nó sang thư mục ‘/ usr / share / nginx / html /’

unzip nextcloud-10.0.2.zip
mv nextcloud/ /usr/share/nginx/html/

Tiếp theo, vào thư mục gốc của Nginx và tạo một thư mục ‘data’  cho Nextcloud

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

Thay đổi chủ sở hữu của thư mục ‘nextcloud’ thành người dùng và nhóm ‘nginx’

chown nginx:nginx -R nextcloud/

6 Cấu hình máy chủ ảo Nextcloud trong Nginx

Chúng ta đã tải về mã nguồn Nextcloud và cấu hình nó để chạy dưới máy chủ web Nginx. Nhưng chúng ta vẫn cần phải cấu hình một máy chủ ảo cho Nextcloud.

Tạo một file hình máy chủ ảo mới tên là ‘nextcloud.conf’ trong thư mục ‘conf.d‘ của Nginx

cd /etc/nginx/conf.d/
vim nextcloud.conf

Copy đoạn code dưới đây và dán vào

upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}
server {
    listen 80;
    server_name mydata.domainname.vn;
    # enforce https
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name mydata.domainname.vn;
 
    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;
    }
}

Lưu lại file và thoát vim

Kiểm tra việc cấu hình nginx để đảm bảo không có lỗi, và khởi động lại Nginx

nginx -t
systemctl restart nginx

Kiểm tra việc cấu hình nginx

7 Cấu hình SELinux và FirewallD cho Nextcloud

Cài đặt các công cụ quản lý SELinux bằng lệnh này

yum -y install policycoreutils-python-utils

Sau đó, chạy các lệnh dưới đây để cho phép Nextcloud chạy dưới SELinux, nhớ thay đổi thư mục Nextcloud trong trường hợp bạn cài đặt ở thư mục khác

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

Tiếp theo, chúng ta sẽ kích hoạt firewalld và mở các cổng HTTP và HTTPS cho Nextcloud.

systemctl start firewalld
systemctl enable firewalld

firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=https
firewall-cmd –reload

cấu hình firewall cho nextcloud

8 Nextcloud Installation Wizard

Mở trình duyệt gõ địa chỉ mydata.domainname.vn  Thiết lập thông tin và chọn Finish để hoàn thành việc cài đặt Nextcloud.

Lưu ý: Cấu hình DNS để trở tên miền về nextcloud server

Hướng dẫn cài đặt nextcloud trên centos 7

Ok vậy là xong.

Xem thêm: Cài đặt nextcloud trên ubuntu

Tham khảo: https://docs.nextcloud.com/

Nếu bạn thấy hữu ích hãy chia sẻ cho mọi người.