Cài đặt TYPO3 CMS với Nginx trên AlmaLinux 9

theanh

Administrator
Nhân viên
TYPO3 là hệ thống quản lý nội dung cấp doanh nghiệp miễn phí và mã nguồn mở. Hệ thống này cung cấp nhiều tính năng cấp doanh nghiệp như CMS có thể mở rộng với hỗ trợ đa trang web, cài đặt đa ngôn ngữ, triển khai bảo mật mạnh mẽ, cực nhanh và có thể chạy ở bất kỳ đâu.

Sử dụng TYPO3 CMS cho phép bạn xây dựng các trang web linh hoạt và đáng tin cậy. TYPO3 CMS là một cộng đồng chuyên nghiệp năng động ở phía sau. Và theo thiết kế, TYPO3 CMS là một hệ thống quản lý nội dung có thể cắm được với kiến trúc có thể thích ứng và tách rời.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt TYPO3 CMS trên AlmaLinux 9 từng bước. Chúng tôi sẽ cài đặt TYPO3 CMS với máy chủ web Nginx, máy chủ cơ sở dữ liệu MariaDB và PHP-FPM.

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

Trước khi tiến hành, hãy đảm bảo bạn có những điều sau:
  • Máy chủ AlmaLinux 9 - Ví dụ này sử dụng máy chủ có tên máy chủ almalinux9.
  • Người dùng không phải root có quyền root sudo.
  • Tên miền trỏ đến địa chỉ IP của máy chủ.

Cài đặt các phụ thuộc​

Trong các bước sau, bạn sẽ cài đặt các phụ thuộc gói cho TYPO3 CMS bao gồm:
  • Nginx: Là máy chủ web.
  • MariaDB: Là máy chủ cơ sở dữ liệu.
  • PHP-FPM: Ví dụ này sẽ sử dụng PHP 8.1 cho TYPO3 CMS.
  • Composer: Quản lý phụ thuộc cho ứng dụng PHP.
Bây giờ chúng ta hãy bắt đầu đã bắt đầu.

Đầu tiên, hãy chạy lệnh sau để thêm kho lưu trữ EPEL và Remi vào hệ thống của bạn. Kho lưu trữ Remi cung cấp nhiều phiên bản gói PHP và một số tiện ích mở rộng PHP bổ sung không có trong kho lưu trữ appstream mặc định.
Mã:
sudo dnf epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Nhập y để xác nhận cài đặt và nhấn ENTER.

Đang thêm kho lưu trữ EPEL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22198%22%3E%3C/svg%3E


Thêm kho lưu trữ PHP Remi cho RHEL 9.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22164%22%3E%3C/svg%3E


Bây giờ, hãy chạy lệnh sau để đặt lại mô-đun kho lưu trữ PHP mặc định và kích hoạt mô-đun PHP 8.1 từ Remi kho lưu trữ.
Mã:
sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh dnf bên dưới để cài đặt các gói phụ thuộc cho TYPO3 CMS. Khi được nhắc, hãy nhập y để xác nhận, sau đó nhấn ENTER.
Mã:
sudo dnf install nginx mariadb-server composer ImageMagick php-fpm php-mysqlnd php-gd php-curl php-json php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22245%22%3E%3C/svg%3E


Sau khi các phụ thuộc được cài đặt, hãy chạy lệnh systemctl bên dưới để khởi động và kích hoạt các dịch vụ chính như Nginx, MariaDB và PHP-FPM.
Mã:
sudo systemctl enable --now nginx mariadb php-fpm

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22112%22%3E%3C/svg%3E


Sau đó, xác minh các dịch vụ bằng lệnh sau để đảm bảo rằng tất cả các dịch vụ đó đều đang chạy.
Mã:
sudo systemctl status nginx mariadb php-fpm
Nếu dịch vụ đang chạy, bạn sẽ thấy đầu ra hoạt động (đang chạy). Ví dụ bên dưới cho thấy dịch vụ Nginx đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22306%22%3E%3C/svg%3E


