Nextcloud là phần mềm miễn phí (Mã nguồn mở) giống Dropbox, một nhánh của dự án ownCloud. Nextcloud được viết bằng PHP và JavaScript, hỗ trợ nhiều hệ thống cơ sở dữ liệu như MySQL/MariaDB, PostgreSQL, Oracle Database và SQLite. Để giữ cho các tệp của bạn được đồng bộ hóa giữa Desktop 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 di động cho Android và iOS. Nextcloud không chỉ là bản sao của Dropbox, nó còn cung cấp các tính năng bổ sung như Lịch, Danh bạ, Lên lịch tác vụ và phương tiện truyền phát trực tuyến với 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 10 mới nhất trên máy chủ CentOS 7. Tôi sẽ chạy Nextcloud với máy chủ web Nginx và PHP7-FPM và sử dụng MariaDB làm hệ thống cơ sở dữ liệu.
Điều kiện tiên quyết
Bây giờ hãy cài đặt Nginx từ kho lưu trữ EPEL.
Sau đó, chúng ta phải thêm một kho lưu trữ khác cho php7-fpm. Có một số kho lưu trữ có sẵn trên mạng cung cấp các gói PHP 7, tôi sẽ sử dụng webtatichere.
Thêm kho lưu trữ webtatic PHP7-FPM:
Tiếp theo, cài đặt PHP7-FPM và một số gói bổ sung để cài đặt Nextcloud.
Cuối cùng, hãy kiểm tra phiên bản PHP từ thiết bị đầu cuối máy chủ để xác minh rằng PHP đã được cài đặt đúng.
Chỉnh sửa tệp cấu hình php7-fpm mặc định bằng vim.
Ở dòng 8 và 10, hãy đổi người dùng và nhóm thành 'nginx'.
Ở dòng 22, hãy đảm bảo php-fpm đang chạy dưới cổng máy chủ.
Bỏ chú thích dòng 366-370 để kích hoạt các biến môi trường hệ thống php-fpm.
Lưu tệp và thoát khỏi trình soạn thảo vim.
Tiếp theo, tạo một thư mục mới cho đường dẫn phiên trong thư mục '/var/lib/' và thay đổi chủ sở hữu thành người dùng 'nginx'.
Bây giờ hãy khởi động php-fpm và Nginx, sau đó bật các dịch vụ để bắt đầu khi khởi động.
Cấu hình PHP7-FPM đã hoàn tất.
Khởi động dịch vụ MariaDB và thêm dịch vụ này để chạy khi khởi động.
Bây giờ hãy cấu hình mật khẩu gốc MariaDB.
Nhập mật khẩu gốc của bạn khi được yêu cầu.
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 cơ sở dữ liệu mới và người dùng mới cho Nextcloud. Tôi sẽ tạo cơ sở dữ liệu mới có tên là 'nextcloud_db' và người dùng 'nextclouduser' với mật khẩu 'nextclouduser@'. Chọn mật khẩu an toàn cho cài đặt của bạn!
Nhập truy vấn mysql bên dưới để tạo cơ sở dữ liệu mới và người dùng mới.
Cơ sở dữ liệu nextcloud_db với người dùng 'nextclouduser' đã được tạo.
Tạo một thư mục mới cho tệp SSL.
Và tạo một tệp chứng chỉ SSL mới bằng lệnh theopenssl bên dưới.
Cuối cùng, hãy thay đổi quyền của tất cả các tệp chứng chỉ thành 600 bằng lệnh chmod.
Đi đến thư mục /tmp và tải xuống phiên bản Nextcloud 10 ổn định mới nhất từ trang web Nextcloud bằng wget.
Giải nén tệp zip nextcloud và di chuyển nội dung của nó vào thư mục '/usr/share/nginx/html/'.
Tiếp theo, đi đến thư mục gốc web Nginx và tạo thư mục 'data' mới cho Nextcloud.
Thay đổi chủ sở hữu của thư mục 'nextcloud' thành người dùng và nhóm 'nginx'.
Dán cấu hình máy chủ ảo Nextcloud bên dưới.
Lưu tệp và thoát vim.
Bây giờ hãy kiểm tra cấu hình Nginx để đảm bảo không có lỗi,s- Sau đó, khởi động lại dịch vụ.
Cài đặt SELinux management tools bằng lệnh này.
Sau đó thực thi các lệnh bên dưới với tư cách là người dùng root để cho phép Nextcloud chạy dưới SELinux. Nhớ thay đổi thư mục Nextcloud trong trường hợp bạn sử dụng một thư mục khác.
Tiếp theo, chúng ta sẽ kích hoạt dịch vụ firewalld và mở các cổng HTTP và HTTPS cho Nextcloud.
Khởi động firewalld và cho phép nó khởi động khi khởi động.
Bây giờ hãy mở các cổng HTTP và HTTPS bằng lệnh firewall-cmd, sau đó tải lại tường lửa.
Tất cả cấu hình máy chủ đã hoàn tất.
Nhập tên người dùng và mật khẩu quản trị viên mong muốn, sau đó nhập thông tin xác thực cơ sở dữ liệu của bạn. Nhấp vào 'Hoàn tất thiết lập'.
Bảng điều khiển quản trị Nextcloud (Trình quản lý tệp) xuất hiện.
Cài đặt người dùng Nextcloud.
Cài đặt quản trị.
Nextcloud đã được cài đặt với Nginx, PHP7-FPM và MariaDB trên Máy chủ CentOS 7.
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 10 mới nhất trên máy chủ CentOS 7. Tôi sẽ chạy Nextcloud với máy chủ web Nginx và PHP7-FPM và sử dụng MariaDB làm hệ thống cơ sở dữ liệu.
Điều kiện tiên quyết
- CentOS 7 64bit
- Quyền root trên máy chủ
Bước 1 - Cài đặt Nginx và PHP7-FPM trên CentOS 7
Trước khi bắt đầu cài đặt Nginx và php7-fpm, chúng ta phải thêm kho lưu trữ gói EPEL. Cài đặt bằng lệnh yum này.
Mã:
yum -y install epel-release
Mã:
yum -y install nginx
Thêm kho lưu trữ webtatic PHP7-FPM:
Mã:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Mã:
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
Mã:
php -v
Bước 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 dưới người dùng nginx và lắng nghe trên cổng 9000.Chỉnh sửa tệp cấu hình php7-fpm mặc định bằng vim.
Mã:
vim /etc/php-fpm.d/www.conf
Mã:
user = nginx
group = nginx
Mã:
listen = 127.0.0.1:9000
Mã:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Tiếp theo, tạo một thư mục mới cho đường dẫn phiên trong thư mục '/var/lib/' và thay đổi chủ sở hữu thành người dùng 'nginx'.
Mã:
mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/
Mã:
sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx
Cấu hình PHP7-FPM đã hoàn tất.
Bước 3 - Cài đặt và cấu hình MariaDB
Tôi sẽ sử dụng MariaDB cho cơ sở dữ liệu Nextcloud. Cài đặt gói themariadb-server từ kho lưu trữ CentOS bằng yum.
Mã:
yum -y install mariadb mariadb-server
Mã:
systemctl start mariadb
systemctl enable mariadb
Mã:
mysql_secure_installation
Mã:
Đặt mật khẩu gốc? [Y/n] Y
Mật khẩu mới:
Nhập lại mật khẩu mới:
Xóa người dùng ẩn danh? [Y/n] Y
Không cho phép đăng nhập root từ xa? [Y/n] Y
Xóa cơ sở dữ liệu thử nghiệm và truy cập vào cơ sở dữ liệu đó? [Y/n] Y
Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Mã:
mysql -u root -p
Nhập mật khẩu
Mã:
tạo cơ sở dữ liệu nextcloud_db;
tạo người dùng nextclouduser@localhost được xác định bởi 'nextclouduser@';
cấp tất cả các đặc quyền trên nextcloud_db.* cho nextclouduser@localhost được xác định bởi 'nextclouduser@';
xóa các đặc quyền;
Cơ sở dữ liệu nextcloud_db với người dùng 'nextclouduser' đã được tạo.
Bước 4 - Tạo chứng chỉ SSL tự ký cho Nextcloud
Trong hướng dẫn này, tôi sẽ chạy nextcloud với kết nối https cho máy khách. Bạn có thể sử dụng SSL miễn phí như let's encrypt hoặc tạo chứng chỉ SSL tự ký. Tôi sẽ tạo tệp chứng chỉ SSL tự ký của riêng mình bằng lệnh OpenSSL.Tạo một thư mục mới cho tệp SSL.
Mã:
mkdir -p /etc/nginx/cert/
Mã:
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key
Mã:
chmod 700 /etc/nginx/cert
chmod 600 /etc/nginx/cert/*
Bước 5 - Tải xuống và cài đặt Nextcloud
Chúng ta sẽ tải Nextcloud bằng wget trực tiếp lên máy chủ, vì vậy trước tiên chúng ta phải cài đặt wget. Ngoài ra, chúng ta cần chương trình giải nén. Cài đặt cả hai ứng dụng bằng yum.
Mã:
yum -y install wget unzip
Mã:
cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip
Mã:
unzip nextcloud-10.0.2.zip
mv nextcloud/ /usr/share/nginx/html/
Mã:
cd /usr/share/nginx/html/
mkdir -p nextcloud/data/
Mã:
chown nginx:nginx -R nextcloud/
Bước 6 - Cấu hình Nextcloud Virtual Host trong Nginx
Ở bước 5, chúng tôi đã tải xuống mã nguồn Nextcloud và cấu hình để chạy dưới máy chủ web Nginx. Nhưng chúng tôi vẫn cần cấu hình máy chủ ảo cho Nextcloud. Tạo tệp cấu hình máy chủ ảo mới 'nextcloud.conf' trong thư mục 'conf.d' của Nginx.
Mã:
cd /etc/nginx/conf.d/
vim nextcloud.conf
Mã:
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name cloud.nextcloud.co;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name cloud.nextcloud.co;
ssl_certificate /etc/nginx/cert/nextcloud.crt;
ssl_certificate_key /etc/nginx/cert/nextcloud.key;
# Thêm tiêu đề để phục vụ các tiêu đề liên quan đến bảo mật
# Trước khi bật tiêu đề Strict-Transport-Security vui lòng đọc kỹ
# chủ đề này trước.
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;
# Đường dẫn đến thư mục gốc của cài đặt của bạn
root /usr/share/nginx/html/nextcloud/;
location = /robots.txt {
allow all;
log_not_found off;
access_log tắt;
}
# Chỉ cần 2 quy tắc sau cho ứng dụng user_webfinger.
# Bỏ chú thích nếu bạn định sử dụng ứng dụng này.
#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;
}
# đặt kích thước tải lên tối đa
client_max_body_size 512M;
fastcgi_buffers 64 4K;
# Vô hiệu hóa gzip để tránh xóa tiêu đề ETag
tắt gzip;
# Bỏ ghi chú nếu máy chủ của bạn được xây dựng bằng mô-đun ngx_pagespeed
# Mô-đun này hiện không được hỗ trợ.
# tắt pagespeed;
lỗi_trang 403 /core/templates/403.php;
lỗi_trang 404 /core/templates/404.php;
vị trí / {
viết lại ^ /index.php$uri;
}
vị trí ~ ^/(?:build|tests|config|lib|bên thứ 3|templates|data)/ {
từ chối tất cả;
}
vị trí ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
từ chối tất cả;
}
vị trí ~ ^/(?: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;
#Tránh gửi tiêu đề bảo mật hai lần
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;
}
# Thêm tiêu đề kiểm soát bộ đệm cho các tệp js và css
# Đảm bảo tiêu đề NẰM DƯỚI khối PHP
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Thêm tiêu đề để phục vụ các tiêu đề liên quan đến bảo mật (Mục đích là
# sao chép các tiêu đề đó vào các tiêu đề ở trên)
# Trước khi bật tiêu đề Strict-Transport-Security, vui lòng đọc kỹ
# chủ đề này trước.
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;
# Tùy chọn: Không ghi nhật ký truy cập vào tài sản
access_log off;
}
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
# Tùy chọn: Không ghi nhật ký truy cập vào tài sản khác
access_log off;
}
}
Bây giờ hãy kiểm tra cấu hình Nginx để đảm bảo không có lỗi,s- Sau đó, khởi động lại dịch vụ.
Mã:
nginx -t
systemctl khởi động lại nginx
Bước 7 - Cấu hình SELinux và FirewallD cho Nextcloud
Trong hướng dẫn này, chúng ta sẽ để SELinux ở chế độ thực thi, vì vậy chúng ta cần một gói mới SELinux management tools để cấu hình SELinux cho Nextcloud.Cài đặt SELinux management tools bằng lệnh này.
Mã:
yum -y install policycoreutils-python-utils
Mã:
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/data(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/config(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/apps(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/assets(/.*)?'
quản lý ngữ cảnh 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/'
Khởi động firewalld và cho phép nó khởi động khi khởi động.
Mã:
systemctl start firewalld
systemctl enable firewalld
Mã:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Tất cả cấu hình máy chủ đã hoàn tất.
Bước 8 - Trình hướng dẫn cài đặt Nextcloud
Mở trình duyệt web của bạn và nhập tên miền Nextcloud của bạn, của tôi là: cloud.nextcloud.co. Bạn sẽ được chuyển hướng đến kết nối https an toàn.Nhập tên người dùng và mật khẩu quản trị viên mong muốn, sau đó nhập thông tin xác thực cơ sở dữ liệu của bạn. Nhấp vào 'Hoàn tất thiết lập'.
Bảng điều khiển quản trị Nextcloud (Trình quản lý tệp) xuất hiện.
Cài đặt người dùng Nextcloud.
Cài đặt quản trị.
Nextcloud đã được cài đặt với Nginx, PHP7-FPM và MariaDB trên Máy chủ CentOS 7.