Cài LAMP + VirtualHost trên CentOS 7 – PHP 7.4 – MariaDB 10.4

1. Bước 1: Cài đặt Apache và cấu hình cơ bản
1.0 Swap

Hướng dẫn tạo Swap ( trên CentOS và Ubuntu )

1.1. Tắt Selinux
Để tắt Selinux các bạn chạy lệnh sau

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0

1.2. Cài đặt Apache
Để cài đặt Apache trên centOS các bạn chạy các lệnh sau

yum -y install epel-release
yum -y update
yum install zip -y
yum install nano -y
yum install unzip -y
yum install gzip -y
yum install wget -y
yum -y install httpd

Nếu bạn sử dụng Firewalld thì bạn sẽ cần mở port để có thể truy cập website

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Để cấu hình Apache các bạn mở file /etc/httpd/conf/httpd.conf
Dưới đây là các thông số cần sửa

#ServerName www.example.com:80
DirectoryIndex index.html

Các bạn sửa lại thành như sau

ServerName www.example.com:80
DirectoryIndex index.html index.htm index.php

Thay www.example.combằng tên miền bất kỳ. Tiếp theo các bạn thêm 2 rules sau phía dưới dòng Listen 80

ServerTokens Prod
KeepAlive On
ServerSignature Off

1613610992565.png

1.4. Bật Userdir
Mặc định thư mục chứa code sẽ nằm trong /var/www/html, với chức năng userdir cho phép di chuyển thư mục chứa code sang vị trí khác đồng thời dễ dàng quản lý vhost theo từng user.

Để bật Userdir các bạn mở file /etc/httpd/conf.d/userdir.conf. Tại đây các bạn cần sửa các rules sau

UserDir disabled
#UserDir public_html

Sửa lại thành như sau

#UserDir disabled
UserDir public_html

1613611008537.png

Tiếp theo các bạn tìm đoạn rule sau

<Directory "/home/*/public_html">

AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
Sửa nó lại thành như sau
<Directory "/home/*/public_html">
AllowOverride All
Options None
Require method GET POST OPTIONS
</Directory>

1613611021061.png

1.5. 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

1613611034553.png

Truy cập IP_VPS để kiểm tra.

# nano /var/www/html/index.html — Đổi index trang chủ của IP_VPS

# sudo systemctl restart httpd

1.6. 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.

================================================= thêm domains-cua-ban.com
# nano /etc/httpd/conf.d/domains-cua-ban.com.conf

<VirtualHost *:80>
ServerName www.domains-cua-ban.com
ServerAlias domains-cua-ban.com
DocumentRoot /home/domains-cua-ban.com/public_html
ErrorLog /home/domains-cua-ban.com/logs/error_log
CustomLog /home/domains-cua-ban.com/logs/access_log combined
</VirtualHost>

# mkdir -p /home/domains-cua-ban.com/public_html
# mkdir -p /home/domains-cua-ban.com/logs
# chown -R apache:apache /home/domains-cua-ban.com

# systemctl start httpd
# systemctl enable httpd
# systemctl restart httpd

# nano /home/domains-cua-ban.com/public_html/index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>This is domains-cua-ban.com</title>
</head>
<body>
<p><center>This is domains-cua-ban.com</center></p>
</body>
</html>

# systemctl restart httpd

=================================================

################################################ tạo trang mới cũng thêm giống vầy
# nano /etc/httpd/conf.d/domaincanthem.com.conf

<VirtualHost *:80>
ServerName www.domaincanthem.com
ServerAlias domaincanthem.com
DocumentRoot /home/domaincanthem.com/public_html
ErrorLog /home/domaincanthem.com/logs/error_log
CustomLog /home/domaincanthem.com/logs/access_log combined
</VirtualHost>

# mkdir -p /home/domaincanthem.com/public_html
# mkdir -p /home/domaincanthem.com/logs
# chown -R apache:apache /home/domaincanthem.com

# systemctl start httpd
# systemctl enable httpd
# systemctl restart httpd

# nano /home/domaincanthem.com/public_html/index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>This is domaincanthem.com</title>
</head>
<body>
<p><center>This is domaincanthem.com</center></p>
</body>
</html>

# systemctl restart httpd

################################################

1.7. Cài SSL