Cuối cùng, hãy chạy lệnh sau để đảm bảo Composer đã được cài đặt và kiểm tra phiên bản của nó.
Mã:
sudo -u nginx composer -V
Vào thời điểm viết bài này, Composer v2.5.5 được cài đặt thông qua kho lưu trữ EPEL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22459%22%20height=%22118%22%3E%3C/svg%3E

Thiết lập Firewalld​

Sau khi cài đặt các gói phụ thuộc, bước tiếp theo là thiết lập firewalld và mở cả giao thức HTTP và HTTPS trên đó.

Chạy lệnh firewall-cmd bên dưới để mở cả dịch vụ HTTP và HTTPS. Sau đó, tải lại firewalld để áp dụng các thay đổi.
Mã:
sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload
Bây giờ hãy xác minh danh sách các cổng và dịch vụ mở trên firewalld bằng lệnh sau.
Mã:
sudo firewall-cmd --list-all
Trong phần dịch vụ, bạn sẽ thấy cả HTTP và HTTPS đều được bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22734%22%20height=%22288%22%3E%3C/svg%3E

Thiết lập máy chủ MariaDB​

Trong phần sau, bạn sẽ bảo mật máy chủ MariaDB và tạo cơ sở dữ liệu và người dùng mới sẽ được cài đặt TYPO3 CMS sử dụng.

Trước tiên, hãy chạy lệnh mariadb-secure-installation để bảo mật MariaDB của bạn cài đặt.
Mã:
sudo mariadb-secure-installation
Trong suốt quá trình, bạn sẽ được nhắc cấu hình máy chủ MariaDB. Nhập Y để xác nhận bước này.
  • Chuyển xác thực gốc MariaDB sang unix_socket? Nhập n.
  • Thiết lập mật khẩu gốc MariaDB? Nhập y, sau đó nhập mật khẩu mới và lặp lại.
  • Vô hiệu hóa đăng nhập từ xa cho người dùng gốc? Nhập y.
  • Xóa kiểm tra cơ sở dữ liệu mặc định? Nhập y một lần nữa.
  • Xóa người dùng ẩn danh mặc định? Nhập y để xác nhận.
  • Tải lại đặc quyền bảng để áp dụng các thay đổi? Nhập y.
Sau khi MariaDB được bảo mật, hãy đăng nhập vào MariaDB bằng lệnh mariadb bên dưới. Khi được nhắc nhập mật khẩu, hãy nhập mật khẩu gốc MariaDB của bạn.
Mã:
sudo mariadb -u root -p
Sau khi đăng nhập vào MariaDB, hãy chạy các truy vấn sau để tạo cơ sở dữ liệu mới typo3db, người dùng typo3 và mật khẩu typo3password.
Mã:
CREATE DATABASE typo3db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON typo3db.* to typo3@localhost IDENTIFIED BY 'typo3password';
FLUSH PRIVILEGES;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22162%22%3E%3C/svg%3E


Tiếp theo, chạy truy vấn sau để xác minh quyền cho người dùng MariaDB typo3 và đảm bảo rằng người dùng có thể truy cập cơ sở dữ liệu typo3db.
Mã:
SHOW GRANTS FOR typo3@localhost;
Trong đầu ra, bạn phải cho người dùng MariaDB typo3 có thể truy cập cơ sở dữ liệu typo3db.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22200%22%3E%3C/svg%3E


Gõ quit để thoát khỏi MariaDB máy chủ và hoàn tất bước này.

Thiết lập PHP-FPM​

Sau khi cấu hình máy chủ MariaDB, bước tiếp theo là thiết lập cài đặt PHP-FPM. Bạn sẽ tích hợp cài đặt PHP-FPM với máy chủ web Nginx.

