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

I.Chuẩn bị

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

Tắt selinux ,sửa file selinux

# nano /etc/sysconfig/selinux 

Sửa SELINUX=disabled

# reboot để khởi động lại máy

 

 

II.Tiến hành 

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

# yum install httpd -y

khởi động service httpd 

# service httpd start

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

# chkconfig httpd on

Mở cổng 80 và 3306 iptables 

# nano /etc/sysconfig/iptables

Và thêm vào 2 dòng

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

 


khởi động lại iptables

# service iptables restart

Có thể bạn sẽ gặp lỗi này không sao cả 

[root@nguyenvietduc yum.repos.d]# service httpd start
Starting httpd: httpd: Could not reliably determine the server’s fully qualified                                                                                         domain name, using 107.189.160.9 for ServerName
                                                           [  OK  ]

Sửa lỗi bằng cách sửa file httpd.conf

# nano /etc/httpd/conf/httpd.conf

Tìm dòng sau 

#ServerName www.example.com:80

Bỏ dấu # và sửa thành

ServerName *:80

khởi động lại service httpd 

# service httpd restart

 

kiểm tra xem httpd hoạt động không ,truy cập vào ip 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

# service httpd restart

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 

Lưu ý sao khi kiểm tra xong ta nên xóa file info.php đi ,để tránh ng khác truy cập vào

# 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 

# service httpd restart

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

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

# yum -y install mysql mysql-server

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

# chkconfig mysqld on 

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

# service mysqld start

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

# mysql_secure_installation

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

câu 1 : 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

câu 2 : Set root password? [Y/n]<Đặt mật khẩu gốc> chọn Y và nhập mật khẩu 

câu 3 : Remove anonymous users? [Y/n]<xóa người dùng vô danh> chọn Y

câu 4 : Disallow root login remotely? [Y/n]<Không cho phép đăng nhập root từ xa> chọn Y 

câu 5 : Remove test database and access to it? [Y/n]<xóa cơ sở dữ liệu kiểm tra và truy cập vào nó> chọn Y

câu 6 : Reload privilege tables now? [Y/n]<khởi động lại> Chọn Y

Để đăng nhập vào mysql ta dùng lệnh 

# mysql -u root -p

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

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

Thêm use apache và group apache sở hữu thư mục này
# chown -R apache:apache /home/webdata/maxserver.net

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>
 

Chỉnh sửa file cấu hình của apache

# nano /etc/httpd/conf/httpd.conf

Tìm dòng sau

#NameVirtualHost *:80 (ở dòng 990)

Ta bảo dấu # ở đầu đi để cho tất cả domain có thể truy cập qua port 80

NameVirtualHost *:80

Tạo 1 file đuôi là .conf  trong thư mục conf.d ví dụ như domain.conf 
# nano /etc/httpd/conf.d/maxserver.conf

Có nội dung như sau

<VirtualHost *:80>
ServerAdmin contact@maxserver.net
DocumentRoot /home/webdata/maxserver.net/public_html
ServerName www.maxserver.net
ServerAlias maxserver.net
ErrorLog /home/webdata/maxserver.net/log/error.log
</VirtualHost>

Khởi động lại dịch vụ httpd
# service httpd restart

Bước cuối cùng ta trỏ domain về địa chỉ ip , thử truy cập vào domain và ra đc nội dung ta đã tạo là thành công


III.Một số câu lệnh MySQL

Trên CentOS, toàn bộ file database được lưu trong thư mục /var/lib/mysql

 

1.Các thao tác database

Hiển thị toàn bộ databases:
mysql> SHOW DATABASES;

Tạo database:
mysql> CREATE DATABASE <tên cơ sở dữ liệu>;

Sử dụng một database:
mysql> USE <tên cơ sở dữ liệu>;

Xóa một database:
mysql> DROP DATABASE <tên cơ sở dữ liệu>;

2.Quản lý tài khoản và phân quyền 

Hiển thị toàn bộ users:
mysql> SELECT * FROM mysql.user;

Xóa null user:
mysql> DELETE FROM mysql.user WHERE user = ’ ’;

Xóa tất cả user mà không phải root:
mysql> DELETE FROM mysql.user WHERE NOT (host="localhost" AND user="root");

Đổi tên tài khoản root (giúp bảo mật):
mysql> UPDATE mysql.user SET user="mydbadmin" WHERE user="root";

Gán full quyền cho một user mới:
mysql> GRANT ALL PRIVILEGES ON *.* TO ’username’@’localhost’ IDENTIFIED BY ’mypass’ WITH GRANT OPTION;

Phân quyền chi tiết cho một user mới:
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON mydatabase.* TO ’username’@’localhost’ IDENTIFIED BY ’mypass’;

Gán full quyền cho một user mới trên một database nhất định:
mysql> GRANT ALL PRIVILEGES ON mydatabase.* TO ’username’@’localhost’ IDENTIFIED BY ’mypass’ WITH GRANT OPTION;

Thay đổi mật khẩu user:
mysql> UPDATE mysql.user SET password=PASSWORD("newpass") WHERE User=’username’;

Xóa user:
mysql> DELETE FROM mysql.user WHERE user="username";

 

3.Các thao tác sao lưu và phục hồi

Sao lưu toàn bộ database bằng lệnh (chú ý không có khoảng trắng giữa -p và mật khẩu):
mysqldump -u root -pmypass --all-databases > alldatabases.sql

Sao lưu một database bất kỳ:
mysqldump -u username -pmypass databasename > database.sql

Khôi phục toàn bộ database bằng lệnh:
mysql -u username -pmypass < alldatabases.sql (no space in between -p and mypass)

Khôi phục một database bất kỳ:
mysql -u username -pmypass databasename < database.sql

Chỉ sao lưu cấu trúc database:
mysqldump --no-data --databases databasename > structurebackup.sql

Chỉ sao lưu cấu trúc nhiều database:
mysqldump --no-data --databases databasename1 databasename2 databasename3 > structurebackup.sql

Sao lưu một số table nhất định:
mysqldump --add-drop-table -u username -pmypass databasename table_1 table_2 > databasebackup.sql