Cách cài đặt Craft CMS trên Debian 12

theanh

Administrator
Nhân viên
Craft CMS là một hệ thống quản lý nội dung nguồn mở để tạo ra mọi loại 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.

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


  • Máy chủ chạy Debian 12 với tối thiểu 1 GB RAM.

  • Người dùng không phải root có quyền sudo.

  • Tường lửa đơn giản (UFW) được bật và đang chạy.

  • 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 cập nhật.
Mã:
$ sudo apt update && sudo apt upgrade
[*]
Cần có một số gói thiết yếu để chạy hướng dẫn và Craft CMS. Một số trong số này sẽ có sẵn trên máy chủ của bạn.
Mã:
$ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên trước khi cài đặt bất kỳ gói nào là cấu hình tường lửa để cho phép kết nối HTTP và HTTPS.

Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy nội dung tương tự như sau.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Cho phép các cổng HTTP và HTTPs.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Kiểm tra lại trạng thái để xác nhận.
Mã:
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt Nginx​

Debian 12 đi kèm với phiên bản cũ hơn của Nginx. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt. Trên hệ thống Debian, lệnh sau chỉ hoạt động với sudo.
Mã:
$ sudo nginx -v
nginx version: nginx/1.24.0
Khởi động Nginx máy chủ.
Mã:
$ sudo systemctl start nginx
Kiểm tra trạng thái dịch vụ.
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Fri 2023-12-01 09:46:46 UTC; 18s ago Docs: https://nginx.org/en/docs/ Process: 39483 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 39484 (nginx) Tasks: 2 (limit: 2315) Memory: 1.7M CPU: 6ms CGroup: /system.slice/nginx.service ??39484 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??39485 "nginx: worker process"

Bước 3 - Cài đặt PHP và tiện ích mở rộng​

Debian 12 mặc định đi kèm với PHP 8.2. Bạn có thể cài đặt nó và các tiện ích mở rộng mà Craft CMS yêu cầu bằng cách chạy lệnh sau.
Mã:
$ sudo apt 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
Để 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, hãy thêm kho lưu trữ PHP của Ondrej.

Đầu tiên, hãy nhập khóa GPG PHP của kho lưu trữ Sury.
Mã:
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Thêm kho lưu trữ PHP của Ondrej Sury.
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Cập nhật danh sách kho lưu trữ hệ thống của bạn.
Mã:
$ sudo apt update
Bạn có thể sẽ nhận được thông tin về các bản nâng cấp đang chờ xử lý. Chạy chúng.
Mã:
$ sudo apt upgrade
Cài đặt PHP và các tiện ích mở rộng của nó.
Mã:
$ sudo apt install php8.2 php8.2-cli php8.2-common php8.2-gmp php8.2-fpm php8.2-xmlrpc php8.2-bcmath php8.2-imagick php8.2-curl php8.2-zip php8.2-gd php8.2-mysql php8.2-xml php8.2-mbstring php8.2-xmlrpc php8.2-intl php8.2-pgsql
Kiểm tra phiên bản PHP đã cài đặt.
Mã:
$ php --version
PHP 8.2.13 (cli) (built: Nov 24 2023 13:10:42) (NTS)
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
Kiểm tra trạng thái của dịch vụ PHP.
Mã:
$ sudo systemctl status php8.2-fpm
? php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; preset: enabled) Active: active (running) since Fri 2023-12-01 10:29:53 UTC; 34min ago Docs: man:php-fpm8.2(8) Process: 65825 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.2/fpm/pool.d/www.conf 82 (code=exited, status=0/SUCCESS) Main PID: 65821 (php-fpm8.2) Status: "Processes active: 0, idle: 3, Requests: 208, slow: 0, Traffic: 0.2req/sec" Tasks: 4 (limit: 2315) Memory: 83.4M CPU: 6.456s CGroup: /system.slice/php8.2-fpm.service ??65821 "php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)" ??65823 "php-fpm: pool www" ??65824 "php-fpm: pool www" ??65843 "php-fpm: pool www"

Bước 4 - Cấu hình PHP-FPM​

