Cách cài đặt ownCloud 9.1 với Nginx và MariaDB trên CentOS 7

theanh

Administrator
Nhân viên
OwnCloud là phần mềm máy chủ để đồng bộ hóa dữ liệu và chia sẻ tệp với giao diện web dễ sử dụng, có sẵn theo giấy phépmã nguồn mở. OwnCloud có thể được cài đặt trên máy chủ web Linux hoặc Windows, dễ cấu hình và có tài liệu hướng dẫn trực tuyến toàn diện. Máy khách gốc có sẵn cho Windows, MacOS và Linux (Ứng dụng dành cho máy tính để bàn). Ngoài ra còn có ứng dụng di động cho Android và iOS.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cài đặt và cấu hình ownCloud 9.1 trên máy chủ CentOS 7. Tôi sẽ chỉ cho bạn cách cấu hình ownCloud với Nginx và PHP 7 (dưới dạng FPM) và MariaDB dưới dạng hệ thống cơ sở dữ liệu.


Điều kiện tiên quyết​

  • Máy chủ CentOS 7
  • Quyền root

Bước 1 - Cài đặt Nginx và PHP7-FPM​

Trước khi bắt đầu cài đặt Nginx và php7-fpm, chúng ta phải thêm kho lưu trữ EPEL chứa phần mềm bổ sung không có trong kho lưu trữ cơ sở CentOS. Cài đặt EPEL 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
Bây giờ 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ữ cho PHP 7 có sẵn trên mạng, tôi sẽ sử dụng kho lưu trữ webtatic ở đây.

Thêm kho lưu trữ webtatic:
Mã:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Tiếp theo, cài đặt PHP7-FPM với một số gói bổ sung để cài đặt ownCloud.
Mã:
yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json
Kiểm tra phiên bản PHP từ thiết bị đầu cuối máy chủ để đảm bảo cài đặt thành cô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 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ủ 9000.
Mã:
listen = 127.0.0.1:9000
Bỏ chú thích các dòng 366-370 cho 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

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/
Khởi động php-fpm và nginx, sau đó thêm nó để khởi động 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​

OwnCloud hỗ trợ cơ sở dữ liệu PostgreSQL và MySQL, trong hướng dẫn này, chúng ta sẽ sử dụng MariaDB cho cơ sở dữ liệu ownCloud. Cài đặt gói mariadb-server từ kho lưu trữ CentOS bằng lệnh yum.
Mã:
yum -y install mariadb mariadb-server
Khởi động dịch vụ MariaDB và cấu hình mật khẩu gốc MariaDB.
Mã:
systemctl start mariadb
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à quyền 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 và người dùng mới cho ownCloud. Chúng ta sẽ tạo cơ sở dữ liệu mới '

Chúng ta sẽ tạo cơ sở dữ liệu mới 'owncloud_db' dưới người dùng 'ownclouduser' với mật khẩu 'ownclouduser@'. Vui lòng chọn một mật khẩu khác và an toàn hơ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ã:
create database owncloud_db;
create user ownclouduser@localhost được xác định bởi 'ownclouduser@';
cấp tất cả các quyền trên owncloud_db.* cho ownclouduser@localhost được xác định bởi 'ownclouduser@';
xóa quyền;


Cơ sở dữ liệu 'owncloud_db' với người dùng 'ownclouduser' đã được tạo.


Bước 4 - Tạo Chứng chỉ SSL tự ký​

Trong hướng dẫn này, chúng ta sẽ chạy owncloud dưới kết nối https cho máy khách. Bạn có thể sử dụng chứng chỉ SSL miễn phí như let's encrypt. Trong hướng dẫn này, tôi sẽ tạo tệp chứng chỉ SSL của riêng mình bằng lệnh OpenSSL.

