Lamp บน Ubuntu 22.04 lts
Table of Contents
Lamp บน Ubuntu 22.04 lts
คำว่า “Lamp” มันคือคำย่อมาจากกลุ่มของ software ที่เราติดตั้งด้วยกัน เพื่อให้ Server ที่เราต้องการทำเป็นโอสต์เว็บไซต์ ที่เขียนด้วย PHP มันประกอบไปด้วย Linux operating system with the Apache web server. The site data is stored in a MySQL database, and dynamic content is processed by PHP.
สิ่งที่ต้องเตรียม
ติตตั้ง LAMP บน Ubuntu 22.04 lts นี้ เราต้องติดตั้ง Ubuntu ก่อน ในกรณีที่เราสร้าง Server ขึ้นมาเอง แต่ ในกรณีที่เราเช่า Cloud Hosting อย่างเช่น DigitalOcean ก็ไม่ต้องติดตั้ง เพราะตอนสร้าง Droplets จะมีขั้นตอนการสร้าง Image ให้เราเลือกเพื่อสร้างเรียบร้อยแล้ว แล้วแต่ว่า เราจะเลือกเอา Linux ตัวไหน
ขั้นตอนที่ 1 ติดตั้ง Apache และอัพเดท Firewal
Apache web server เป็น ที่นิยมใช้ในการทำ Web server กันมาก แต่ ก่อนที่จะติดตั้ง Apache ต้องใช้คำสั่ง update ก่อน
sudo apt update
หลังจากนั้นใช้คำสั่งติดตั้ง Apache ด้วยคำสั่ง
sudo apt install apache2
เมื่อใช้คำสั่ง จะคำถามให้ตอบว่า ตกลงจะติดตั้ง Apache หรือไม่ ให้ตอบ Y หากต้องการติดตั้ง หลังจากนั้นให้กด ENTER
เมื่อติดตั้ง เสร็จเรียบร้อย ขั้นตอนต่อมาคือจะต้องปรับแต่งไฟล์วอลเพื่อให้ สามารถใช้งานเส้นทางการไหลผ่านทาง HTTP ได้ Ubuntu มีค่าดีฟอลต์ สำหรับและเครื่องมือสำหรับปรับแต่งเรียกว่า Uncomplicated Firewall (UFW)
ในการใช้คำสั่งเพื่อตรวจสอบว่าตอนนี้ มีคุณสมบัติหรือที่ใช้งานได้ตอนนี้ มีอะไรบ้าง โดยการใช้คำสั่ง
sudo ufw app list
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
ในแต่ส่วนที่เมื่อเราใช้คำสั่ง ufw app list แล้วแสดงผลออกมา สามารถอธิบายรายละเอียดสั้นๆๆ ได้
- Apache จะใช้งานได้เฉพาะ port 80 เท่านั้น normal, unencrypted web traffic
- Apache Full ใช้งานได้ ทั้ง port 80 และ 443 (TLS/SSL encrypted traffic)
- Apache Secure ใช้ได้เฉพาะ port 443 เท่านั้น
ในตอนนี้ สิ่งที่เราต้องทำคือเปิดเฉพาะ Port 80 ก่อน เพราะตอนติดตั้ง Apache ครั้งแรก เรายังไม่มีหรือยังไม่ได้ติดตั้ง TLS/SSL certicate ที่จะให้ผ่านได้
คำสั่งให้ผ่านเฉพาะ Port 80 ใช้คำสั่ง
sudo ufw allow in "Apache"
ตรวจสอบดูการเปลี่ยนเปลง
sudo ufw status
ผลที่แสดงผลออกมา
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
การติดต่อสื่อสารผ่านทาง port 80 ตอนนี้ สามารถผ่านทาง firewall ได้แล้ว
เราสามารถทดสอบว่าที่เราได้ดำเนินการมาตั้งหมดสมบูรณ์ถูกต้องหรือไม่ โดยการลองเข้าไปเปิดดูว่าการติดตั้ง Apache และการกำหนดค่า firewall โดยการใช้คำสั่งเรียกผ่าน บราวเซอร์ โดยการพิมพ์หมายเลข IP ของ server ที่เราติดตั้ง apache
http://your_server_ip
เมื่อลองเปิดบราวเซอร์ และพิมพ์หมายเลข IP ของ Server ของเรา หากเราติดตั้งถูกต้องและเปิด Port 80 แล้ว หน้าปกติของ apache web page มันจะแสดงข้อมูลรายละเอียดมาให้เรา ตามตัวอย่างด้านล่างคือหน้าเริ่มต้นของ Apache
Installing MySQL
ในตอนนี้ เรามี Web Server ที่มันสามารถทำงานได้แล้ว ต่อไปคือต้องติดตั้งระบบฐานข้อมูล เพื่อใช้ในการจัดการและเก็บข้อมูลในเว็บไซต์ของเรา ในส่วนนี้ เท่าที่ทดสอบมา MySQL น่าจะเป็นตัวเลือกได้ดี หรือใครจะใช้ MariaDB ก็ได้ แต่ในบทความนี้ขออธิบายการติดตั้งโดยใช้ MySQL
เช่นเดิม ใช้คำสั่ง apt เพื่อรับโปรแกรมมาจาก reop และติดตั้งซอฟร์แวร์
sudo apt install mysql-server
เมื่อติดตั้งเสร็จ สิ่งที่ต้องทำต่อไปคือการใช้คำสั่ง เพื่อรัน สคริปต์ด้านการระบบความปลอดภัย ในขั้นตอนการดำเนินการหรือการใช้คำสั่งนี้ เป็นการเอาออกค่าปกติของซอฟต์แวร์ที่อาจจะไม่มีความปลอดภัยหรือเชื่อถือไม่ได้ออกและการกำหนดการเข้าถึงฐานข้อมูลของเราเป็นส่วนที่ค่อนข้างจะสำคัญ มาก การเรียกใช้คำสั่ง
สิ่งแรกที่เจอเมื่อใช้คำสั่งดังกล่าวคือ ระบบจะถามว่าต้องการคอนฟิก validate password plugin หรือไม่ ในขั้นตอนนี้ สามารถเลือกตอบ y หรือ no ได้
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
หากเราตอบ Y จะเข้าสู่ขั้นตอนการเลือกระดับการสร้าง Password ที่เราต้องการสร้างว่าให้มีความสมบูรณ์หรือแข็งแรงในระดับไหน ในการกำหนด Password อาจจะมีการแจ้งผิดพลาดบ้าง หากเราตั้งค่า Password ของเราไม่มีส่วนประกอบด้วย ตัวเลข ตัวอักษรตัวเล็กและตัวใหญ่ รวมทั้งตัวสัญญาลักษณ์ต่าง ๆๆ หากมีการแจ้งข้อผิดพลาดให้แก้ไข ด้วยกำหนดให้ประกอบด้วยรูปแบบดังกล่าว
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
เมื่อเราเลือกระดับความสมบูรณ์ของ password แล้ว จะเข้าสู่ขั้นตอนการกำหนด password หากเราคิดว่า เราพอใจแล้วกับ password ที่เรากำหนด ก็ให้ดำเนินการต่อไป
sudo mysql_secure_installation
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Warning, Tip, Notice, or Information.
ในขั้นตอนนี้ หากเจอปัญหา กดปุ่ม Yes แล้ว ไม่สามารถกำหนดรหัสผ่านได้ และมีการการกำหนดรหัสใหม่อีกครั้ง แม้ว่าเราจะกำหนดรหัสตรงแล้วก็ตามมันเกิดจากปัญหาการกำหนดรหัส วิธีการแก้ไข
- เปิด terminal ใหม่ขึ้นมาอีกตัว
- ในTerminate ให้สั่งให้
mysql_secure_installation
หยุดการทำงาน โดยใช้คำสั่งkillall command
: sudo killall -9 mysql_secure_installation
- Start the mysql client: โดยใช้คำสั่ง
sudo mysql
- Run the following SQL query:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SetRootPasswordHere';
exit
- Then run the following command to secure it:
sudo mysql_secure_installation
- When promoted for the password enter the
SetRootPasswordHere
(or whatever you set when you ran the above SQL query) - That is all.
.
sudo mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
หากเราสังเกตุดู ขั้นตอนในการเรียกใช้ Mysql เราไม่ต้องใส่ Password เพื่อใช้งานในฐาน root แม้ว่าเราจะกำหนดไว้ในขั้นตอนการรันสคริปต์ mysql_secure_installation นั้นเป็นเพราะกระบวนการตรวจสอบค่าปกติของ Mysql ถูกกำหนดไว้เป็น unix_socket แทนที่ password แมัมันจะดูว่าอาจจะมีปัญหาด้านความปลอดภัย แต่จริงๆๆ แล้วมันจะทำให้ฐานข้อมูลที่ความปลอดภัยมากยิ่งขึ้น เนื่องจากผู้ใช้ที่สามารถเข้าใช้งานในระบบ root ของ mysql ได้คือใช้ระบบที่ใช้คำสั่ง sudo นั้นหมายถึงเป็นผู้มีสิทธิ์เต็มในการจัดการในทางปฎิบัติ
การตั้ง password สำหรับ root นั้น ถือเป็นการป้องกัน หากเรากำหนดแบบนี้ นั้นหมายถึงกระบวนการในการตรวจสอบมันจะเปลี่ยนจาก unix_socket
to password
.
เพื่อความปลอดภัยที่สูงขึ้น วิธีการที่ที่สุดคือ จะต้องสร้างชื่อผู้ใช้ที่มีสิทธิ์น้อยกว่า ไว้สำหรับเพื่อเข้าใช้งานในแต่ละฐานข้อมูล
Warning, Tip, Notice, or Information.
มี php บางรุ่นที่ไม่รองรับ caching_sha2_password
ทางคือให้ใช้ mysql_native_password แทน สำหรับวิธีการนี้อ่านได้จากตรงนี้
เป็นว่าได้ติดตั่ง MySQL server และระบบป้องกันเสร็จเรียบร้อยแล้ว ถัดไปจะเป็นการติดตั้ง PHP ซึ่งเป็นส่วนประกอบอีกตัวของ LAMP
Installing PHP
ตอนนี้ เราได้ติดตั้ง apache เพื่อใช้ในงานบริการเนื้อหาและติดตั้ง MySQL เพื่อเก็บและจัดการเกี่ยวกับข้อมูล ส่วน PHP เป็นส่วนประกอบตัวที่เราติดตั้งเพื่อประมวลผลเนื้อหน้าหาแบบไดนามิค คือเนื้อหาที่เขียนด้วย PHP
ในการติดตั้งแพ็คเก็ตของ PHP สิ่งที่ Module ของ PHP ต้องใช้ในการติดต่อระหว่าง MySQL คือ php-mysql
ดังนั้นตัวนี้ต้องติดตั้งด้วย นอกจากนี้ แล้วต้องติดตั้ง libapache2-mod-php เพื่อเปิดการทำงานให้ apache สามารถจัดการเกี่ยว ไฟล์ของ PHP สำหรับ Core ของ PHP ตัวอื่นจะถูกติดตั้งโดยอัตโนมัติ
ในการติดตั้งแพ็คเก็ตเหล่านี้ ติดตั้งโดยใช้คำสั่ง
sudo apt install php libapache2-mod-php php-mysql
เมื่อติดตั้งเสร็จ ใช้คำสั่งนี้ เพื่อตรวจสอบดูรุ่นและรายละเอียด
php -v
Output
PHP 8.1.2 (cli) (built: Mar 4 2022 18:13:46) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
มาถึงจุดนี้ ถือว่าการ ติตตั้ง LAMP และ WordPress บน Ubuntu 22.04 lts ในส่วนของ LAMP ของเราสร็จสิ้นสมบูรณ์ ในขั้นตอนต่อไปก่อนที่เราจะไปปรับแต่ง PHP เพื่อให้รองรับการติดตั้ง wordpress
ทางที่ดีที่สุดคือต้องปรับแต่ง Apahe Virtual Host เพื่อจัดการไฟล์ในเว็บไซต์ของเราและ Folders
การสร้าง virtual Host สำหรับเว็บไซต์ของเรา
ในกรณีที่เราใช้ Apache เราสามารถสร้าง Virtual Host เพื่อสรุปรายละเอียดการกำหนดค่า และใช้เพื่อกำหนดในกรณีที่มี Host จำนวน Domain มากกว่า หนึ่งโดเมน แต่ใช้แค่ Server เดียว
ตามตัวอย่าง ในการกำหนดโดเมน จะใช้คำว่า You_Domain แต่หากใครมีโดเมนเป็นของตัวเองให้เปลี่ยนเป็นชื่อโดเมนของตัวเองแทน
Apache ที่เราใช้ทำเป็นเว็บเซิร์ฟเวอร์บน Ubuntu 22.04 จะมี Virtual Host เปิดใช้งานเริ่มต้นปกติอยู่แล้ว โดยมันจะบริการงานเกี่ยวเก็บเอกสารที่เราสามารถจะเอาข้อมูลเว็บไซต์ของเราไปเก็บไว้ที่ไดเร็กเตอรี่ /var/www/html
ซึ่งมันจะทำงานได้ดีสำหรับในกรณีที่เรามีเว็บไซต์เดียว แต่มันอาจจะยุ่งยากในกรณีที่เราต้องการจะสร้างหลายเว็บไซต์ใน Server เดียว
ทางที่ดีเราน่าจะสร้าง โครงสร้างไดเร็กเตอรีใหม่ ไว้ใน /var/www
สำหรับเว็บไซต์ของเรา ที่เป็นชื่อตามโดเมนของเรา
แล้วปล่อยทิ้ง /var/www/html
เพื่อต้องการใช้ในการทดสอบหรือผู้ใช้บางคนต้องการ การสร้างไดเร็กเตอรีใหม่ ใช้วิธีการตามคำสั่งด้านล่าง
sudo mkdir /var/www/your_domain
การกำหนดเจ้าของไดเร็กเตอรีที่เราสร้าง หรืออาจจะข้ามไปก่อนก็ได้ แล้วค่อยใช้คำสั่งอื่นแทนในตอนเราติดตั้ง WordPress
sudo chown -R $USER:$USER /var/www/your_domain
หลังจากนั้นให้ไปสร้างไฟล์สำหรับคอนฟิกใหม่ขึ้นมาอีกไฟล์ โดยให้ตั้งชื่อตามโดเมนของเราหรือชื่อที่เราสามารถอ่านแล้วเข้าใจ หรือจำได้ดีในกรณีทีมี Host ของโดเมนเนมหลายตัว
วิธีกรสร้างให้สร้างไนไดเร็กเตอรีทีมีชื่อว่า sites-available
แล้วใช้ตัว command-line editor ตัวที่เราชอบ อาจจะเป็น VI,ViM ,NANO ตามตัวอย่างใช้ Nano แต่หากยังไม่ได้ติดตั้ง ให้ใช้ VI แทนก็ได้
นี่คือสั่งสร้างไฟล์ ให้เปลี่ยนชื่อตรง you_domain.con ให้เป็นชื่อตามที่เราต้องการ
sudo nano /etc/apache2/sites-available/your_domain.conf
ตอนที่เราสร้างจะมีแค่หน้าจอว่างเปล่า ให้คัดลอกไฟล์คอนฟิกข้างล่างไปวาง แล้วเปลี่ยนชื่อ your_domain ให้เป็นชื่อที่เราตั้งไว้ตอนสร้างไดเร็กเตอรี่ ที่อยู่ใน /var/www
<VirtualHost *:80>
ServerName your_domain
ServerAlias www.your_domain
ServerAdmin webmaster@localhost
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
บันทึกแล้วปิดเมื่อเราแก้ไขเสร็จ หากเราใช้ Nano การบันทึกให้กด CTRL+X
, then Y
and ENTER
.
อธิบายนิดในขั้นตอนที่ผ่านมา ที่เราปรับแต่งค่าหรือคอนฟิก VirtualHost นั้น เพื่อเป็นการบอก Apache ว่า เราใช้ไดเร็กเตอรี่ /var/www/your_domain เป็นพื้นที่สำหรับเก็บข้อมูลของเว็บไซต์ เป็นไดเร็กเตอรี่หลัก (web root directory)
หากเราไม่มีโดเมนเนม แต่เราต้องการทดสอบ Apache ก็ให้ลบ หรือทำเครื่อง # หน้าบรรทัดที่เขียนว่า ServerName
and ServerAlias
ต่อมาเป็นการใช้คำสั่ง a2ensite
เพื่อเปิดใช้งาน Virtual Host ที่เราสร้างใหม่
sudo a2ensite your_domain
หลังจากนั้นก็ให้ปิดค่าการใช้เว็บเบื้องต้นที่เป็นไฟล์คอนฟิกมาพร้อมกับการติดตั้ง apache หากไม่ปิด ตรงนี้ค่าเริ่มต้นนี้จะทำงานแทนที่ Virtual Host ที่เราสร้างไว้
คำสั่งที่ใช้คือ a2dissite
sudo a2dissite 000-default
ตรวจสอบว่าการคอนฟิกที่ผ่านมาของเราถูกต้องไม่มึการเขียนค่าผิดพลาดตามที่โปรแกรมกำหนดไว้ โดยใช้คำสั่ง
sudo apache2ctl configtest
ท้ายสุดใช้คำสั่ง เพื่อให้ Apache อ่านค่าคอนฟิกใหม่ ให้สมบูรณ์
sudo systemctl reload apache2
เป็นอันว่า น่าจะเสร็จสิ้นสำหรับการ ติตตั้ง LAMP บน Ubuntu 22.04 lts หลังจากนี้ จะเป็นขั้นตอนในการติดตั้ง WordPress ในกรณีที่เราจะใช้ WordPress ในการสร้างเว็บไซต์ เพื่อไม่ให้บทความยาว สามารถอ่านต่อได้ที่นี้
ส่วนรายละเอียดข้างล่างคือขั้นตอนในการติดตั้งทั้งหมดรวมทั้งวิธีแก้ปัญหาเพื่อใครเข้าใจแล้ว จะได้ไล่ตามคำส่งได้เลยไม่ต้องงอ่านบทความซ้ำให้เสียเวลา
บทความนี้ทั้งหมดอ้างอิงมาจากคู่มือในการใช้ Droplet ของ DigitalOcean
apt update
2 apt list --upgradable
3 adduser green
4 usermod -aG sudo green
5 ufw app list
6 ufw allow OpenSSH
7 ufw enable
8 sudo apt update
9 sudo apt install apache2
10 sudo ufw app list
11 sudo ufw allow in "Apache"
12 sudo ufw status
13 sudo apt install mysql-server
14 sudo systemctl status unattended-upgrades.service
15 sudo apt update
16 sudo apt install unattended-upgrades
17 sudo apt install mysql-server
18 sudo mysql_secure_installation
19 sudo mysql
20 sudo mysql -u root -p
21 sudo apt install php libapache2-mod-php php-mysql
22 php -v
23 sudo mkdir /var/www/cib
24 sudo nano /etc/apache2/sites-available/cib.conf
25 sudo a2ensite cib
26 sudo a2dissite 000-default
27 sudo apache2ctl configtest
28 vi /etc/apache2/apache2.conf
29 sudo apache2ctl configtest
30 sudo systemctl reload apache2
31 sudo nano /etc/apache2/mods-enabled/dir.conf
32 sudo systemctl reload apache2
33 nano /var/www/cib/info.php
34 php -v
35 sudo apt-get install -y php8.1-cli
36 sudo apt-get install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath
37 sudo mysql -u root -p
38 sudo apt update
39 sudo apt install php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc php8.1-soap php8.1-intl php8.1-zip
40 sudo systemctl restart apache2
41 sudo nano /etc/apache2/sites-available/wordpress.conf
42 sudo a2enmod rewrite
43 sudo apache2ctl configtest
44 sudo systemctl restart apache2
45 cd /tmp
46 curl -O https://wordpress.org/latest.tar.gz
47 tar xzvf latest.tar.gz
48 touch /tmp/wordpress/.htaccess
49 cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
50 mkdir /tmp/wordpress/wp-content/upgrade
51 sudo cp -a /tmp/wordpress/. /var/www/cib
52 sudo chown -R www-data:www-data /var/www/cib
53 sudo find /var/www/cib/ -type d -exec chmod 750 {} \;
54 sudo find /var/www/cib/ -type f -exec chmod 640 {} \;
55 sudo nano /var/www/wordpress/wp-config.php
56 sudo nano /var/www/cib/wp-config.php
57 cd /var/www
58 ls
59 cd cib
60 ls
61 ls -la
62 sudo chown -R www-data:www-data /var/www/cib
63 sudo systemctl restart apache2
64 cd /etc/apache2/sites-available
65 ls
66 rm wordpress.conf
67 sudo systemctl restart apache2
68 cd /tmp
69 cd wordpress/
70 ls
71 cp .htaccess /var/www/cib
72 cd ..
73 ls
74 cd /var/www/cib/
75 ls
76 rm -rf *
77 ls
78 cd /tmp
79 ls
80 rm -rf wordpress/
81 curl -O https://wordpress.org/latest.tar.gz
82 tar xzvf latest.tar.gz
83 cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
84 sudo cp -a /tmp/wordpress/. /var/www/cib
85 sudo apt update
86 sudo apt install certbot python3-certbot-apache
87 sudo apache2ctl configtest
88 sudo systemctl reload apache2
89 sudo ufw status
90 sudo ufw allow 'Apache Full'
91 sudo ufw status
92 sudo certbot --apache
93 sudo chown -R www-data:www-data /var/www/cib
94 sudo find /var/www/cib/ -type d -exec chmod 750 {} \;
95 sudo find /var/www/cib/ -type f -exec chmod 640 {} \;
96 vi /var/www/cib/wp-config.php
97 nano /var/www/cib/wp-config.php
98 cd /var/www/cib
99 ls
100 ls -la
101 systemctl restart apache2
102 chown -R www-data:www-data /var/www/cib
103 systemctl restart apache2
104 chmod -R 755 /var/www/cib
105 systemctl restart apache2
106 ls -la
107 systemctl restart apache2
108 nano /var/www/cib/wp-config.php
109 systemctl restart apache2
110 nano /var/www/cib/wp-config.php
111 mysql -u root -p
112 nano /var/www/cib/wp-config.php
113 systemctl restart apache2
114 mysql -u root -p
115 mysql -u cibgreen -p
116 mysql -u root -p
117 nano /var/www/cib/wp-config.php
118 sudo find /var/www/cib/ -type d -exec chmod 750 {} \;
119 sudo find /var/www/cib/ -type f -exec chmod 640 {} \;
120 chown -R www-data:www-data /var/www/cib
121 systemctl restart apache2
122 sudo apt install php8.1-dom
123 sudo apt install php8.1-gmagick
124 sudo apt install php8.1-SimpleXML
125 sudo apt install php8.1-ssh2
126 sudo apt install php8.1-xml
127 sudo apt install php8.1-xmlreader
128 sudo apt install php8.1-curl
129 sudo apt install php8.1-exif
130 sudo apt install php8.1-ftp
131 sudo apt install php8.1-date
132 sudo apt install php8.1-gd
133 sudo apt install php8.1-hash
134 sudo apt install php8.1-imagick
135 sudo apt install php8.1-json
136 sudo apt install php8.1-libxml
137 sudo apt install php8.1-openssl
138 sudo apt install php8.1-posix
139 sudo apt install php8.1-pcre
140 sudo apt install php8.1-tokenizerz
141 sudo apt install php8.1-spl
142 systemctl restart apache2
143 nano /var/www/cib/wp-config.php
144 cd /etc/php/8.1/
145 ls
146 cd apache2/
147 ls
148 vi php.ini
149 systemctl restart apache2
150 cd /var/www/cib/
151 ls
152 cd wp-includes/
153 ls
154 cd ..
155 ls
156 cd wp-content/
157 ls
158 cd themes/
159 ls
160 systemctl restart apache2
161 vi /var/www/cib/wp-config.php
162 systemctl restart apache2
163 cd wplms/
164 ls
165 mkdir plugins
166 chmod 755 -R plugins
167 cd /
168 ls
169 cd /etc/apache2/cd ..
170 pwd
171 cd /etc/php/8.1/apache2/
172 vi php.ini
173 systemctl restart apache2
ปัญหาที่เจอและวิธีการแก้ไข
เดิม เป็น php 7.4 แล้ว update Ubuntu >php8.1 จะมีปัญหาเรียก php ไม่ได้ทางแก้
sudo a2dismod php7.4
sudo a2enmod php8.1
apt install php8.1 libapache2-mod-php8.1
sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-redis php8.1-intl -y
การแก้ไข php.ini
nano /etc/php/8.1/apache2/php.ini
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000