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.
[tag_post1]
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
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
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
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/*
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
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
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
Ok vậy là xong.
Xem thêm: Cài đặt nextcloud trên ubuntu 18.04
Tham khảo: https://docs.nextcloud.com/