Tuesday, November 15, 2022

LEMP on Ubuntu 22.04

ENV

  • Ubuntu 22.04 Server
  • UFW status is inactive

Step

$ sudo apt update

install nginx 

  • ตอนนี้มันจะได้ nginx version: nginx/1.18.0 (Ubuntu) 

$ sudo apt install nginx

$ sudo nginx -v

  • ทดสอบ

http://server_domain_or_ip

  • พาธไฟล์ root ของ nginx

/var/www/html/

install MySQL 

  • ตอนนี้มันจะได้ mysql  Ver 8.0.31-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

$ sudo apt install mysql-server

$ sudo mysql --version

install PHP สำหรับ NGINX 

  • ลง แบบ FPM และ php-mysql ค่าเริ่มต้นจะเป็นของ php8.1 นะ

$ sudo apt install php8.1-fpm php-mysql

  • ติดตั้ง lib ที่จำเป็น

sudo apt install php8.1-bcmath php8.1-bz2 php8.1-curl php8.1-intl php8.1-mbstring php8.1-mysql php8.1-readline php8.1-xml php8.1-zip php8.1-gd php8.1-gmp 

  • ทดสอบรัน PHP บน NGINX ของเราโดย สร้างไฟล์ info.php ก่อน

$ nano /var/www/html/info.php

  • แก้ไขคอนฟิก default ให้รัน php ได้ซะก่อน (ก่อนแก้ไขอย่าลืมสำรองไฟล์ไว้ก่อน)
$ sudo nano /etc/nginx/sites-available/default

  • เปิด comment ที่เค้า comment เกี่ยวกับการเปิดใช้งาน php ไว้ หรือ เพิ่ม คอนฟิกประมาณนี้ 

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}

location ~ /\.ht {
deny all;
}
  • โดยใส่โค้ดแบบนี้

<?php phpinfo(); ?>

  • ทดสอบ ถ้าสำเร็จ info จะมี  หัวข้อ PDO, และ MySQLi คือ lib mysql สำหรับ php ใช้ด้วยกันได้ ถ้าไม่มี หัวข้อ MySQLi แสดงว่า php-mysql เวอร์ชั่นไม่ตรงกันจึงใช้ไม่ได้

http://server_domain_or_ip/info.php
สร้าง virtual host สำหรับ nginx

$ sudo mkdir /var/www/your_domain

$ sudo chown -R $USER:$USER /var/www/your_domain

$ sudo nano /etc/nginx/sites-available/your_domain

  • ใส่เนื้อหาประมาณนี้

  • จากนั้นเปิดใช้งาน virtual host config ไฟล์อันนี้
$ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled

  • ปิด host default

$ sudo unlink /etc/nginx/sites-enabled/default

  • *** ถ้าต้องการเอา vhost default กลับ

$ sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled

  • ทดสอบ syntax config site ถูกต้อง

$ sudo nginx -t

  • restart nginx

$ sudo /etc/init.d/nginx [reload|restart] หรือ $ sudo systemctl [reload|restart] nginx

  • ตอนนี้ root vhost ใหม่เราจะอยู่ที่ประมาณนี้ เอาไฟล์ php ไปรันได้เลย

/var/www/your_domain

Add

  • ถ้าต้องการใช้ php8.0 ตั้งแต่เริ่มให้ add repo แล้ว update ก่อน

$ sudo add-apt-repository ppa:ondrej/php

$ sudo apt update

  • เราสามารถกำหนดให้ vhost แต่ละอันใช้ php เวอร์ชั่นต่างๆ ได้ตามต้องการ 
  • แค่เราลง php เวอร์ชั่นที่เราต้องการเพิ่มใน server เครื่องนั้น และ คอนฟิก vhost 
  • fastcgi_... /php8.1-fpm.sock; เปลี่ยนเป็น เวอร์ชั่นที่เราลงเพิ่ม แล้ว restart nginx ซักรอบ

Ref

  • https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-22-04

No comments:

Post a Comment