Mở php.ini để chỉnh sửa.
Mã:
$ sudo nano /etc/php/8.2/fpm/php.ini
Để đặt kích thước tải tệp lên, hãy thay đổi các giá trị của upload_max_filesizepost_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 đang đặ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/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php/8.2/fpm/php.ini
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ã:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini
Mở tệp /etc/php/8.2/fpm/pool.d/www.conf.
Mã:
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
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 user=www-datagroup=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.
user = nginx
group = nginx
...
Ngoài ra, hãy tìm các dòng listen.owner=www-datalisten.group=www-data trong tệp và thay đổi chúng thành nginx.
Mã:
listen.owner = nginx
listen.group = nginx
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 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 php8.2-fpm

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');"
Xác minh trình cài đặt đã tải xuống.
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;"
Bạn sẽ nhận được thông báo sau đầu ra.
Mã:
Installer verified
Chạy tập lệnh cài đặt để tải xuống phiên bản mới nhất của Composer.
Mã:
$ php composer-setup.php
Xóa cài đặt script.
Mã:
$ php -r "unlink('composer-setup.php');"
Di chuyển tệp nhị phân đã tải xuống đến /usr/local/bin thư mục.
Mã:
$ sudo mv composer.phar /usr/local/bin/composer
Xác nhận cài đặt.
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​

Debian 12 mặc định đi kèm với PostgreSQL 15. Thay vào đó, chúng tôi sẽ sử dụng PostgreSQL 16.

Chạy lệnh sau để thêm khóa GPG PostgreSQL.
Mã:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Bây giờ, bạn có thể cài đặt PostgreSQL bằng lệnh bên dưới.
Mã:
$ sudo apt install postgresql postgresql-contrib
Gói 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 (Debian 16.1-1.pgdg120+1)
Kiểm tra trạng thái của PostgreSQL dịch vụ.
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled) Active: active (exited) since Wed 2023-11-29 05:54:03 UTC; 11s ago Main PID: 20170 (code=exited, status=0/SUCCESS) CPU: 1ms
Nov 29 05:54:03 craftcms systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Nov 29 05:54:03 craftcms systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
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.
Mã:
$ sudo -i -u postgres psql
Tạo Craft CMS cơ sở dữ liệu.
Mã:
postgres=# CREATE DATABASE craftcms;
Tạo người dùng Craft CMS và chọn mật khẩu mạnh.
Mã:
postgres-# CREATE USER craftuser WITH PASSWORD 'Your_Password';
Đổi chủ sở hữu cơ sở dữ liệu thành Craft CMS người dùng.
Mã:
postgres-# ALTER DATABASE craftcms OWNER TO craftuser;
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng Craft CMS.
Mã:
postgres-# GRANT ALL PRIVILEGES ON DATABASE craftcms TO craftuser;
Thoát khỏi shell.
Mã:
postgres-# \q
Xác minh rằng thông tin đăng nhập của bạn hoạt động.
Mã:
$ psql --username craftuser --password --host localhost craftcms
Password:
psql (16.1 (Debian 16.1-1.pgdg120+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
craftcms=>
Thoát khỏi shell bằng cách nhập \q.

Bước 7 - Cài đặt và cấu hình Redis​

Debian 12 mặc định đi kèm Redis 7.0, đây là phiên bản chúng ta sẽ sử dụng. Cài đặt Redis.
Mã:
$ sudo apt install redis
Xác minh phiên bản.
Mã:
$ redis-server --version
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=c4e7f6bf175a885b
Tuy nhiên, nếu bạn muốn cài đặt phiên bản mới nhất, bạn có thể thực hiện bằng cách sử dụng kho lưu trữ chính thức của Redis bằng cách phát hành lệnh sau lệnh.
Mã:
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
$ sudo apt update
$ sudo apt install redis
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 /etc/redis/redis.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/redis/redis.conf
Tìm dòng # 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
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 /etc/redis/users.acl cho chỉnh sửa.
Mã:
$ sudo nano /etc/redis/users.acl
Thêm dòng sau vào đó.
Mã:
user navjot on +@all ~* >yourpassword
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ã:
$ sudo systemctl restart redis
Mở shell Redis.
Mã:
$ redis-cli
Sử dụng Lệnh PING. Nó sẽ đưa ra lỗi xác thực.
Mã:
127.0.0.1:6379> PING
(error) NOAUTH Authentication required.
Sử dụng lệnh AUTH để đăng nhập.
Mã:
127.0.0.1:6379> AUTH navjot yourpassword
OK
Sử dụng lệnh PING một lần nữa.
Mã:
127.0.0.1:6379> PING
OK
Thoát khỏi shell.
Mã:
127.0.0.1:6379> exit
Bạn cũng sẽ cần cài đặt PHP Redis phần mở rộng.
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 tất cả các 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
Bạn sẽ nhận được thông báo sau đầu ra.
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
Khi mọi thứ ổn thỏa, bạn có thể tiếp tục. Tạo thư mục gốc của web.
Mã:
$ sudo mkdir /var/www/html/craftcms -p
Đặt người dùng hiện đang đăng nhập làm chủ sở hữu của thư mục này.
Mã:
$ sudo chown -R $USER:$USER /var/www/html/craftcms
Chuyển sang thư mục.
Mã:
$ cd /var/www/html/craftcms
Tải xuống và cài đặt Craft CMS bằng Composer. Dấu chấm (.) ở 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 .
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ã:
> @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 đặt yiisoft/yii2-redis gói.
Mã:
$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"
Mở tệp /var/www/html/craftcms/config/app.php để chỉnh sửa.
Mã:
$ nano config/app.php
Bạn sẽ thấy nội dung sau trong đó.
Mã:
use craft\helpers\App;
return [ 'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
];
Thay đổi thành theo sau.
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); }, ],
];
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 kích hoạ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 .env.
Mã:
$ nano .env
Thêm mã sau vào cuối file.
Mã:
REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword
Chọn các tùy chọn như hiển thị ở trên. Sau khi hoàn tất, hãy đổi nhóm thư mục thành nginx. Bằng 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
Cấp cho nhóm nginx quyền ghi vào thư mục.
Mã:
$ sudo chmod -R g+w /var/www/html/craftcms
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.