Bước 2: Cài đặt MariaDB
2.1. Tạo repo cài đặt MariaDB 10
Các bạn tạo file /etc/yum.repos.d/mariadb.repo với nội dung sau

# nano /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4.13/rhel7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Lưu ý: Có thể kiểm tra phiên bản MariaDB tại đây: http://yum.mariadb.org/
2.2. Cài đặt MariaDB
Để cài đặt MariaDB các bạn chạy lệnh sau

# yum install MariaDB-server MariaDB-client -y

2.3. Đặt mật khẩu root
Sau khi cài đặt MariaDB các bạn tiến hành đặt mật khẩu root bằng cách chạy 2 lệnh sau

# systemctl enable mariadb
# systemctl start mariadb
# mysql_secure_installation

Mã:
Enter current password for root (enter for none): Nhấn phím Enter
Switch to unix_socket authentication [Y/n]: n
Change the root password? [Y/n]: Y
New password: Nhập password root các bạn muốn tạo
Re-enter new password: Nhập lại password root
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

3. Bước 3: Cài đặt PHP-FPM và các Module cần thiết
3.1. Cài đặt PHP-FPM

Để cài đặt PHP-FPM các bạn chạy các lệnh sau

# yum -y install yum-utils
— CentOS 6
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

— CentOS 7
# rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm— release-7 là centos7 nha
# yum -y update

# yum-config-manager –enable remi-php56 — thay php56 lại bản muốn cài: php56 .. php74

# yum -y install php php-fpm php-ldap php-zip php-embedded php-cli php-mysql php-common php-gd php-xml php-mbstring php-mcrypt php-pdo php-soap php-json php-simplexml php-process php-curl php-bcmath php-snmp php-pspell php-gmp php-intl php-imap perl-LWP-Protocol-https php-pear-Net-SMTP php-enchant php-pear php-devel php-zlib php-xmlrpc php-tidy php-mysqlnd php-opcache php-cli php-pecl-zip unzip gcc

3.2. Cấu hình php cơ bản
Tất cả cấu hình php cần thiết sẽ nằm trong file /etc/php.ini. Một số thông số cơ bản bạn có thể sửa như sau

;date.timezone =
expose_php = On
short_open_tag = Off
;max_input_vars = 1000

disable_functions =

Các bạn sửa lại thành như sau:

date.timezone = Asia/Ho_Chi_Minh
expose_php = Off
short_open_tag = On
max_input_vars = 3000

disable_functions = exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname

— Nếu lười config thì đổi tên file thành php.ini.bak rồi tải file này về chép vào: Tải xuống file php.ini

3.3. Cấu hình chạy PHP-FPM
Bạn mở file /etc/httpd/conf.d/php.conf
tìm dòng: SetHandler application/x-httpd-php
sửa thành: SetHandler “proxy:fcgi://127.0.0.1:9000”

1613611110404.png

Tiếp theo khởi động lại apache để load lại config

# systemctl restart httpd

3.4. Khởi động PHP-FPM
Sau khi hoàn tất cấu hình các bạn chạy 2 lệnh sau để khởi động PHP-FPM

# systemctl start php-fpm
# systemctl enable php-fpm

3.5. Kiểm tra
Để kiểm tra xem PHP-FPM đã hoạt động hay chưa các bạn tạo file /home/domain-cua-ban.com/public_html/info.php với nội dung sau:

# nano /home/domain-cua-ban.com/public_html/info.php

<?php
    phpinfo();
?>

Tiếp theo truy cập file info.php trên trình duyệt để kiểm tra

1613611261974.png

4. Bước 4: 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.

4.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

Nếu xài php5.6 thì buộc cài phpMyAdmin 4.9.7: (Tương thích PHP 5.5 đến 7.4 và MySQL 5.5)
# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.7/phpMyAdmin-4.9.7-all-languages.zip

Nếu xài php trên 7.1 thì cài bản mới nhất tại phpmyadmin.net
# wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip
# unzip phpMyAdmin-5.0.4-all-languages.zip
# mv phpMyAdmin-5.0.4-all-languages phpMyAdmin
# rm -rf phpMyAdmin-5.0.4-all-languages.zip
# rm -rf /usr/share/phpMyAdmin/setup