Tạo thư mục mới cho tệp SSL.
Mã:
mkdir -p /etc/nginx/cert/
Sau đó tạo tệp chứng chỉ SSL mới bằng lệnh OpenSSL bên dưới.
Mã:
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/owncloud.crt -keyout /etc/nginx/cert/owncloud.key
Nhập thông tin chi tiết cho chứng chỉ SSL theo yêu cầu của lệnh OpenSSL. Sau đó, 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 600 /etc/nginx/cert/*



Bước 5 - Tải xuống OwnCloud​

Chúng ta sẽ tải xuống ownCloud bằng lệnh wget, vì vậy trước tiên chúng ta cần cài đặt gói wget. Ngoài ra, chúng ta cần giải nén gói.
Mã:
yum -y install wget unzip
Đi đến thư mục tmp và tải xuống ownCloud 9.1 ổn định mới nhất từ trang ownCloud bằng wget.
Mã:
cd /tmp
wget https://download.owncloud.org/community/owncloud-9.1.2.zip
Giải nén tệp zip ownCloud và di chuyển đến thư mục '/usr/share/nginx/html/'.
Mã:
giải nén owncloud-9.1.2.zip
mv owncloud/ /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 owncloud.
Mã:
cd /usr/share/nginx/html/
mkdir -p owncloud/data/
Thay đổi chủ sở hữu của thư mục 'owncloud' thành người dùng và nhóm 'nginx'.
Mã:
chown nginx:nginx -R owncloud/

Bước 6 - Cấu hình OwnCloud Virtual Host trong Nginx​

Ở bước 5, chúng tôi đã tải xuống mã nguồn ownCloud 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 ownCloud.

Tạo tệp cấu hình máy chủ ảo mới 'owncloud.conf' trong thư mục 'conf.d'.
Mã:
cd /etc/nginx/conf.d/
vim owncloud.conf
Dán cấu hình máy chủ ảo ownCloud 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 data.owncloud.co;
 # enforce https
 return 301 https://$server_name$request_uri;
}
 
server {
 listen 443 ssl;
 server_name data.owncloud.co;
 
 ssl_certificate /etc/nginx/cert/owncloud.crt;
 ssl_certificate_key /etc/nginx/cert/owncloud.key;
 
 # Thêm tiêu đề để phục vụ 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ỹ nội dung này chủ đề đầu tiên.
 add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
 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/owncloud/;
 
 location = /robots.txt {
 allow all;
 log_not_found off;
 access_log off;
 }
 
 # Nội dung sau Chỉ cần 2 quy tắc 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;
 }
 
 location /.well-known/acme-challenge { }
 
 # đặ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;
 
 trang lỗi 403 /core/templates/403.php;
 trang lỗi 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)/ {
 trả về 404;
 }
 vị trí ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
 trả về 404;
 }
 
 vị trí ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
 fastcgi_split_path_info ^(.+\.php)(/.*)$;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param HTTPS on;
 fastcgi_param modHeadersAvailable true; #Tránh gửi tiêu đề bảo mật hai lần
 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 $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 những mục này vào những mục ở 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=15552000; includeSubDomains";
 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ý quyền 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 các tài sản khác
 access_log off;
 }
}
Lưu tệp và thoát khỏi trình chỉnh sửa.

Cuối cùng, hãy kiểm tra cấu hình Nginx và đảm bảo không có lỗi, sau đó khởi động lại dịch vụ.
Mã:
nginx -t
systemctl restart nginx



Bước 7 - Cấu hình SELinux và FirewallD​

Trong hướng dẫn này, chúng ta sẽ để SELinux ở chế độ thực thi, vì vậy chúng ta cần gói công cụ quản lý SELinux để cấu hình nó.

Cài đặt công cụ quản lý SELinux bằng lệnh yum này lệnh.
Mã:
yum -y install policycoreutils-python
Sau đó thực hiện các lệnh bên dưới với tư cách là root để cho phép ownCloud chạy dưới SELinux. Nhớ thay đổi thư mục ownCloud trong trường hợp bạn sử dụng thư mục khác để cài đặt ownCloud.
Mã:
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/data(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/config(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/apps(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/assets(/.*)?'
quản lý ngữ cảnh fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.user.ini'
 
restorecon -Rv '/usr/share/nginx/html/owncloud/'
Tiếp theo, bật dịch vụ firewalld và mở cổng HTTP và HTTPS cho owncloud.

Khởi động firewalld và cấu hình để bắt đầu khi khởi động.
Mã:
systemctl start firewalld
systemctl enable firewalld
Mở 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


Phần cấu hình máy chủ đã hoàn tất.


Bước 8 - Trình hướng dẫn cài đặt OwnCloud​

Bây giờ hãy mở trình duyệt web của bạn và nhập tên miền theownCloud vào trường URL, của tôi là: data.owncloud.co và 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 mới của bạn, sau đó nhập thông tin xác thực cơ sở dữ liệu và nhấp vào 'Hoàn tất thiết lập'.



Trình quản lý tệp bảng điều khiển quản trị.



Cài đặt người dùng.



Cài đặt quản trị.



Owncloud đã được cài đặt thành công với Nginx, PHP7-FPM và MariaDB trên Máy chủ CentOS 7.


Tham khảo​

 
Back
Bên trên