Trước tiên, hãy chạy lệnh sau để thiết lập múi giờ mặc định cho hệ thống của bạn.
Mã:
sudo timedatectl set-timezone Europe/Stockholm
Bây giờ hãy mở cấu hình PHP /etc/php.ini bằng trình soạn thảo vim lệnh.
Mã:
sudo vim /etc/php.ini
Bỏ chú thích tham số date.timezone và thay đổi giá trị theo múi giờ thích hợp.
Mã:
date.timezone = Europe/Stockholm
Tăng và bật một số tham số PHP như thế này. Đối với tham số memory_limit, hãy điều chỉnh tham số này theo bộ nhớ hiện tại của bạn.
Mã:
memory_limit = 512M
max_execution_time = 300
max_input_vars = 2000
Bây giờ hãy tăng tham số post_max_size và upload_max_filesize lên 30MB.
Mã:
post_max_size = 30M
upload_max_filesize = 30M
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Tiếp theo, mở cấu hình nhóm PHP-FPM /etc/php-fpm.d/www.conf bằng trình soạn thảo vim.
Mã:
sudo vim /etc/php-fpm.d/www.conf
Thay đổi giá trị mặc định của tham số người dùng và nhóm thành nginx như sau:
Mã:
user = nginx
group = nginx
Lưu tệp và thoát khỏi trình soạn thảo.

Bây giờ hãy chạy lệnh sau để khởi động lại Dịch vụ PHP-FPM và áp dụng những thay đổi. Sau đó, hãy xác minh PHP-FPM để đảm bảo rằng nó đang chạy.
Mã:
sudo systemctl restart php-fpm
sudo systemctl status php-fpm
Nếu đang chạy, bạn sẽ nhận được kết quả như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22269%22%3E%3C/svg%3E


Ngoài ra, bạn cũng có thể xác minh PHP-FPM bằng cách kiểm tra tệp socket mặc định cho PHP-FPM, là /run/php-fpm/www.sock. Chạy lệnh ss bên dưới để lấy danh sách các socket khả dụng trên hệ thống của bạn và lọc đầu ra để chỉ hiển thị www.sock.
Mã:
ss -pl | grep www.sock
Nếu PHP-FPM đang chạy, bạn sẽ thấy tệp socket PHP-FPM mặc định /run/php-fpm/www.sock khả dụng như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22119%22%3E%3C/svg%3E

Đang tải xuống TYPO3 CMS​

TYPO3 CMS có thể được cài đặt theo nhiều cách và đối với bản demo này, bạn sẽ cài đặt TYPO3 CMS thông qua trình quản lý gói Composer.

Chạy lệnh sau để tạo thư mục mới /var/www/typo3. Thư mục này sẽ được sử dụng làm thư mục đích để cài đặt TYPO3 CMS
Mã:
mkdir -p /var/www/typo3
Tiếp theo, chạy lệnh bên dưới để thay đổi quyền sở hữu thư mục /var/www/typo3 thành người dùng nginx và đảm bảo quyền truy cập đọc và ghi cho chủ sở hữu của thư mục đó.
Mã:
sudo chown -R nginx:nginx /var/www/typo3
sudo chmod u+rw /var/www/typo3
Bây giờ, hãy chuyển đến thư mục /var/www/typo3 và chạy lệnh Composer bên dưới để tải xuống mã nguồn CMS TYPO3.
Mã:
cd /var/www/typo3
sudo -u nginx composer create-project typo3/cms-base-distribution:^12 .
Khi quá trình cài đặt đang chạy, bạn sẽ thấy quy trình như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22434%22%3E%3C/svg%3E


Sau khi TYPO3 được tải xuống, hãy chạy lệnh sau lệnh để xác minh danh sách các tệp và thư mục trên /var/www/typo3.
Mã:
ls -lah /var/www/typo3
Bạn sẽ thấy các tệp và thư mục tương tự như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22570%22%20height=%22294%22%3E%3C/svg%3E