4.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’] = ‘G5f58DSADs1few2t2df3sAD’;

– 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

4.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 dưới:

# nano /etc/httpd/conf.d/phpmyadmin.conf

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

4.4. Kích hoạt Google reCAPTCHA
Để kích hoạt Google reCAPTCHA trước tiên các bạn cần đăng ký một API V3 tại link sau: https://www.google.com/recaptcha/intro/v3.html

1613611305955.png

 

1613611313838.png

 

1613611321486.png

Sau khi đăng ký thành công bạn sẽ được cung cấp SITE KEYSECRET KEY. Tiếp theo các bạn mở file /usr/share/phpMyAdmin/config.inc.php và thêm 2 dòng sau vào cuối file

# nano /usr/share/phpMyAdmin/config.inc.php

$cfg[‘CaptchaLoginPublicKey’] = ‘SITE KEY’;
$cfg[‘CaptchaLoginPrivateKey’] = ‘SECRET KEY’;

Thay thế SITE KEYSECRET KEY của bạn vào, sau đó truy cập ip-vps/phpmyadmin để kiểm tra

4.5. Kiểm tra
Tiếp theo các bạn truy cập ip-vps/pma hoặc tên-miền/pma để kiểm tra

1613611347297.png

4.6. Cách Nâng cấp PHP trong LAMP / Apache

Nếu bạn đang xài php5.6 giờ muốn nâng lên 7.3 thì làm như dưới
Cài đặt phiên bản mới nhất của remi repository

Đầu tiên bạn hãy tải về công cụ quản lý cấu hình yum:
# yum install yum-utils

— CentOS 6
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

— CentOS 7
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Kích hoạt remi repository cho phiên bản PHP bạn muốn nâng cấp lên. Ví dụ PHP 7.3.

# yum-config-manager –enable remi-php73

Kiểm tra phiên bản PHP bạn đang sử dụng với lệnh:

# php -v

và tắt php repository tương ứng này đi vì sử dụng PHP 7.3 rồi! Ví dụ server mình đang xài PHP 5.6.40 (thay số tương ứng vào nha: php55 php56 php70 php71 php72 php73)

# yum-config-manager –disable remi-php56

Kiểm tra lại danh sách repository một lần nữa, bạn sẽ thấy dòng có remi-php56 được disabled và remi-php73 đã enabled:

# yum repolist all

1613611363616.png

Sao lưu lại cấu hình PHP hiện tại:
# cp /etc/php-fpm.conf /etc/php-fpm.conf.bk
# cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bk

Update PHP lên phiên bản mới nhất 7.3 bằng lệnh:

# yum update php-fpm -y

Khôi phục lại cấu hình PHP hiện tại:

# cp /etc/php-fpm.conf.bk /etc/php-fpm.conf
# cp /etc/php-fpm.d/www.conf.bk /etc/php-fpm.d/www.conf

Xong rồi đó, kiểm tra lại phiên bản PHP với lệnh
# php -v

================== Một số lệnh cơ bản như tạo database dataname username
mysql -u root [email protected]— Đăng nhập MySQL
create database dataname; — Tạo database
create user ‘username‘@’localhost’ identified by ‘[email protected]‘; — Tạo và thiết lập quyền cho user
grant all on dataname.* to username@localhost; — Thiết lập tất cả quyền cho user

Bài viết này sẽ hướng dẫn tạo database và user mysql bằng lệnh terminal.

Đăng nhập MySQL
mysql -u root -p

Tạo database
create database dbname;

Tạo và thiết lập quyền cho user
create user ‘username’@’localhost’ identified by ‘password’;

Để thay đổi password user
set password for ‘username’@’localhost’ = password(‘password’);

Thiết lập tất cả quyền cho user
grant all on dbname.* to [email protected];

Nếu bạn muốn giới hạn quyền cho user thì dùng dòng lệnh sau
grant SELECT on dbname.* to [email protected]; // SELECT là quyền

Danh sách các quyền bạn có thể thiết lập cho user
ALL
ALTER
CREATE VIEW
CREATE
DELETE
DROP
GRANT OPTION
INDEX
INSERT
SELECT
SHOW VIEW
TRIGGER
UPDATE

Reload all the privileges
FLUSH PRIVILEGES;

Thoát
exit
================================

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

*