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

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 Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-04-11 11:31:31 CST; 2s ago
Docs: 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.4M
CGroup: /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.
    Chi tiết các bước cài đặt LAMP trên Ubuntu 20.04 LTS (1)
    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 server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-05-13 15:09:50 +07; 4min 28s ago
Docs: 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.1M
CPU: 575ms
CGroup: /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] n
Change the root password? [Y/n] y #Đổi mật khẩu root mariaDB
New 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 Enter
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload 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 Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with 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.
    Chi tiết các bước cài đặt LAMP trên Ubuntu 20.04 LTS (4)

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 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.
    Chi tiết các bước cài đặt LAMP trên Ubuntu 20.04 LTS (5)
    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/html
ServerName 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

LEMP trên Centos 7

 

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.com
ServerAlias hoanggiangnam.com
DocumentRoot /home/hoanggiangnam.com/public_html
ErrorLog /home/hoanggiangnam.com/logs/error_log
CustomLog /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

cd /usr/share
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip
unzip phpMyAdmin5.0.2alllanguages.zip
mv phpMyAdmin5.0.2alllanguages phpMyAdmin
rm rf phpMyAdmin5.0.2alllanguages.zip
rm rf /usr/share/phpMyAdmin/setup
  • 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ụ:

– 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

 

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/phpMyAdmin
Alias /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.

Leave a Reply