Cuối cùng, hãy chạy tệp nhị phân TYPO3 CMS để bắt đầu cấu hình và bạn sẽ được nhắc nhập một số cấu hình.
Mã:
sudo -u nginx ./vendor/bin/typo3 setup
Bạn sẽ được yêu cầu nhập một số cấu hình TYPO3 CMS.
  • Nhập trình điều khiển cơ sở dữ liệu vào mysqli.
  • Nhập người dùng cơ sở dữ liệu, mật khẩu, cổng và máy chủ.
  • Bây giờ hãy nhập tên cơ sở dữ liệu sẽ được sử dụng cho TYPO3 CMS. Trong ví dụ này, tên cơ sở dữ liệu là typo3db.
  • Nhập tên người dùng quản trị mới, email và mật khẩu cho TYPO3 CMS.
  • Đối với tên dự án và URL trang web cơ bản, nhấn ENTER để giữ nguyên mặc định.
Sau khi cấu hình TYPO3 CMS hoàn tất, bạn sẽ thấy thông báo "Xin chúc mừng - Thiết lập TYPO3 đã hoàn tất".


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22749%22%20height=%22572%22%3E%3C/svg%3E

Cấu hình Nginx Server Block cho TYPO3 CMS​

Sau khi cài đặt và cấu hình TYPO3 CMS, bạn sẽ thiết lập khối máy chủ Nginx cho TYPO3 CMS. Trước khi bắt đầu, hãy đảm bảo rằng bạn đã trỏ tên miền đến địa chỉ IP máy chủ của mình.

Tạo cấu hình khối máy chủ Nginx mới/etc/nginx/conf.d/typo3.conf bằng vim.
Mã:
sudo vim /etc/nginx/conf.d/typo3.conf
Chèn cấu hình sau và đảm bảo thay đổi tên miền mục tiêu trên server_name tham số.
Mã:
server {
 listen 80;
 server_name typo3.howtoforge.local;

 root /var/www/typo3/public;
 index index.php;

 # Load configuration typo3.conf.
 include /etc/nginx/default.d/typo3-nginx.conf;
}
Lưu và thoát khỏi tệp khi hoàn tất.

Tiếp theo, tạo một cấu hình khác /etc/nginx/default.d/typo3-nginx.conf bằng lệnh vim bên dưới.
Mã:
sudo vim /etc/nginx/default.d/typo3-nginx.conf
Chèn cấu hình sau vào tệp. Đây là cấu hình Nginx chính cho TYPO3 CMS.
Mã:
# Compressing resource files will save bandwidth and so improve loading speed, especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
# config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
location ~ \.js\.gzip$ {
 add_header Content-Encoding gzip;
 gzip off;
 types { text/javascript gzip; }
}
location ~ \.css\.gzip$ {
 add_header Content-Encoding gzip;
 gzip off;
 types { text/css gzip; }
}

# TYPO3 - Rule for versioned static files, configured through:
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
if (!-e $request_filename) {
 rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}

# TYPO3 - Block access to composer files
location ~* composer\.(?:json|lock) {
 deny all;
}

# TYPO3 - Block access to flexform files
location ~* flexform[^.]*\.xml {
 deny all;
}

# TYPO3 - Block access to language files
location ~* locallang[^.]*\.(?:xml|xlf)$ {
 deny all;
}

# TYPO3 - Block access to static typoscript files
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
 deny all;
}

# TYPO3 - Block access to miscellaneous protected files
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
 deny all;
}

# TYPO3 - Block access to recycler and temporary directories
location ~ _(?:recycler|temp)_/ {
 deny all;
}

# TYPO3 - Block access to configuration files stored in fileadmin
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
 deny all;
}

# TYPO3 - Block access to libraries, source and temporary compiled data
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
 deny all;
}

# TYPO3 - Block access to protected extension directories
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
 deny all;
}

location / {
 try_files $uri $uri/ /index.php$is_args$args;
}

location = /typo3 {
 rewrite ^ /typo3/;
}

location /typo3/ {
 absolute_redirect off;
 try_files $uri /typo3/index.php$is_args$args;
}

location ~ [^/]\.php(/|$) {
 fastcgi_split_path_info ^(.+?\.php)(/.*)$;
 if (!-f $document_root$fastcgi_script_name) {
 return 404;
 }
 fastcgi_buffer_size 32k;
 fastcgi_buffers 8 16k;
 fastcgi_connect_timeout 240s;
 fastcgi_read_timeout 240s;
 fastcgi_send_timeout 240s;

 # this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
 fastcgi_pass unix:/run/php-fpm/www.sock;
 fastcgi_index index.php;
 include fastcgi.conf;
}
Lưu và đóng tệp khi bạn hoàn tất.

Bây giờ hãy chạy lệnh sau để đảm bảo rằng bạn có cấu hình Nginx phù hợp. Sau đó, khởi động lại dịch vụ Nginx để áp dụng các thay đổi.
Mã:
sudo nginx -t
sudo systemctl restart nginx
Sau khi lệnh được thực thi, bạn sẽ nhận được đầu ra "cú pháp ok - kiểm tra thành công" và cài đặt TYPOC3 CMS của bạn sẽ có thể truy cập được.

Bảo mật TYPO3 CMS bằng SSL/TLS​

Trong phần sau, bạn sẽ bảo mật cài đặt TYPO3 CMS của mình bằng chứng chỉ SSL/TLS sẽ được tạo từ Letsencrypt. Để đạt được điều đó, bạn phải cài đặt Certbot trên hệ thống của mình.

Chạy lệnh dnf bên dưới để cài đặt Certbot và plugin Certbot cho Nginx. Nhập y để xác nhận cài đặt, sau đó nhấn ENTER.
Mã:
sudo dnf install certbot python3-certbot-nginx

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22428%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh sau để tạo chứng chỉ SSL mới từ Letsencrypt cho TYPO3 CMS. Hãy chắc chắn thay đổi tên miền và địa chỉ email.
Mã:
sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [emailprotected] -d typo3.howtoforge.local
Nếu quá trình chạy trơn tru, chứng chỉ SSL mới sẽ được tạo tại thư mục /etc/letsencrypt/live/typo3.howtoforge.local. Ngoài ra, cấu hình khối máy chủ cho TYPO3 CMS sẽ tự động được cấu hình với SSL được bật thông qua certbot.

Khởi chạy trình duyệt web của bạn và truy cập địa chỉ cài đặt TYPO3 CMS (ví dụ: https://typo3.howtoforge.local/). Bạn sẽ thấy màn hình đăng nhập của TYPO3 CMS.

Nhập tên người dùng và mật khẩu quản trị viên mà bạn đã tạo, sau đó nhấp vào Đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22509%22%3E%3C/svg%3E


Nếu bạn có tên người dùng và mật khẩu quản trị viên chính xác, bạn sẽ thấy bảng điều khiển quản trị viên TYPO3 CMS như thế này:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22519%22%3E%3C/svg%3E


Trên menu trên cùng bên phải, nhấp vào biểu tượng thông tin và bạn sẽ nhận được thông tin chi tiết về các ngăn xếp phần mềm mà bạn hiện đang sử dụng để cài đặt TYPO3 CMS. Trong bản demo này, phiên bản cài đặt của TYPO3 CMS là v12 với máy chủ web Nginx, máy chủ cơ sở dữ liệu MariaDB và PHP-FPM 8.1.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22393%22%20height=%22461%22%3E%3C/svg%3E

Kết luận​

Bạn đã hoàn tất! Bạn đã hoàn tất cài đặt TYPO3 CMS trên máy chủ AlmaLinux 9 của mình với máy chủ cơ sở dữ liệu MariaDB, PHP-FPM và máy chủ web Nginx. Bạn cũng đã bảo mật việc triển khai của mình thông qua chứng chỉ SSL/TLS từ Letsencrypt. Với điều này trong đầu, giờ đây bạn có thể tạo một trang web mới thông qua TYPO3 CMS.
 
Back
Bên trên