Hướng dẫn cài đặt LAMP (APACHE-PHP-MARIADB) và tạo VirtualHost trên centos 7

I.Chuẩn bị

Cài đặt kho epel và remi ,Tham khảo link sau Click Here

Cập nhật hệ thống 

# yum update -y

II.Tiến hành

Bước 1 : Cài đặt httpd

# yum install httpd -y

khởi động service httpd 

# systemctl start httpd.service

Để apache khởi động cùng hệ thống

# systemctl enable httpd.service

Trong CentOS 7.0 sử dụng Firewall-cmd, vì vậy ta sẽ tùy chỉnh nó bằng lệnh như sau.

Ví dụ ta mở công 80 và 3306

# firewall-cmd --permanent --zone=public --add-port=80/tcp

# firewall-cmd --permanent --zone=public --add-port=3306/tcp

Khởi động lại filewall 

# firewall-cmd --reload 

Kiểm tra xem httpd hoạt động không ,truy cập vào http://ip-vps của bạn nếu được hình như sau là thành công

Bước 2 : cài đặt php

Dùng lệnh yum để cài php

# yum install -y php 

Các gốc tài liệu của trang web mặc định là / var / www / html. Bây giờ chúng ta sẽ tạo ra một file PHP nhỏ <info.php> trong thư mục đó và gọi nó trong một trình duyệt. Các tập tin sẽ hiển thị nhiều chi tiết hữu ích về cài đặt PHP của chúng tôi, chẳng hạn như các phiên bản PHP được cài đặt.

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

Trong file info.php ta có nội dung sau 

<?php phpinfo(); ?>

Ta reset lại httpd

# systemctl restart httpd.service

Truy cập địa chỉ ip của bạn http://<ip server>/info.php nếu có hình sau là thành công 

*Chú ý : ta nên xóa file info.php sau khi test xong

# rm -rf /var/www/html/info.php

Để chuẩn bị cài MySQL ta cần cài thêm một số gói php như sau

# yum -y install php-mysql

# yum -y install php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel

# yum -y install php-pecl-apc

Restart lại apache 

# systemctl restart httpd.service

Bước 3 : cài đặt MariaDB

Dùng lệnh yum để cài đặt

# yum -y install mariadb-server mariadb

Cho mariadb khởi động cùng hệ thống

#  systemctl enable mariadb.service

Khởi động dịch vụ mariadb

# systemctl start mariadb.service

Xem trang thái của mariadb

# systemctl status mariadb

Đặt mật khẩu cho tài khoản root MySQL:

# mysql_secure_installation

Sẽ hiện ra các câu sau

[root@maxserver]# mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we’ll need the current
password for the root user.  If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):<Nhập mật khẩu hiện tại cho root (nhập cho không có)> : cứ enter là xong
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y<Đặt mật khẩu gốc> chọn Y và nhập mật khẩu 
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y<xóa người dùng vô danh> chọn Y
 ... Success!

Normally, root should only be allowed to connect from ’localhost’.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y<Không cho phép đăng nhập root từ xa> chọn Y 
 ... Success!

By default, MariaDB comes with a database named ’test’ that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y<xóa cơ sở dữ liệu kiểm tra và truy cập vào nó> chọn Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y<khởi động lại> Chọn Y
 ... Success!

Cleaning up...

All done!  If you’ve completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
 

Bước 4: Tạo virtualhost 

Tạo 1 thư mục public_html riêng để chứa các file của web, ta lên phân biệt giữa các thư mục bằng tên domain

Ví dụ ở đây ta có domain là maxserver.net

# mkdir -p /home/webdata/maxserver.net/public_html

Tạo 1 file để ghi lỗi của web có tên là error.log

# mkdir /home/webdata/maxserver.net/log

# touch /home/webdata/maxserver.net/log/error.log

Tạo 1 file với 1 nội dung như sau để test xem có virtualhost có hoạt động không

# nano /home/webdata/maxserver.net/public_html/index.html

Nội dung như sau:

<html>
  <head>
    <title>maxserver</title>
  </head>
  <body>
    <h1>Chuc mot ngay tot lanh!</h1>
  </body>
</html>

Thêm use apache và group apache sở hữu thư mục này

# chown -R apache:apache /home/webdata/

Đừng quên phân quyền cho thư mục

# chmod -R 755 /home/webdata/

Tạo file cấu hình riêng cho virtualhost 

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

Có nội dung như sau

<VirtualHost *:80>

    ServerName www.maxserver.net
    ServerAlias maxserver.net
    DocumentRoot /home/webdata/maxserver.net/public_html/
    ErrorLog /home/webdata/maxserver.net/log/error.log
    CustomLog /home/webdata/maxserver.net/log/requests.log combined

    <Directory "/home/webdata/maxserver.net/public_html/">
                      Options Indexes FollowSymLinks
                      AllowOverride All
                      Order allow,deny
                      Allow from all
                      Require all granted
     </Directory>
</VirtualHost>

Mội số bạn thường gặp lỗi Error AH01630: client denied by server configuration

Điều này là do CentOS 7 sử dụng Apache 2.4 và nó cần thêm dòng Require all granted  

Khởi động lại apache là ok

# systemctl restart httpd

Bây giờ các bạn truy cập vào domain và xem kết quả