LEMP – Cài đặt Multiphp – Multisite trên Ubuntu 22.04

Tác giả: 26/05/2023

Hôm nay Nhân Hòa sẽ cùng các bạn tìm hiểu cách cài đặt nhiều domain trên cùng một máy chủ, mỗi domain chạy một phiên bản php

Demo của mình như sau:

  • Hệ điều hành Ubuntu
  • Webserver Nginx
  • MySQL8
  • PHP
  • PhpMyAdmin
  • Remote MySQL
  • Site1.itvn.xyz chạy php8.2 fpm
  • Site2.itvn.xyz chạy php8.1 fpm

I – Cài Nginx

Update OS và phần mềm

apt update -y

apt upgrade -y

reboot

apt install nginx  -y

systemctl enable nginx

systemctl start nginx

unlink /etc/nginx/sites-enabled/default

II – Cài MultiPHP

apt-get install software-properties-common -y

add-apt-repository ppa:ondrej/php

apt-get update -y

Cài php 8.2

apt install php8.2 -y

Cài extension

apt-get install -y php8.2-cli php8.2-common php8.2-fpm php8.2-mysql php8.2-zip php8.2-gd php8.2-mbstring php8.2-curl php8.2-xml php8.2-bcmath

php -m

php -v

systemctl start php8.2-fpm

systemctl enable php8.2-fpm

systemctl status php8.2-fpm

 

Cài và start PHP 8.1

apt-get install php8.1 php8.1-fpm

apt-get install php8.1-mysql php8.1-mbstring php8.1-xml php8.1-gd php8.1-curl

systemctl start php8.1-fpm

systemctl enable php8.1-fpm

systemctl status php8.1-fpm

Cài và start PHP 7.4

apt-get install php7.4 php7.4-fpm

apt-get install php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

Cài và start PHP 5.6

apt-get install php5.6 php5.6-fpm

apt-get install php5.6-mysql php5.6-mbstring php5.6-xml php5.6-gd php5.6-curl

Switch the Default PHP Version for CLI

update-alternatives --config php

III – Cài đặt MySQL8

apt install mysql-server

Lấy password root mysql

mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456aA@';

FLUSH PRIVILEGES;

exit;

Bảo mật MySQL

mysql_secure_installation

Cấu hình Nginx để sử dụng PHP 8.2 cho website www.site1.itvn.xyz

vi /etc/nginx/sites-available/site1.itvn.xyz.conf

Thêm vào

server {
listen 80;
server_name site1.itvn.xyz www.site1.itvn.xyz;
root /var/www/site1.itvn.xyz;

index index.html index.htm index.php;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}

location ~ /\.ht {
deny all;
}

}

Tạo liên kết với site-enable

ln -s /etc/nginx/sites-available/site1.itvn.xyz.conf /etc/nginx/sites-enabled/

Tạo folder chứa source code website site1.itvn.xyz

mkdir -p /var/www/site1.itvn.xyz
vi index.php

Thêm vào

<?php
phpinfo();
?>

Cấu hình Nginx để sử dụng PHP 8.1 cho website www.site2.itvn.xyz

vi /etc/nginx/sites-available/site2.itvn.xyz.conf

Thêm vào

server {
listen 80;
server_name site2.itvn.xyz www.site2.itvn.xyz;
root /var/www/site2.itvn.xyz;

index index.html index.htm index.php;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}

location ~ /\.ht {
deny all;
}

}

Tạo liên kết với site-enable

ln -s /etc/nginx/sites-available/site2.itvn.xyz.conf /etc/nginx/sites-enabled/

Tạo folder chứa source code website site2.itvn.xyz

mkdir -p /var/www/site2.itvn.xyz
vi index.php

Thêm vào

<?php
phpinfo();
?>

 

IV – Cài đặt phpMyAdmin

apt install phpmyadmin

Trong quá trình cài đặt, bạn sẽ được nhắc chọn một máy chủ web (Apache hoặc Lighttpd) để cấu hình. phpMyAdmin có thể tự động thực hiện một số thay đổi cấu hình để đảm bảo rằng nó hoạt động chính xác với một trong các máy chủ web này khi cài đặt. Tuy nhiên, vì bạn đang sử dụng Nginx làm máy chủ web, bạn không nên chọn một trong hai tùy chọn này. Thay vào đó, hãy nhấn TAB để đánh dấu <Ok> và sau đó nhấn ENTER để tiếp tục quá trình cài đặt.

Tiếp theo, bạn sẽ được nhắc có sử dụng dbconfig-common để định cấu hình cơ sở dữ liệu ứng dụng hay không. Chọn <Yes> . Thao tác này sẽ thiết lập cơ sở dữ liệu nội bộ và người dùng quản trị cho phpMyAdmin. Bạn sẽ được yêu cầu xác định mật khẩu mới cho người dùng phpmyadmin MySQL, nhưng vì đây không phải là mật khẩu bạn cần nhớ nên bạn có thể để trống và để phpMyAdmin tạo mật khẩu ngẫu nhiên.

Tạo liên kết phpMyadmin với website của bạn

ln -s /usr/share/phpmyadmin /var/www/site1.itvn.xyz/phpmyadmin
ln -s /usr/share/phpmyadmin /var/www/site2.itvn.xyz/phpmyadmin

V – Remote MySQL
Chỉnh sửa cấu hình BindIP của MySQL
vi /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
Tạo user remote % = wirdcard
mysql -u root -p

CREATE USER 'site'@'%' IDENTIFIED WITH mysql_native_password BY '123456aA@';

ALTER USER 'site'@'%' IDENTIFIED WITH mysql_native_password BY '123456aA@';

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'site'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

exit
Hoặc sửa một user đã tồn tại
mysql -u root -p
RENAME USER 'site'@'localhost' TO 'site'@'%';
CREATE USER 'site'@'%' IDENTIFIED BY '123456aA@';
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'site'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

Như vậy mình đã giới thiệu cách cấu hình Ubuntu-Nginx-MySQL-PHP-phpMyadmin và RemoteMySQL , chúc các bạn thực hiện thành công và

Hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com

Trả lời