Bước 1: Cập nhật gói phần mềm
Trước khi cài đặt LAMP, bạn nên cập nhật gói phần mềm và kho lưu trữ. Chạy các lệnh sau trên hệ điều hành Ubuntu (bài viết này là 20.04, các bản khác cũng tương tự):
sudo apt update
sudo apt upgrade
Bước 2: Cài đặt Apache Web Server
Nhập lệnh sau để cài đặt Apache Web server. Gói apache2-utils sẽ cài đặt một số tiện ích hữu ích như công cụ benchmark Apache HTTP server.
sudo apt install -y apache2 apache2-utils
systemctl status apache2
Đầu ra mẫu:
apache2.service - The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)Active: active (running) since Sat 2020-04-11 11:31:31 CST; 2s agoDocs: https://httpd.apache.org/docs/2.4/Process: 53003 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)Main PID: 53011 (apache2)Tasks: 55 (limit: 19072)Memory: 6.4MCGroup: /system.slice/apache2.service├─53011 /usr/sbin/apache2 -k start├─53012 /usr/sbin/apache2 -k start└─53013 /usr/sbin/apache2 -k start
Gợi ý: Nếu lệnh trên không thoát ngay lập tức, bạn có thể nhấn phím Q để giành lại quyền kiểm soát Terminal.
- Nếu nó không chạy, hãy sử dụng systemctl để khởi động.
sudo systemctl start apache2
- Bạn cũng nên cho phép Apache tự động khởi động tại thời điểm boot hệ thống.
sudo systemctl enable apache2
- Kiểm tra phiên bản Apache:
apache2 -v
- Đầu ra:
Server version: Apache/2.4.41 (Ubuntu)Server built: 2020-03-05T18:51:00
- Bây giờ, hãy nhập địa chỉ IP public của Ubuntu 20.04 server vào thanh địa chỉ trình duyệt. Bạn sẽ thấy trang “It works!”, có nghĩa là Apache Web server đang chạy bình thường. Nếu bạn đang cài đặt LAMP trên máy tính Ubuntu 20.04 cục bộ, hãy nhập 127.0.0.1 hoặc localhost vào thanh địa chỉ trình duyệt.
Nhập địa chỉ IP public của Ubuntu 20.04 server vào thanh địa chỉ trình duyệt - Nếu kết nối bị từ chối hoặc không thể hoàn tất, có thể có tường lửa ngăn các yêu cầu đến cổng TCP 80. Nếu bạn đang sử dụng tường lửa iptables, thì bạn cần chạy lệnh sau để mở cổng TCP 80.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- Nếu bạn đang sử dụng tường lửa UFW, hãy chạy lệnh này để mở cổng TCP 80.
sudo ufw allow http
- Bây giờ, bạn cần đặt www-data (người dùng Apache) làm chủ sở hữu của document root (hay còn gọi là web root). Theo mặc định, nó thuộc sở hữu của người dùng root.
sudo chown www-data:www-data /var/www/html/ -R
- Theo mặc định, Apache sử dụng hostname hệ thống làm ServerName toàn cầu của nó. Nếu không thể phân giải tên máy chủ hệ thống trong DNS, thì bạn có thể sẽ gặp lỗi sau khi chạy lệnh
sudo apache2ctl -t
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
- Để giải quyết vấn đề này, bạn có thể đặt ServerName toàn cầu trong Apache. Sử dụng trình soạn thảo dòng lệnh Nano để tạo file cấu hình mới.
sudo nano /etc/apache2/conf-available/servername.conf
Thêm dòng sau vào file này.ServerName localhost
Lưu và đóng file. Để lưu file trong trình soạn thảo Nano, nhấn Ctrl + O, sau đó nhấn Enter để xác nhận. Để thoát, nhấn Ctrl + X. Sau đó kích hoạt file cấu hình này.sudo a2enconf servername.conf
- Load lại Apache để thay đổi có hiệu lực.
sudo systemctl reload apache2
- Bây giờ, nếu chạy lại lệnh
sudo apache2ctl -t
, bạn sẽ không thấy thông báo lỗi ở trên.
Bước 3: Cài đặt MariaDB Database Server
MariaDB là phiên bản thay thế cho MySQL. Nó được phát triển bởi các thành viên cũ của nhóm MySQL, những người lo ngại rằng Oracle có thể biến MySQL thành một sản phẩm mã nguồn đóng.
Gỡ MariaDB hiện tại trên Ubuntu:
apt-get remove mariadb-server
Ở đây mình sử dụng MariaDB làm máy chủ cơ sở dữ liệu. Để cài đặt bạn sử dụng lệnh sau:
root@ubuntu:~# apt-get install mariadb-server mariadb-client -y
Cài xong bạn kiểm tra dịch vụ cũng như bật khởi động cùng hệ thống.
root@ubuntu:~# systemctl enable mariadb
#Bật khởi động
root@ubuntu:~# systemctl start mariadb
#Khởi động dịch vụ
root@ubuntu:~# systemctl status mariadb
#Kiểm tra dịch vụ
● mariadb.service - MariaDB 10.6.7 database serverLoaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2022-05-13 15:09:50 +07; 4min 28s agoDocs: man:mariadbd(8)https://mariadb.com/kb/en/library/systemd/Main PID: 3220 (mariadbd)Status: "Taking your SQL requests now..."Tasks: 8 (limit: 1034)Memory: 60.1MCPU: 575msCGroup: /system.slice/mariadb.service└─3220 /usr/sbin/mariadbd
Cấu hình MariaDB
Chạy lệnh dưới để bắt đầu và mới đầu thì chưa có password nên nhấn Enter khi nó hỏi password nhé:
root@ubuntu:~# mysql_secure_installation
Switch to unix_socket authentication [Y/n] nChange the root password? [Y/n] y #Đổi mật khẩu root mariaDBNew password: # Nhập mật khẩu vào nhé, nó sẽ không hiển thị ******* nhưng cứ nhập bình thường rồi nhấn EnterRe-enter new password:Remove anonymous users? [Y/n] yDisallow root login remotely? [Y/n] yRemove test database and access to it? [Y/n] yReload privilege tables now? [Y/n] y
Kiểm tra phiên bản MariaDB
root@ubuntu:~# mariadb --version
mariadb Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Bước 4: Cài đặt PHP7.4
- Tại thời điểm viết bài này, PHP7.4 là phiên bản ổn định mới nhất của PHP. Nhập lệnh sau để cài đặt PHP7.4 và một số mô-đun PHP phổ biến.
sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline - Kích hoạt mô-đun Apache php7.4 sau đó khởi động lại Apache Web server.
sudo a2enmod php7.4
sudo systemctl restart apache2
- Kiểm tra thông tin phiên bản PHP.
php --version
php -v
Đầu ra:PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Zend Technologieswith Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
- Để kiểm tra các script PHP với Apache server, bạn cần tạo một file info.php trong thư mục document root.
sudo nano /var/www/html/info.php
Dán code PHP sau vào file.<?php phpinfo(); ?>
- Để lưu file trong trình soạn thảo văn bản Nano, nhấn Ctrl + O, sau đó nhấn Enter để xác nhận. Để thoát, nhấn Ctrl + X. Bây giờ trong thanh địa chỉ của trình duyệt, nhập server-ip-address[copy]/info.php[/copy]. Thay thế server-ip-address bằng IP thực của bạn. Nếu bạn làm theo hướng dẫn này trên máy tính cục bộ , hãy nhập 127.0.0.1/[copy]info.php[/copy] hoặc localhost[copy]/info.php[/copy].Bạn sẽ thấy thông tin PHP của máy chủ. Điều này có nghĩa là các script PHP có thể chạy đúng với Apache Web server.
Cách chạy PHP-FPM với Apache
Về cơ bản có hai cách để chạy code PHP với Apache Web server:
- Mô-đun PHP của Apache
- PHP-FPM
Trong các bước trên, mô-đun Apache PHP7.4 được sử dụng để xử lý code PHP, điều này thường ổn. Nhưng trong một số trường hợp, bạn cần chạy code PHP với PHP-FPM để thay thế. Đây là cách thực hiện.
- Vô hiệu hóa mô-đun Apache PHP7.4.
sudo a2dismod php7.4
- Cài đặt PHP-FPM.
sudo apt install php7.4-fpm
- Kích hoạt mô-đun setenvif và proxy_fcgi.
sudo a2enmod proxy_fcgi setenvif
- Kích hoạt file cấu hình /etc/apache2/conf-available/php7.4-fpm.conf.
sudo a2enconf php7.4-fpm
- Khởi động lại Apache để các thay đổi có hiệu lực.
sudo systemctl restart apache2
Bây giờ, nếu refresh trang info.php trong trình duyệt, bạn sẽ thấy rằng Server API được thay đổi từ Apache 2.0 Handler thành FPM/FastCGI, có nghĩa là Apache Web server sẽ chuyển các yêu cầu PHP đến PHP-FPM.
Server API được thay đổi từ Apache 2.0 Handler thành FPM/FastCGI
Chúc mừng! Bạn đã cài đặt thành công LAMP (Apache, MariaDB và PHP7.4) trên Ubuntu 20.04. Để bảo mật cho máy chủ, bạn nên xóa file info.php ngay bây giờ để tránh những con mắt tò mò.
Chặn truy cập IP VPS tự động redirect về website trên VPS
Theo mặc định thì khi truy cập IP của VPS hoặc khi trỏ một tên miền về VPS mà tên miền này không được cấu hình vhost thì bạn sẽ được redirect tới một website bất kỳ trên VPS, điều này là không nên và để hạn chế điều này các bạn mở file /etc/httpd/conf/httpd.conf và thêm phía trên dòng IncludeOptional conf.d/*.conf rules sau:
<VirtualHost *:80>DocumentRoot /var/www/htmlServerName www.example.com<Directory "/var/www/html">AllowOverride All Options None Require method GET POST OPTIONS</Directory></VirtualHost>
www.example.com cấu hình giống ServerName trong file httpd.conf
Tạo virtual host (vhost) cho website
Virtual Host là file cấu hình trong Apache để cho phép nhiều domain cùng chạy trên một máy chủ. Có một khái niệm khác được đề cập tới trong Nginx cũng có chức năng tương tự như Virtual Host được gọi là Server Block.
Tất cả các file vhost sẽ nằm trong thư mục /etc/httpd/conf.d/. Để tiện quản lý mỗi website nên có một vhost riêng, ví dụ:hoanggiangnam.com.conf
Trong ví dụ này sẽ tạo website hoanggiangnam.com với vhost tương ứng là /etc/httpd/conf.d/hoanggiangnam.com.conf với nội dung sau:
<VirtualHost *:80>ServerName www.hoanggiangnam.comServerAlias hoanggiangnam.comDocumentRoot /home/hoanggiangnam.com/public_htmlErrorLog /home/hoanggiangnam.com/logs/error_logCustomLog /home/hoanggiangnam.com/logs/access_log combined</VirtualHost>
Tiếp theo các bạn cần tạo thư mục chứa mã nguồn website và thư mục chứa file log bằng các lệnh sau
mkdir -p /home/hoanggiangnam.com/public_html
mkdir -p /home/hoanggiangnam.com/logs
chown -R apache:apache /home/hoanggiangnam.com
Khởi động Apache
Tiếp theo các bạn cần tiến hành khởi động Apache bằng cách chạy 2 lệnh sau
systemctl start httpd
systemctl enable httpd
Kiểm tra
Sau khi cấu hình hoàn tất các bạn trỏ tên miền về vps sau đó tạo file /home/hoanggiangnam.com/public_html/index.html và gõ tên miền của bạn vào thanh địa chỉ của trình duyệt để kiểm tra
Bước 5: Cài đặt PhpMyAdmin
phpMyAdmin là một công cụ nguồn mở miễn phí được viết bằng PHP để quản trị MySQL thông qua trình duyệt web. Nó có thể thực hiện nhiều tác vụ như tạo, sửa đổi hoặc xóa bỏ cơ sở dữ liệu, bảng, các trường hoặc bản ghi; thực hiện báo cáo SQL; hoặc quản lý người dùng và cấp phép truy cập database.
5.1. Cài đặt PhpMyAdmin
Để cài đặt PhpMyAdmin các bạn chạy lần lượt các lệnh sau
- Lưu ý: Truy cập phpmyadmin.net để lấy link down phiên bản mới nhất
5.2. Cấu hình PhpMyAdmin
File cấu hình của PhpMyadmin là file config.inc.php. Trước tiên các bạn cần chạy lệnh sau
mv /usr/share/phpMyAdmin/config.sample.inc.php /usr/share/phpMyAdmin/config.inc.php
Tiếp theo mở file /usr/share/phpMyAdmin/config.inc.php và chỉnh sửa các thông số sau
– Tìm
$cfg['blowfish_secret'] = '';
thêm một đoạn ký tự bất kỳ vào giữa cặp nháy đơn. Ví dụ:
$cfg['blowfish_secret'] = 'dsa123e12rwDSADs1few12tr3ewg3s2df3sAD';
– Tiếp theo thêm vào cuối file doạn code sau
$cfg['TempDir'] = '/usr/share/phpMyAdmin/tmp/';
Sau đó các bạn cần tạo thư mục tmp cho PhpMyAdmin
mkdir -p /usr/share/phpMyAdmin/tmp
chown -R apache:apache /usr/share/phpMyAdmin/tmp
5.3. Cấu hình vhost cho PhpMyAdmin
Để có thể truy cập được PhpMyAdmin các bạn sẽ cần tại vhost cho nó. Tạo file /etc/httpd/conf.d/phpmyadmin.conf với nội dung sau
Alias /pma /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin<Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> <RequireAll> Require all granted </RequireAll> </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from All Allow from ::1 </IfModule></Directory><Directory /usr/share/phpMyAdmin/log/> Order Deny,Allow Deny from All Allow from None</Directory><Directory /usr/share/phpMyAdmin/libraries/> Order Deny,Allow Deny from All Allow from None</Directory><Directory /usr/share/phpMyAdmin/templates/> Order Deny,Allow Deny from All Allow from None</Directory><Directory /usr/share/phpMyAdmin/tmp/> Order Deny,Allow Deny from All Allow from None</Directory>
Khởi động lại apache để load cấu hình
systemctl restart httpd
Done.