Cách cài đặt Nextcloud với Nginx và PHP7-FPM trên CentOS 7

theanh

Administrator
Nhân viên
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
  • 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
Bây giờ hãy cài đặt Nginx từ kho lưu trữ EPEL.
Mã:
yum -y install nginx
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:
Mã:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Tiếp theo, cài đặt PHP7-FPM và một số gói bổ sung để cài đặt Nextcloud.
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
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.
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
Ở dòng 8 và 10, hãy đổi người dùng và nhóm thành 'nginx'.
Mã:
user = nginx
group = nginx
Ở dòng 22, hãy đảm bảo php-fpm đang chạy dưới cổng máy chủ.
Mã:
listen = 127.0.0.1:9000
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.
Mã:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
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'.
Mã:
mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/
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.
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
Khởi động dịch vụ MariaDB và thêm dịch vụ này để chạy khi khởi động.
Mã:
systemctl start mariadb
systemctl enable mariadb
Bây giờ hãy cấu hình mật khẩu gốc MariaDB.
Mã:
mysql_secure_installation
Nhập mật khẩu gốc của bạn khi được yêu cầu.
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ậ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!
Mã:
mysql -u root -p
Nhập mật khẩu
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.
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/
Và tạo một tệp chứng chỉ SSL mới bằng lệnh theopenssl bên dưới.
Mã:
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key
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.
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
Đ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.
Mã:
cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip
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/'.
Mã:
unzip nextcloud-10.0.2.zip
mv nextcloud/ /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.
Mã:
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'.
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
Dán cấu hình máy chủ ảo Nextcloud bên dưới.
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;
 }
}
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ụ.
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
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.
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/'
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.
Mã:
systemctl start firewalld
systemctl enable firewalld
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.
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.


Tham khảo​

 
Back
Bên trên