Craft CMS là một hệ thống quản lý nội dung nguồn mở để tạo trang web. Đây là một CMS an toàn và có thể mở rộng với hệ sinh thái plugin mở rộng và các plugin miễn phí và trả phí chất lượng cao. Nó có bảng điều khiển trực quan, thân thiện với người dùng để tạo nội dung và các tác vụ quản trị. Nó được xây dựng trên nền tảng Yii PHP. Công cụ tạo mẫu Twig cung cấp năng lượng cho hệ thống tạo mẫu của nó. Nó có thể hoạt động với cả cơ sở dữ liệu MySQL và PostgreSQL để lưu trữ và sử dụng cơ sở dữ liệu Redis để lưu trữ đệm và lưu trữ phiên.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Craft CMS trên máy chủ Debian 12. Bạn cũng sẽ học cách bật Redis để làm việc với nó và cách sao lưu và khôi phục trang web được tạo bằng Craft CMS.
[*]
Một số gói thiết yếu là cần thiết để chạy hướng dẫn và Craft CMS. Một số trong số này sẽ có trên máy chủ của bạn.
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Cho phép HTTP và HTTPS cổng.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy một đầu ra.
Tải lại tường lửa để kích hoạt các thay đổi.
Tạo và mở tệp
Dán mã sau vào đó.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt Nginx.
Xác minh cài đặt.
Bật và khởi động máy chủ Nginx dịch vụ.
Kiểm tra trạng thái dịch vụ.
Bước đầu tiên là lấy kho lưu trữ Epel.
Tiếp theo, cài đặt kho lưu trữ Remi.
Kiểm tra các luồng PHP khả dụng.
Phiên bản mặc định là 8.1. Tại thời điểm viết hướng dẫn này, Craft CMS tương thích với PHP 8.2. Do đó, hãy bật kho lưu trữ PHP 8.2 của Remi.
Cài đặt PHP và các tiện ích mở rộng của nó theo yêu cầu của Craft CMS.
Kiểm tra phiên bản PHP đã cài đặt.
Kích hoạt và khởi động dịch vụ PHP-FPM.
Kiểm tra trạng thái của PHP dịch vụ.
Để thiết lập kích thước tải tệp lên, hãy thay đổi giá trị của
Cấu hình giới hạn bộ nhớ của PHP tùy thuộc vào tài nguyên máy chủ và yêu cầu của bạn.
Mở tệp
Chúng ta cần đặt người dùng/nhóm Unix của các quy trình PHP thành nginx. Tìm các dòng
Tìm
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại quy trình PHP-fpm. Hãy đảm bảo rằng bạn đã cài đặt Nginx trước khi khởi động lại dịch vụ PHP, nếu không, dịch vụ sẽ không hoạt động vì không tìm thấy nhóm
Đổi nhóm thư mục phiên PHP thành Nginx.
Tải xuống tập lệnh cài đặt Composer.
Xác minh trình cài đặt đã tải xuống.
Bạn sẽ nhận được thông báo sau đầu ra.
Chạy tập lệnh cài đặt để tải xuống phiên bản mới nhất của Composer.
Xóa cài đặt script.
Di chuyển tệp nhị phân đã tải xuống đến
Xác nhận cài đặt.
Cài đặt kho lưu trữ PostgreSQL RPM.
Vô hiệu hóa mô-đun PostgreSQL tích hợp sẵn.
Bây giờ, bạn có thể cài đặt PostgreSQL bằng lệnh bên dưới.
Gói
Xác minh phiên bản.
Khởi tạo cơ sở dữ liệu PostgreSQL.
Kích hoạt PostgreSQL dịch vụ.
Khởi động dịch vụ PostgreSQL.
Kiểm tra trạng thái của PostgreSQL dịch vụ.
Bạn có thể thấy dịch vụ được bật và chạy theo mặc định.
Khởi chạy shell PostgreSQL.
Tạo Craft CMS cơ sở dữ liệu.
Tạo người dùng Craft CMS và chọn mật khẩu mạnh.
Đổi chủ sở hữu cơ sở dữ liệu thành Craft CMS người dùng.
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng Craft CMS.
Thoát khỏi shell.
Xác minh rằng thông tin đăng nhập của bạn hoạt động.
Thoát khỏi shell bằng cách nhập .
Vì chúng tôi đã cài đặt Remi repository trong khi cài đặt PHP, chúng tôi có thể bỏ qua phần đó. Liệt kê tất cả các mô-đun Redis có sẵn.
Kích hoạt mô-đun Redis 7.2 mới nhất.
Cài đặt Redis.
Xác minh phiên bản.
Kích hoạt Redis dịch vụ.
Khởi động dịch vụ Redis.
Kiểm tra trạng thái của dịch vụ.
Bước tiếp theo là thêm xác thực vào máy chủ Redis. Kể từ Redis v6.0, cách tốt nhất để thêm xác thực là sử dụng ACL (Danh sách kiểm soát truy cập). Mở tệp
Tìm dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tiếp theo, tạo và mở tệp
Thêm dòng sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại máy chủ Redis để triển khai thay đổi.
Mở shell Redis.
Sử dụng Lệnh
Sử dụng lệnh
Sử dụng lệnh
Thoát khỏi shell.
Bạn cũng sẽ cần cài đặt PHP Redis phần mở rộng.
Bạn sẽ nhận được kết quả sau.
Khi mọi thứ đã ổn, bạn có thể tiếp tục. Tạo thư mục gốc của web.
Đặt người dùng hiện đang đăng nhập làm chủ sở hữu của thư mục này.
Chuyển sang thư mục.
Tải xuống và cài đặt Craft CMS bằng Composer. Dấu chấm (
Trong quá trình cài đặt, bạn sẽ được yêu cầu cung cấp một số thông tin chi tiết liên quan đến cơ sở dữ liệu và tài khoản quản trị viên. URL trang web và ngôn ngữ của trang web như được hiển thị bên dưới.
Mở tệp
Bạn sẽ thấy nội dung sau trong đó.
Thay đổi thành theo sau.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Thao tác này bật Redis làm bộ nhớ đệm cho Craft CMS. Bạn cũng có thể sử dụng Redis để lưu trữ dữ liệu phiên PHP, hàng đợi công việc và làm trình điều khiển mutex. Bạn có thể tìm thấy cấu hình cho nó trong tài liệu của Craft CMS.
Bạn cũng cần thêm cấu hình Redis vào tệp
Thêm mã sau vào cuối tập tin.
Chọn các tùy chọn như hiển thị ở trên. Sau khi hoàn tất, hãy thay đổi nhóm thư mục thành
Cấp cho nhóm
Từ đây trở đi, bạn sẽ không cần phải thay đổi quyền nữa và có thể thực hiện mọi thao tác mà không cần sử dụng quyền root.
Cài đặt Snapd.
Bật và khởi động dịch vụ Snap.
Cài đặt gói lõi Snap và đảm bảo rằng phiên bản Snapd của bạn là ngày.
Tạo các liên kết cần thiết để Snapd hoạt động.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Kiểm tra xem Certbot có hoạt động bình thường không.
Chạy lệnh sau để tạo SSL Chứng chỉ.
Lệnh trên sẽ tải chứng chỉ xuống thư mục
Tạo nhóm Diffie-Hellman chứng chỉ.
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Bạn sẽ tìm thấy
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Áp dụng chính sách.
Áp dụng chính sách để cho phép Nginx cấp quyền truy cập vào PostgreSQL.
Áp dụng chính sách để cho phép kết nối được thực hiện với các máy chủ bên ngoài.
Với MariaDB 10.11, bạn sẽ gặp phải một vấn đề khác là SELinux ngăn PHP-FPM kết nối với MariaDB. Vấn đề này có thể được giải quyết bằng cách cài đặt mô-đun SELinux. Bước đầu tiên là tạo tệp
Tạo tệp
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bước tiếp theo là chuyển đổi tệp thành mô-đun chính sách bằng lệnh sau. Không sửa đổi tên tệp trong lệnh, nếu không, lệnh sẽ không hoạt động. Mô-đun được đặt tên là
Tiếp theo, chúng ta cần biên dịch mô-đun chính sách để tạo chính sách gói.
Bước cuối cùng là tải gói chính sách bằng lệnh
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tạo và mở tệp
Dán mã sau vào đó. Thay thế
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Xác minh Nginx của bạn cấu hình.
Khởi động lại máy chủ Nginx.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22469%22%3E%3C/svg%3E
Để truy cập trang quản trị, hãy truy cập URL
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22691%22%20height=%22586%22%3E%3C/svg%3E
Nhập thông tin đăng nhập quản trị của bạn và nhấp vào phím Đăng nhập để đăng nhập. Bạn sẽ được đưa đến bảng điều khiển sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22495%22%3E%3C/svg%3E
Bây giờ bạn có thể bắt đầu sử dụng Craft CMS để xây dựng trang web của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22369%22%3E%3C/svg%3E
Nhấp vào nút Sao lưu để tải xuống bản sao lưu cơ sở dữ liệu của bạn. Bạn cũng có thể tạo bản sao lưu bằng thiết bị đầu cuối. Chạy lệnh sau để tạo bản sao lưu. Nhập mật khẩu của bạn khi được nhắc.
Bạn cũng có thể tạo bản sao lưu cơ sở dữ liệu bằng tiện ích dòng lệnh Craft CMS. Ưu điểm của tiện ích này là bạn không cần phải truyền thông tin xác thực cơ sở dữ liệu của mình. Đọc thêm về Tiện ích bảng điều khiển lệnh Craft CMS tại đây.
Nếu bạn không chỉ định bất kỳ vị trí nào trong lệnh trên, tệp sao lưu sẽ được ghi vào thư mục
Để sao lưu các tệp, hãy sao chép và lưu toàn bộ
Để khôi phục trên máy chủ mới, hãy giải nén các tệp vào Thư mục
Tạo cơ sở dữ liệu có cùng thông tin đăng nhập trên máy chủ mới và khôi phục cơ sở dữ liệu bằng lệnh sau. Nhập mật khẩu của bạn khi được nhắc.
Bạn cũng có thể cập nhật thông qua thiết bị đầu cuối.
Để kiểm tra tất cả các bản cập nhật khả dụng, hãy chạy lệnh sau.
Nếu có bản cập nhật khả dụng, hãy chạy lệnh sau để áp dụng bản cập nhật đó.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Craft CMS trên máy chủ Debian 12. Bạn cũng sẽ học cách bật Redis để làm việc với nó và cách sao lưu và khôi phục trang web được tạo bằng Craft CMS.
Điều kiện tiên quyết
-
Máy chủ chạy Rocky Linux 9 với tối thiểu 1 GB RAM.
-
Người dùng không phải root có quyền sudo.
-
Tên miền đủ điều kiện (FQDN) nhưcraftcms.example.com
trỏ đến máy chủ của bạn.
-
Tài khoản SMTP có dịch vụ email như Amazon SES hoặc Mailgun.
-
Mọi thứ đều đã cập nhật.
Mã:
$ sudo dnf update
Một số gói thiết yếu là cần thiết để chạy hướng dẫn và Craft CMS. Một số trong số này sẽ có trên máy chủ của bạn.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client http https ssh
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt Nginx
Rocky Linux 9 được tích hợp phiên bản Nginx cũ hơn. Bạn cần sử dụng kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.Tạo và mở tệp
/etc/yum.repos.d/nginx.repo
cho chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Cài đặt Nginx.
Mã:
$ sudo dnf install nginx -y
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Mã:
$ sudo systemctl enable nginx --now
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Mon 2023-12-04 14:01:19 UTC; 3s ago Docs: http://nginx.org/en/docs/ Process: 59396 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 59397 (nginx) Tasks: 2 (limit: 10866) Memory: 1.9M CPU: 10ms CGroup: /system.slice/nginx.service ??59397 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??59398 "nginx: worker process"
Bước 3 - Cài đặt PHP và tiện ích mở rộng
Rocky Linux 9 được cài đặt sẵn PHP 8.1 theo mặc định. Để luôn sử dụng phiên bản PHP mới nhất hoặc nếu bạn muốn cài đặt nhiều phiên bản PHP, chúng ta cần sử dụng kho lưu trữ REMI.Bước đầu tiên là lấy kho lưu trữ Epel.
Mã:
$ sudo dnf install epel-release -y
Mã:
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Mã:
$ dnf module list php -y
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Mã:
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2
Mã:
$ sudo dnf install php php-cli php-common php-json php-gmp php-fpm php-xmlrpc php-bcmath php-imagick php-curl php-zip php-gd php-mysql php-xml php-mbstring php-xmlrpc php-intl php-pgsql
Mã:
$ php --version
PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies with Zend OPcache v8.2.13, Copyright (c), by Zend Technologies
Mã:
$ sudo systemctl enable php-fpm --now
Mã:
$ sudo systemctl status php-fpm
? php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled) Active: active (running) since Mon 2023-12-04 14:05:58 UTC; 6s ago Main PID: 61410 (php-fpm) Status: "Ready to handle connections" Tasks: 6 (limit: 10866) Memory: 16.6M CPU: 96ms CGroup: /system.slice/php-fpm.service ??61410 "php-fpm: master process (/etc/php-fpm.conf)" ??61411 "php-fpm: pool www" ??61412 "php-fpm: pool www" ??61413 "php-fpm: pool www" ??61414 "php-fpm: pool www" ??61415 "php-fpm: pool www"
Bước 4 - Cấu hình PHP-FPM
Mởphp.ini
cho chỉnh sửa.
Mã:
$ sudo nano /etc/php.ini
upload_max_filesize
và post_max_size
biến. Giá trị này quyết định kích thước tệp bạn có thể tải lên Craft CMS. Đối với mục đích của chúng tôi, chúng tôi đặt ở mức 128 MB. Bạn có thể thiết lập theo ý thích của mình.
Mã:
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php.ini
Mã:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini
/etc/php-fpm.d/www.conf
.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
user=www-data
và group=www-data
trong tệp và thay đổi chúng thành nginx
.
Mã:
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
listen.owner = nobody
, listen.group = nobody
, listen.mode = 0660
các dòng trong tệp và thay đổi chúng như sau sau khi bỏ chú thích.
Mã:
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Khởi động lại quy trình PHP-fpm. Hãy đảm bảo rằng bạn đã cài đặt Nginx trước khi khởi động lại dịch vụ PHP, nếu không, dịch vụ sẽ không hoạt động vì không tìm thấy nhóm
nginx
.
Mã:
$ sudo systemctl restart php-fpm
Mã:
$ sudo chgrp -R nginx /var/lib/php/session
Bước 5 - Cài đặt Composer
Composer hoạt động như một trình quản lý phụ thuộc cho PHP. Đây cũng là trình quản lý phụ thuộc của khung Laravel PHP, là thứ cung cấp sức mạnh cho Craft CMS.Tải xuống tập lệnh cài đặt Composer.
Mã:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Mã:
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Mã:
Installer verified
Mã:
$ php composer-setup.php
Mã:
$ php -r "unlink('composer-setup.php');"
/usr/local/bin
thư mục.
Mã:
$ sudo mv composer.phar /usr/local/bin/composer
Mã:
$ composer --version
Composer version 2.6.5 2023-10-06 10:11:52
Bước 6 - Cài đặt và cấu hình PostgreSQL
Rocky Linux 9 được tích hợp sẵn PostgreSQL 13 theo mặc định. Thay vào đó, chúng tôi sẽ sử dụng PostgreSQL 16 từ kho lưu trữ chính thức của nó.Cài đặt kho lưu trữ PostgreSQL RPM.
Mã:
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Mã:
$ sudo dnf -qy module disable postgresql
Mã:
$ sudo dnf install -y postgresql16-server postgresql16-contrib
postgresql-contrib
chứa một số tiện ích bổ sung.Xác minh phiên bản.
Mã:
$ psql --version
psql (PostgreSQL) 16.1
Mã:
$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Initializing database ... OK
Mã:
$ sudo systemctl enable postgresql-16
Mã:
$ sudo systemctl start postgresql-16
Mã:
$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled) Active: active (running) since Mon 2023-12-04 22:28:34 UTC; 2s ago Docs: https://www.postgresql.org/docs/16/static/ Process: 72143 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 72148 (postgres) Tasks: 7 (limit: 10866) Memory: 17.4M CPU: 45ms CGroup: /system.slice/postgresql-16.service ??72148 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/ ??72149 "postgres: logger " ??72150 "postgres: checkpointer " ??72151 "postgres: background writer " ??72153 "postgres: walwriter " ??72154 "postgres: autovacuum launcher " ??72155 "postgres: logical replication launcher "
Dec 04 22:28:33 craftcms.nspeaks.com systemd[1]: Starting PostgreSQL 16 database server...
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] LOG: redirecting log output to logging collector process
Dec 04 22:28:33 craftcms.nspeaks.com postgres[72148]: 2023-12-04 22:28:33.999 UTC [72148] HINT: Future log output will appear in directory "log".
Dec 04 22:28:34 craftcms.nspeaks.com systemd[1]: Started PostgreSQL 16 database server.
Khởi chạy shell PostgreSQL.
Mã:
$ sudo -i -u postgres psql
Mã:
postgres=# CREATE DATABASE craftcms;
Mã:
postgres-# CREATE USER craftuser WITH PASSWORD 'Your_Password';
Mã:
postgres-# ALTER DATABASE craftcms OWNER TO craftuser;
Mã:
postgres-# GRANT ALL PRIVILEGES ON DATABASE craftcms TO craftuser;
Mã:
postgres-# \q
Mã:
$ psql --username craftuser --password --host localhost craftcms
Password:
psql (16.1)
Type "help" for help.
craftcms=>
Bước 7 - Cài đặt và cấu hình Redis
Rocky Linux 9 được cài sẵn Redis 6.2 theo mặc định. Tuy nhiên, chúng tôi sẽ sử dụng Redis 7.0 mà chúng tôi sẽ cài đặt bằng Remi Repository.Vì chúng tôi đã cài đặt Remi repository trong khi cài đặt PHP, chúng tôi có thể bỏ qua phần đó. Liệt kê tất cả các mô-đun Redis có sẵn.
Mã:
$ sudo dnf module list redis
Rocky Linux 9 - AppStream
Name Stream Profiles Summary
redis 7 common [d] Redis persistent key-value database
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
redis remi-5.0 common [d] Redis persistent key-value database
redis remi-6.0 common [d] Redis persistent key-value database
redis remi-6.2 common [d] Redis persistent key-value database
redis remi-7.0 common [d] Redis persistent key-value database
redis remi-7.2 common [d] Redis persistent key-value database
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Mã:
$ sudo dnf module enable -y redis:remi-7.2
Mã:
$ sudo dnf install redis
Mã:
$ redis-server --version
Redis server v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=7bd3173e4e30c3e4
Mã:
$ sudo systemctl enable redis
Mã:
$ sudo systemctl start redis
Mã:
$ sudo systemctl status redis
? redis.service - Redis persistent key-value database Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; preset: disabled) Drop-In: /etc/systemd/system/redis.service.d ??limit.conf Active: active (running) since Mon 2023-12-04 22:36:25 UTC; 1min 32s ago Main PID: 72877 (redis-server) Status: "Ready to accept connections" Tasks: 5 (limit: 10866) Memory: 7.5M CPU: 176ms CGroup: /system.slice/redis.service ??72877 "/usr/bin/redis-server 127.0.0.1:6379"
Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Starting Redis persistent key-value database...
Dec 04 22:36:25 craftcms.nspeaks.com systemd[1]: Started Redis persistent key-value database.
/etc/redis/redis.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/redis/redis.conf
# aclfile /etc/redis/users.acl
mục nhập và bỏ chú thích bằng cách xóa dấu thăng (#
) ở phía trước nó.
Mã:
aclfile /etc/redis/users.acl
Tiếp theo, tạo và mở tệp
/etc/redis/users.acl
cho chỉnh sửa.
Mã:
$ sudo nano /etc/redis/users.acl
Mã:
user navjot on +@all ~* >yourpassword
Khởi động lại máy chủ Redis để triển khai thay đổi.
Mã:
$ sudo systemctl restart redis
Mã:
$ redis-cli
PING
. Nó sẽ đưa ra lỗi xác thực.
Mã:
127.0.0.1:6379> PING
(error) NOAUTH Authentication required.
AUTH
để ghi nhật ký trong.
Mã:
127.0.0.1:6379> AUTH navjot yourpassword
OK
PING
một lần nữa.
Mã:
127.0.0.1:6379> PING
OK
Mã:
127.0.0.1:6379> exit
Mã:
$ sudo apt install php-redis
Bước 8 - Cài đặt Craft CMS
Trước khi cài đặt Craft CMS, bạn có thể kiểm tra xem mình có đáp ứng mọi yêu cầu của máy chủ để chạy nó hay không bằng lệnh sau.
Mã:
$ curl -Lsf https://raw.githubusercontent.com/craftcms/server-check/HEAD/check.sh | bash
Mã:
Running Craft Server Check…
Craft CMS Requirement Checker
This script checks if your web server configuration meets the requirements for running a Craft CMS installation.
It checks if the server is running the right version of PHP, if appropriate PHP extensions have been loaded,
and if php.ini file settings are correct.
Results:
--------
PHP 8.2+: OK
BCMath extension: OK
ctype extension: OK
cURL extension: OK
DOM extension: OK
Fileinfo extension: OK
GD extension or ImageMagick extension: OK
iconv extension: OK
Intl extension: OK
JSON extension: OK
Multibyte String extension (with Function Overloading disabled): OK
OPcache extension (with save_comments): OK
OpenSSL extension: OK
PCRE extension (with UTF-8 support): OK
PDO extension: OK
Reflection extension: OK
SPL extension: OK
Zip extension: OK
ignore_user_abort(): OK
password_hash(): OK
proc_close(): OK
proc_get_status(): OK
proc_open(): OK
proc_terminate(): OK
allow_url_fopen: OK
ini_set calls: OK
Memory Limit: OK
------------------------------------------
Errors: 0 Warnings: 0 Total checks: 27
Mã:
$ sudo mkdir /var/www/html/craftcms -p
Mã:
$ sudo chown -R $USER:$USER /var/www/html/craftcms
Mã:
$ cd /var/www/html/craftcms
.
) ở cuối lệnh có nghĩa là quá trình cài đặt sẽ được thực hiện trong thư mục hiện tại.
Mã:
$ composer create-project craftcms/craft .
Mã:
> @php craft setup/welcome ______ .______ ___ _______ .___________. / || _ \ / \ | ____|| | | ,----'| |_) | / ^ \ | |__ `---| |----` | | | / / /_\ \ | __| | | | `----.| |\ \----./ _____ \ | | | | \______|| _| `._____/__/ \__\ |__| |__| A N E W I N S T A L L ______ .___ ___. _______. / || \/ | / | | ,----'| \ / | | (----` | | | |\/| | \ \ | `----.| | | | .----) | \______||__| |__| |_______/
Generating an application ID ... done (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
Generating a security key ... done (iMdcUi6wQyf9MshEda__vZcCwILbclxz)
Welcome to Craft CMS!
Are you ready to begin the setup? (yes|no) [no]:yes
Which database driver are you using? (mysql or pgsql) [mysql] pgsql
Database server name or IP address: [127.0.0.1]
Database port: [5432]
Database username: [root] craftuser
Database password:
Database name: craftcms
Database table prefix:
Testing database credentials ... success!
Using default schema "public".
Saving database credentials to your .env file ... done
Install Craft now? (yes|no) [yes]:yes
Username: [admin] navjot
Email: [emailprotected]
Password:
Confirm:
Site name: Howtoforge Tutorials
Site URL: https://craftcms.example.com
Site language: [en-US]
*** installing Craft
Làm cho Redis hoạt động với Craft CMS
Cài đặtyiisoft/yii2-redis
gói.
Mã:
$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"
/var/www/html/craftcms/config/app.php
để chỉnh sửa.
Mã:
$ nano config/app.php
Mã:
use craft\helpers\App;
return [ 'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
];
Mã:
use craft\helpers\App;
return [ 'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS', 'components' => [ 'cache' => function() { $config = [ 'class' => yii\redis\Cache::class, 'keyPrefix' => Craft::$app->id, 'defaultDuration' => Craft::$app->config->general->cacheDuration, // Full Redis connection details: 'redis' => [ 'hostname' => App::env('REDIS_HOSTNAME') ?: 'localhost', 'port' => 6379, 'username' => App::env('REDIS_USERNAME') ?: null, 'password' => App::env('REDIS_PASSWORD') ?: null, ], ]; return Craft::createObject($config); }, ],
];
Bạn cũng cần thêm cấu hình Redis vào tệp
.env
.
Mã:
$ nano .env
Mã:
REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword
nginx
. Theo cách này, cả người dùng hiện đang đăng nhập và Nginx đều có thể truy cập vào Craft CMS.
Mã:
$ sudo chgrp -R nginx /var/www/html/craftcms
nginx
quyền ghi vào thư mục.
Mã:
$ sudo chmod -R g+w /var/www/html/craftcms
Bước 9 - Cài đặt SSL
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho mục đích đó. Vì Rocky Linux không đi kèm với nó, hãy cài đặt trình cài đặt Snapd. Nó yêu cầu kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux) để hoạt động. Nhưng vì chúng ta đã cài đặt nó ở bước 3, nên chúng ta có thể trực tiếp tiến hành.Cài đặt Snapd.
Mã:
$ sudo dnf install -y snapd
Mã:
$ sudo systemctl enable snapd --now
Mã:
$ sudo snap install core && sudo snap refresh core
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ certbot --version
certbot 2.7.4
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d craftcms.example.com
/etc/letsencrypt/live/craftcms.example.com
trên máy chủ của bạn.Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo systemctl list-timers
snap.certbot.renew.service
là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
---------------------------------------------------------------------------------------------------------------------------
Mon 2023-12-04 23:38:47 UTC 18min left Mon 2023-12-04 22:19:02 UTC 1h 0min ago dnf-makecache.timer dnf-makecache.service
Tue 2023-12-05 00:00:00 UTC 40min left - - logrotate.timer logrotate.service
Tue 2023-12-05 09:36:00 UTC 10h left - - snap.certbot.renew.timer snap.certbot.renew.service
Mã:
$ sudo certbot renew --dry-run
Bước 10 - Cấu hình SELinux
Thay đổi ngữ cảnh bảo mật tệp cho Craft CMS.
Mã:
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/craftcms(/.*)?"
Mã:
$ sudo restorecon -Rv /var/www/html/craftcms/
Mã:
$ sudo setsebool -P httpd_can_network_connect_db 1
Mã:
$ sudo setsebool -P httpd_can_network_connect 1
type enforcement
.Tạo tệp
my-phpfpm.te
trong thư mục gốc của bạn và mở tệp đó chỉnh sửa.
Mã:
$ cd ~
$ nano my-phpfpm.te
Mã:
module my-phpfpm 1.0;
require { type unconfined_service_t; type httpd_t; type httpd_sys_content_t; class dir write; class unix_stream_socket connectto;
}
#============= httpd_t ==============
#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;
#!!!! This avc is allowed in the current policy
allow httpd_t unconfined_service_t:unix_stream_socket connectto;
Bước tiếp theo là chuyển đổi tệp thành mô-đun chính sách bằng lệnh sau. Không sửa đổi tên tệp trong lệnh, nếu không, lệnh sẽ không hoạt động. Mô-đun được đặt tên là
my-phpfpm
và tên tệp phải giống với tên mô-đun.
Mã:
$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te
Mã:
$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod
semodule
cài đặt chính sách đã sử dụng.
Mã:
$ sudo semodule -i my-phpfpm.pp
Bước 11 - Cấu hình Nginx
Mở tệp/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Tạo và mở tệp
/etc/nginx/conf.d/craftcms.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/craftcms.conf
craftcms.example.com
bằng tên miền của bạn. Đảm bảo giá trị của client_max_body_size
được đặt thành 128MB, đây là giá trị chúng tôi đã đặt cho Craft CMS khi cấu hình PHP trước đó.
Mã:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name craftcms.example.com; root /var/www/html/craftcms/web; index index.php; client_max_body_size 128M; access_log /var/log/nginx/craftcms.access.log; error_log /var/log/nginx/craftcms.error.log; ssl_certificate /etc/letsencrypt/live/craftcms.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/craftcms.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/craftcms.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { try_files $uri/index.html $uri $uri/ /index.php?$query_string; } location ~ [^/]\.php(/|$) { try_files $uri $uri/ /index.php?$query_string; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_keep_conn on; include fastcgi_params; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTP_PROXY ""; }
}
# enforce HTTPS
server { listen 80; listen [::]:80; server_name craftcms.example.com; return 301 https://$host$request_uri;
}
Xác minh Nginx của bạn cấu hình.
Mã:
$ sudo nginx -t
Mã:
$ sudo systemctl restart nginx
Bước 12 - Truy cập Craft CMS
Mở URLhttps://craftcms.example.com
trong trình duyệt của bạn và bạn sẽ được đưa đến trang sau.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22469%22%3E%3C/svg%3E
Để truy cập trang quản trị, hãy truy cập URL
https://craftcms.example.com/admin
và bạn sẽ được đưa đến trang đăng nhập.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22691%22%20height=%22586%22%3E%3C/svg%3E
Nhập thông tin đăng nhập quản trị của bạn và nhấp vào phím Đăng nhập để đăng nhập. Bạn sẽ được đưa đến bảng điều khiển sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22495%22%3E%3C/svg%3E
Bây giờ bạn có thể bắt đầu sử dụng Craft CMS để xây dựng trang web của mình.
Bước 13 - Sao lưu và khôi phục Craft CMS
Bạn có thể sao lưu cơ sở dữ liệu của Craft CMS từ bên trong bảng quản trị bằng cách truy cập Bảng điều khiển quản trị >> Tiện ích >> Sao lưu cơ sở dữ liệu.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22369%22%3E%3C/svg%3E
Nhấp vào nút Sao lưu để tải xuống bản sao lưu cơ sở dữ liệu của bạn. Bạn cũng có thể tạo bản sao lưu bằng thiết bị đầu cuối. Chạy lệnh sau để tạo bản sao lưu. Nhập mật khẩu của bạn khi được nhắc.
Mã:
$ mysqldump -u craftcmsuser -p craftcms > ~/craftcms.database.sql
Mã:
$ cd /var/www/html/craftcms
$ php craft db/backup ~/
Backing up the database ... done
Backup file: /home/navjot/howtoforge-tutorials--2023-12-03-065138--v4.5.11.1.sql (200.019 KB)
/var/www/html/craftcms/storage/backups
.Để sao lưu các tệp, hãy sao chép và lưu toàn bộ
/var/www/html/craftcms
thư mục.
Mã:
$ cd /var/www/html
$ tar -zcf ~/craftcms.tar.gz craftcms
/var/www/html
.
Mã:
$ tar -xzf craftcms.tar.gz -C /var/www/html/
Mã:
$ mysqlimport -u craftcmsuser -p craftcms craftcms.database.sql
Bước 14 - Cập nhật Craft CMS
Có hai cách để cập nhật Craft CMS. Một là từ bên trong bảng quản trị. Khi có bản cập nhật, bạn sẽ nhận được thông báo. Nhấp vào thông báo để nâng cấp. Craft CMS sẽ tự động sao lưu cơ sở dữ liệu trước khi thực hiện cập nhật.Bạn cũng có thể cập nhật thông qua thiết bị đầu cuối.
Để kiểm tra tất cả các bản cập nhật khả dụng, hãy chạy lệnh sau.
Mã:
$ cd /var/www/html/craftcms/
$ php craft update
Mã:
$ php craft update all