Bước 9 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Debian hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.

Debian 12 không đi kèm Snapd đã cài đặt. Cài đặt gói Snapd.
Mã:
$ sudo apt install snapd
Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic 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 /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Kiểm tra xem Certbot có hoạt động bình thường không.
Mã:
$ certbot --version
certbot 2.7.4
Chạy lệnh sau để tạo SSL Chứng chỉ.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d craftcms.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /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
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Mã:
$ sudo systemctl list-timers
Bạn sẽ tìm thấy 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
---------------------------------------------------------------------------------------------------------------------------
Fri 2023-12-01 10:39:00 UTC 12min left Fri 2023-12-01 10:09:01 UTC 17min ago phpsessionclean.timer phpsessionclean.service
Fri 2023-12-01 17:01:47 UTC 6h left Thu 2023-11-30 17:01:47 UTC 17h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2023-12-01 18:34:00 UTC 8h left - - snap.certbot.renew.timer snap.certbot.renew.service
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.
Mã:
$ sudo certbot renew --dry-run
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.

Bước 10 - Cấu hình Nginx​

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
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 /etc/nginx/conf.d/craftcms.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/craftcms.conf
Dán mã sau vào đó. Thay thế 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/php8.2-fpm.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;
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cấu hình Nginx của bạn.
Mã:
$ sudo nginx -t
Khởi động lại Nginx máy chủ.
Mã:
$ sudo systemctl restart nginx

Bước 11 - Truy cập Craft CMS​

Mở URL https://craftcms.example.com trong trình duyệt của bạn và bạn sẽ được đưa đến trang sau.


craftcms-home.png



Để 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.


craftcms-login.png



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.


craftcms-admin.png



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 12 - 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.


craftcms-db-backup.png



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
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.
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)
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 /var/www/html/craftcms/storage/backups.

Để sao lưu tệp, chỉ cần sao chép và lưu toàn bộ thư mục /var/www/html/craftcms.
Mã:
$ cd /var/www/html
$ tar -zcf ~/craftcms.tar.gz craftcms
Để khôi phục trên máy chủ mới, hãy giải nén các tệp vào /var/www/html thư mục.
Mã:
$ tar -xzf craftcms.tar.gz -C /var/www/html/
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 khi được nhắc.
Mã:
$ mysqlimport -u craftcmsuser -p craftcms craftcms.database.sql

Bước 13 - 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
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 đó.
Mã:
$ php craft update all

Kết luận​

Đây là phần kết thúc hướng dẫn của chúng tôi, trong đó bạn đã học cách cài đặt phần mềm Craft CMS trên máy chủ Debian 12. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên