Lưu trữ thẻ: #php-fpm

Hướng dẫn cài đặt wordpress trên Ubuntu

I. Tổng quan

WordPress là một CMS (content management system) mã nguồn mở cho phép người dùng xây dựng và quản lý nội dung trên website. WordPress cung cấp cơ sở hạ tầng cơ bản để xây dựng một website, do đó nó phù hợp với hầu hết đối tượng người sử, bao gồm cả đối tượng là người sử dụng có ít kiến thức về lập trình.

Có nhiều cách để cài đặt một website WordPress, trong đó có những cách khá đơn giản đã được tích hợp sẳn trên các công cụ Hosting Control Panel (DirectAdmin, Cpanel,…) . Hướng dẫn dưới đây sẽ cài đặt WordPress thông qua cửa sổ dòng lệnh trên hệ điều hành Linux. Đây là cách cài đặt phức tạp và yêu cầu nhiều bước tiến , nhưng mặt khác cung cấp cho người dùng phương thức quản lý tốt hơn đối với website WordPress và môi trường mà nó chạy trên.

Môi trường cụ thể:

  • Hệ điều hành: Ubuntu 18.04
  • Web Server: Apache 2.4.54 + PHP 7.4
  • SQL Server: MySQL 10.6.9

II. Hướng dẫn cụ thể

  1. Cài đặt APACHE
    • Thực hiện lệnh cài đặt:
      # sudo apt install apache2
    • Start và enable dịch vụ Apache, đảm bảo Apache sẽ chạy cùng hệ điều hành
      sudo systemctl start apache2
      # sudo systemctl enable apache2
    • Tiến hành kiểm tra trạng thái dịch vụ Apache bằng lệnh:
      # sudo systemctl status apache2
  2. Cài đặt MYSQL
    • Trước tiên ta  tiến hành update  trước khi cài đặt một thứ gì đó bằng lệnh:
      # sudo apt update && sudo apt upgrade -y
    • Tiếp đến ta tiến hành cài đặt các  gói mysql-server:
      # sudo apt install mysql-server
    • MySQL chưa được khởi động sau khi install MySQL trên Ubuntu , nên bạn cần khởi động
      # systemctl start mysql
      # systemctl enable mysql
    • Tiến hành tạo 1 database cho website wordpress theo bằng các lệnh sau
      # mysql -u root -p

      Tạo một database trong MariaDB

      > create database wordpress;

      Tiếp đến tạo tạo một User

      > create user 'user1'@'địa chỉ Ip' IDENTIFIED BY 'password';

      Thiết lập quyền cho user để có quyền truy cập vào cơ sở dữ liệu.

      > GRANT ALL PRIVILEGES ON wordpress.* TO 'user1'@'%' IDENTIFIED BY 'password';

      > flush privileges;

  3. Cài đặt PHP-FPM
    • Để cài đặt PHP-FPM ta nên sử dụng ppa:ondrej/php PPA để có thể cài đặt phiên bản PHP-FPM mới nhất
      # sudo add-apt-repository ppa:ondrej/php
    • Tiếp theo các bạn cài đặt PHP bằng lệnh sau.
      # sudo apt -y install php7.4 php7.4-fpm
    • Đầu tiên các bạn backup lại file cấu hình mặc định
      # sudo cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/www.conf.bak
    • Tiếp theo ta thực hiện lệnh Sed để thay đổi các thông số trong file www.conf
      # sudo sed -i 's/;listen.mode = 0660/listen.mode = 0660/g' /etc/php/7.4/fpm/pool.d/www.conf
      # sudo sed -i 's/;security.limit_extensions = .php .php3 .php4 .php5 .php7/security.limit_extensions = .php .php3 .php4 .php5 .php7/g' /etc/php/7.4/fpm/pool.d/www.conf
    • Cuối cùng tiến hành khởi động PHP-FPM
      # systemctl start php7.4-fpm
      # systemctl enable php7.4-fpm
  4. Cài đặt WORDPRESS
    • Đầu tiên ta cần tạo 1 foder Public_Apache
      # mkdir /home/wordpress/Public_Apache
    • Tiến hành cài download wordpress
      # cd /home/wordpress/
      # wget https://vi.wordpress.org/latest-vi.tar.gz
    • Giải nén file source wordpress bằng lệnh
      # tar -xvf latest-vi.tar.gz
    • Sau khi giải nén, bạn sẽ có file source wordpress như sau:
  5. Cấu hình Virtual Host:
    • Tạo file cấu hình virtual host cho website wordpress như sau :
      # touch /etc/apache2/site-availables/wordpress.conf
      # ln -s /etc/apache2/site-availables/wordpress.conf /etc/apache2/site-enables/
    • Ta truy cập vào file /etc/apache2/site-availables/wordpress.conf và cấu hình như sau:
      <VirtualHost *:80>
              DocumentRoot /home/wordpress/Public_Aphache/wordpress                  
              ServerName httai.tk                  
              ServerAlias www.httai.tk          
              <Directory "/home/wordpress/Public_Aphache/wordpress">
                       DirectoryIndex index.html index.php                          
                       Options FollowSymLinks                            
                       AllowOverride All                           
                       Require all granted          
               </Directory> 
      </VirtualHost>
    • Đến đây ta tiến hành cấp quyền cho thư mục
      # chown -R 755 /home/wordpress/Public_Aphache/wordpress
      # chown -R www-data:www-data /home/wordpress/Public_Aphache/wordpress
    • Truy cập vào wordpress và sử dụng thông tin MySQL đã tạo ở Phần 2 để kết nối đến database.
      Hình ảnh này chưa có thuộc tính alt; tên tệp của nó là image.png
    • Trong trường hợp gặp lỗi trong quá trình kết nối database, bạn có thể cấu hình trực tiếp ở file config trong resouce của WordPress như sau:
      # cd /home/wordpress/Public_Apache
      # mv wp-config-sample.php wp-config.php
      # vi wp-config.php
      Nhập thông tin database theo hướng dẫn ở hình dưới.
    • Tiếp tục thiết lập các thông tin của website WordPress và user quản lý, và cuối cùng nhấn Install WordPress để tiến hành cài đặt WordPress với thông tin đã cấu hình
    • Sau khi cài đặt xong, tiến hành login với tài khoản đã thiết lập ở trên.

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cài đặt WordPress trên server Ubuntu. Chúc Quý khách thành công!

Hướng dẫn cài đặt nhiều phiên bản PHP trên HestiaCP

I. HestiaCP

HestiaCP là một Web Control Panel mã nguồn mở và hoàn toàn miễn phí, đồng thời là một nhánh của VestaCP. Nó cung cấp một giao diện web đơn giản và sạch sẽ, đồng thời cung cấp khả năng cho quản trị viên quản lý các tính năng cốt lõi của máy chủ web của họ, bao gồm quản lý và triển khai trang web, email, DNS và cơ sở dữ liệu một cách dể dàng.

HestiaCP cũng cung cấp giao diện dòng lệnh, bạn có thể đọc thêm trong tài liệu HestiaCP  Hestia Control Panel (hestiacp.com)

Là một nhánh của VestaCP nên HestiaCP cũng sẽ có giao diện làm việc khá tương đồng. Điều khác biệt cơ bản nhất là Hestia sẽ hỗ trợ Ubuntu và Debian, cụ thể bao gồm các phiên bản OS sau:

  • Debian 9
  • Debian 10
  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

II. Hướng dẫn cài đặt nhiều phiên bản PHP trên HestiaCP

  1. Bước 1: SSH vào server HestiaCP.
  2. Bước 2. Thực hiện các lệnh sau:
    # cd /usr/local/hestia/bin
    # ./v-add-web-php 7.4
    • Lưu ý : 7.4 bạn có thế thay thế bằng các version php khác
  3. Bước 3: Thay đổi phiên bản PHP trên website
    • Truy cập vào panel quản trị hestiacp http://[ip-address]:8083
    • Chọn domain mong muốn cấu hình hoặc thay đổi version PHP.
    • Tại mục web ta chọn Edit Web Domain
    • Ở phần Backend Template, chọn version PHP đã thiết lập, ở đây Quý khách sẽ thấy HestiaCP sẽ hiển thị nhiều phiên bản PHP trong tùy chọn.
    • Nhấn OK và kiểm tra lại website đã thiết lập phiên bản PHP.
    • Quý khách có thể tạo một file info.php với nội dung như sau trong source code để kiểm tra chính xác phiên bản php đang chạy.
      <?php
          phpinfo();
      ?>

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách chạy nhiều phiên bản php trên HestiaCP. Chúc Quý khách thành công !


Hướng dẫn cấu hình tối ưu PHP-FPM

I. PHP-FPM là gì

PHP-FPM (FastCGI Process Manager) là một trình quản lý PHP thay thế cho FastCGI, với các tính năng bổ sung để có thể tối ưu cho các website có lượng truy cập lớn. Ưu điểm chính của PHP-FPM là nó sử dụng ít tài nguyên hơn so với bất kỳ giải pháp chạy PHP nào khác, qua đó quản lý hiệu quả tài nguyên và giúp tăng tốc website.

Trong nhiều trường hợp, việc tối ưu không tốt PHP-FPM không tốt có thể khiến server bị giới hạn khả năng chịu tải, trong khi vẫn dư thừa tài nguyên. Cụ thể hơn, Quý khách có thể thấy xuất hiện những lỗi như sau trong error log của PHP-FPM:

[05-Feb-2020 08:28:31] WARNING: [pool www] server reached pm.max_children setting (10), consider raising it
[05-Feb-2020 08:28:31] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 9 total children

Thông báo này có nghĩa là PHP-FPM đang bận và không thể xử lý lưu lượng truy cập cao với các tham số cấu hình hiện có.

PHP-FPM có thể dẫn đến quá tải máy chủ do nhiều lý do:

  • Quá nhiều tiến tình chạy do lưu lượng truy cập cao hoặc bị tấn công
  • Cấu hình PHP-FPM không được tối ưu so với tài nguyên của máy chủ

II. Tối ưu PHP-FPM

  1. Thông số máy chủ

    • Đầu tiên, hãy xác định lại thông số máy chủ của bạn. Số core CPU và kích thước bộ nhớ RAM hiện có của server, lượng tài nguyên sẽ sử dụng cho PHP-FPM.
    • Ví dụ: giả sử bạn có 4vCPU và RAM 16 GB
      Trong bài viết này, chúng tôi sẽ sử dụng 10 GB RAM để phân bổ cho hoạt động PHP.
  2. Tính dung lượng RAM tiêu thụ của mỗi tiến trình PHP-FPM

    • Thực thi lệnh sau để kiểm tra dung lượng RAM mà mỗi tiến trình PHP-FPM đang sử dụng.
      ps -ylC php-fpm7.3 --sort:rss

      Thay thế với đúng tên phiên bản PHP đang sử dụng.

    • Kết quả nhận được sẽ giống như bên dưới:
      S UID PID  PPID C PRI NI RSS    SZ     WCHAN TTY TIME      CMD 
      S 0   9030 1    0 80  0  31244  120002 -     ?   00:00:05  php-fpm7.3 
      S 33  7511 9030 1 80  0  130636 148827 -     ?   00:00:04  php-fpm7.3 
      S 33  7479 9030 2 80  0  133724 150336 -     ?   00:00:16  php-fpm7.3 
      S 33  7504 9030 2 80  0  136272 150365 -     ?   00:00:08  php-fpm7.3
    • Hãy lưu ý các giá trị bên dưới cột RSS. Đây là bộ nhớ được sử dụng bởi mỗi tiến trình PHP-FPM của bạn. Như trên, chúng ta có trung bình khoản 150 MB RAM được sử dụng cho mỗi tiến trình con PHP-FPM.
  3. Cấu hình PHP-FPM

    • File cấu hình PHP-FPM
      /etc/php/7.3/fpm/pool.d/www.conf

      Đường dẫn có thể sẽ khác tùy thuộc vào phiên bản php. Có 4 giá trị chúng ta cần lưu ý khi cấu hình php-fpm, bao gồm:

      • pm.max_children
      • pm.start_servers
      • pm.min_spare_servers
      • pm.max_spare_servers
    • pm.max_children
      Giá trị max_children nên được tính bằng cách lấy tổng dung lượng bộ nhớ RAM sử dụng cho PHP-FPM chia cho dung lượng ram tiêu thụ trung bình cho mỗi tiến trình PHP-FPM (2).
      Ví dụ: trong bài hướng dẫn này, chúng ta có 10 GB RAM (10000 MB) phân bổ cho mỗi tiến trình 150 MB, nên:

       pm.max_children = 10000 / 150 ~ 67
    • pm.start_servers
      Giá trị start_servers nên được tính bằng cách lấy số core CPU nhân với 4.
      Ví dụ: trong hướng dẫn này, số core của server là 4, nên:

      pm.start_servers = 4 x 4 = 16
    • pm.min_spare_servers
      Giá trị min_spare_servers nên được tính bằng cách lấy số core CPU nhân với 2.
      Ví dụ:  trong môi trường hướng dẫn này:

      pm.min_spare_servers = 4 x 2 = 8
    • pm.max_spare_servers
      Giá trị max_spare_servers cũng nên được tính bằng lấy số lượng core CPU nhân với 4.
      Ví dụ: trong môi trường bài hướng dẫn này:

      pm.max_spare_servers = 4 x 4 = 16
    • Chúng ta được kết quả cuối cùng:
      pm.max_children = 67 
      pm.min_spare_servers = 8 
      pm.max_spare_servers = 16 
      pm.start_servers = 16
  4. Lưu lại và khởi động lại dịch vụ  PHP-FPM:
    sudo service php7.3-fpm restart

Như vậy Long Vân đã hướng dẫn Quý khách cách tối ưu cho PHP-FPM. Chúc Quý khách thành công.