Hướng dẫn cài LAMP trên Centos

Nguồn : ThachPham

I. Webserver là gì?

Webserver là một dịch vụ (service) hỗ trợ bạn hiển thị dữ liệu trên VPS đến người dùng thông qua cổng mặc định là 80. Một webserver có thể tạo ra nhiều VirtualHost, và mỗi VirtualHost có thể mang 1 IP và 1 domain khác nhau.
Nói dễ hiểu hơn, VirtualHost chính là cách mà bạn thêm 1 domain khác vào VPS để chạy web trên đó.

II. Cách cài đặt Apache Webserver

Trước khi cài, mình xin nhắc lại làbạn nên cài trên CentOS 6.5nếu bạn làm theo hướng dẫn này, CentOS 7.0 đã thay đổi rất nhiều nên mình sẽ có 1 tutorial riêng cho nó.  
Hãy đăng nhập vào SSH và tiến hànhtắt SELinuxđi bằng cách mở file/etc/sysconfig/selinuxvà tìm SELINUX=rồi sửa thành như dưới đây:     
01
SELINUX = disabled
Sau đó gõ lệnhrebootđể khởi động lại máy chủ.  
Đăng nhập lại SSH và bắt đầu cài Apache với lệnhyumvới hành động làinstallvà cài phần mềm tên là làhttpd. Đây nghĩa là phần mềm webserver Apache.    
01
sudo yum  install httpd
Nếu nó hỏi như thế này thì ấny rồi enter nhé. 
01
02
03
Tổng kích thước download: 1.1 M
Kích thước lắp đặt: 3.4 M
Đây có phải là ok [y / N]:
Sau khi nó hiện ra chữ Complete! tức là đã cài thành công.
Tiêp theo là tiến hành khởi động service httpd mà mình vừa cài đặt.
01
sudo dịch vụ httpd start
if it may hiện "httpd: Ông có thể không đáng tin cậy xác định tên miền đầy đủ của máy chủ, sử dụng 127.0.0.1 cho máy chủ" thì kệ it, chẳng qua is làm bạn chưa trỏ IP về tên máy thôi. Ở cuối bài mình có chỉ bạn cách đổi ServerName for it from a báo nữa.
Một vài nhà cung cấp có thể sẽ chặn cổng 80 ở mặc định, bạn có thể nhập thêm 3 lệnh sau để mở cổng 80 ra nếu bị khóa:
01
02
03
iptables -A VÀO -m trạng tcp -m --state NEW -p tcp --dport 80 -j ACCEPT
iptables dịch vụ lưu
iptables dịch vụ khởi động lại
Bây giờ bạn hãy thử truy cập vào website với địa chỉ là IP của VPS xem, nếu nó hiện ra trang Welcome của Apache là thành công.
cai-apache-webserver-hoàn thiện-2
Nhưng có một vấn đề là các service bạn cài vào sẽ không tự động khởi động nếu bạn reboot lại VPS, nên bạn sẽ cần gõ thêm lệnh này để đưa service httpd vào danh sách tự động khởi động khi reboot.
01
sudo chkconfig httpd trên
Mặc định các dữ liệu hiển thị ra website sẽ nằm ở thư mục/var/www. Bạn có thể truy cập vào đó để upload file bất kỳ lên rồi truy cập bằng đường dẫn là IP VPS của bạn. 

Bật mod_rewrite

Để sử dụng tính năng Permalink trong WordPress cũng như các chức năng rewrite đường dẫn khác, hãy mở file /etc/httpd/conf/httpd.conf và tìm:
01
02
03
04
05
06
07
# Đầu tiên, chúng ta cấu hình "mặc định" là một tập hợp rất hạn chế của
# Tính năng.
#
<Directory />
Tùy chọn FollowSymLinks
AllowOverride None
</ Directory>
Thay đoạn AllowOverride None trong đó thành AllowOverride All.
Cuối cùng là gõservice httpd restartđể khởi động lại Apache.  

III. Cách tạo VirtualHost cho Apache

Bạn làm lại bước này nếu cần thêm một domain khác vào VPS.
Ở trên chỉ là bước cài Apache và mình không khuyến khích bạn sử dụng thư mục /var/www để upload website lên, mà hãy tạo ra một thư mục mới theo ý của bạn rồi thêm domain cần sử dụng cho thư mục đó, cái này chúng ta sẽ gọi làVirtualHost (Host ảo). 
Để tạo VirtualHost, thì việc đầu tiên là bạn cần phải tạo một thư mục public_html (hoặc bạn cũng có thể ghi là www tùy bạn) trong một thư mục nào đó, ở đây mình khuyến khích các bạn đặt trong/home/webdata/tên-example.com. Chúng ta tiến hành tạo thư mục với lệnh sau: 
01
sudo mkdir -p  / home / webdata / thachpham .dev / public_html
Các bạn nhớ thaythachpham.devthành domain mà bạn muốn thêm vào VPS, tham số-pở đây nghĩa là bạn ép nó tự tạo ra đoạn thư mục trên nếu nó chưa có. Chẳng hạn trong thư mục/homecủa mình chưa cówebdata/nên chúng ta sẽ sử dụng tham số-pđể ép nó tạo ra thư mụcwebdata/         
Bạn có thể kiểm tra xem nó đã tạo thành công chưa bằng lệnh ls -a /home.
Tiếp theo là chúng ta sẽ cho userapachevà groupapachesở hữu thư mục này bởi vì thư mục này đang thuộc quyền sở hữu của user mà bạn tiến hành tạo, thay vì CHMOD cho an toàn hơn.    
01
sudo chown -R apache: apache  / home / webdata / thachpham .dev
Nếu bạn không cấp quyền thư mục này cho user apache thì khi cài WordPress, nó không thể tự động sửa file (chẳng hạn như tự thêm nội dung vào file .htaccess khicài plugin) và nó sẽ bắt bạn nhập tài khoản FTP khi cài Plugin/Theme. 
Bạn có thể kiểm tra quyền sở hữu của thư mục này với lệnh:
01
ls-al  / home / webdata / thachpham .dev
Kế tiếp là hãy tạo một fileindex.htmltrong thư mục /home/webdata/thachpham.dev/public_html để chút nữa ta sẽ kiểm tra, với nội dung như sau:  
01
sudo vi / home / webdata / thachpham .dev / public_html / index .html
01
02
03
04
05
06
07
08
<Html>
  <Đầu>
    <Title> Chào mừng bạn </ title>
  </ Đầu>
  <Cơ thể>
    <H1> Ban da cai VirtualHost thanh cong! </ H1>
  </ thể>
</ Html>
Kế tiếp, hãy mở file/etc/httpd/conf/httpd.confvà tìm đoạn dưới đây rồi xóa dấu # đi (bước này chỉ làm 1 lần, lần thêm domain sau khỏi cần làm).  
01
#NameVirtualHost *:80
Đoạn này nằm gần cuối file.
Sau đó bạn vào thư mục /etc/httpd/conf.d và tạo thêm một file.conftên bất kỳ. Ví dụ mình muốn thêm domain thachpham.dev vào VPS thì sẽ tạo file tên làthachpham.dev.confcho dễ phân biệt. Trong nội dung, mình chèn đoạn sau vào:    
<VirtualHost *: 80> 
ServerAdmin contact@thachpham.com 
DocumentRoot /home/webdata/thachpham.dev/public_html 
ServerName www.thachpham.dev 
ServerAlias ​​thachpham.dev 
ErrorLog logs / error_log 
thachpham.dev-</ VirtualHost>
Mình xin giải thích các thông số ở đoạn trên như sau:
  • VirtualHost *:80 – Nghĩa là cái domain này sẽ sử dụng port 80, bạn thiết lập giống với port của Apache nhé.
  • ServerAdmin – Email của người quản trị.
  • DocumentRoot – Thư mục gốc của domain này, chúng ta đã tạo ra nó ở đầu bài.
  • Tên máy chủ  - domain of VirtualHost.
  • ServerAlias – Thêm tùy chọn để truy cập vào domain không cần www.
  • ErrorLog – Đường dẫn file log báo lỗi webserver của domain này. Bạn có thể bỏ dấu # để dùng chức năng này nhằm theo dõi lỗi, và nhớ tạo 1 file riêng để nó lưu lại lỗi rồi nhập đường dẫn của file log đó vào.
Trường hợp VPS bạn có nhiều IP và bạn muốn VirtualHost này sử dụng 1 IP riêng thì thêm đoạnListen 123.456.789 ở ngay trênServerAdmin
Sau này bạn muốn thêm nhiều VirtualHost thì cứ copy cái đoạn trên rồi sửa lại thôi là được. Bây giờ chúng ta Save file và thoát ra.
Ok, hãy khởi động lại Apache để nó cập nhật thay đổi nhé.
01
sudo dịch vụ httpd restart
01
02
Dừng httpd: [FAILED]
Bắt đầu từ httpd: [OK]
Phần stopping nó bị FAILED thì kệ nó, chẳng qua là do chúng ta restart bất chợt thôi, gõ restart lại lần nữa là hết.
Cuối cùng là hãy trỏ domain về IP của VPS hoặc IP mà bạn đã thiết lập cho VirtualHost nhé, nếu truy cập vào domain đó mà nó ra file Welcome mà chúng ta đã tạo ở trên thì thành công.
apache-VirtualHost-thành công

Hỏi/Đáp khi tạo VirtualHost

Tại sao tôi thêm 2 domain vào nhưng cả 2 lại trỏ về 1 domain?
Lý do là bạn chưa tiến hành gõ lệnh chown -R apache:apache /home/webdata/example.com/ cho cả 2 hoặc chỉ gõ cho 1 domain. Tốt nhất mỗi khi thêm 1 domain vào, hãy gõ lệnhchown -R apache:apache /home/webdata
Khi thêm domain vào, tôi trỏ domain về VPS thế nào?
Hãy trỏ bằng cách sử dụng các dịch vụ quản lý DNS trung gian nhưCloudFlarehoặc trình quản lý các record DNS của nhà cung cấp domain rồi trỏ record A về IP của VPS.  

Tối ưu Apache để tiết kiệm CPU

Mặc định có thể bạn sẽ thấy Apache nó “ăn” hơi bị nhiều CPU do sử dụng quá nhiều process. Để thiết lập lại số lượng processes mà Apache được phép tạo ra, hãy mở file /etc/httpd/conf/httpd.conf lên và tìm đoạn:
01
02
03
04
05
06
07
08
<IfModule prefork.c>
Bắt đầu Server 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</ IfModule>
Ở đoạn trên, bạn sửa lại các phần thành những giá trị sau:
  • Bắt đầu  máy chủ: 1
  • MinSpareServers: 1 
  • MaxSpareServers: 5 
  • MaxRequestsPerChild: 10000 
Sau này nếu cần thêm VirtualHost, bạn chỉ cần copy file thachpham.dev.conf kia, đổi tên thành domain cần thêm cũng như sửa file để thay thachpham.dev thành domain mới của bạn.

I. Cách cài đặt PHP

Cũng như cài đặt các package khác (ở phần 7 chúng ta đã cài package tên httpd để cài Apache Webserver), chúng ta cũng sử dụng lệnh yum với hành động là install cho tên package php php-mysql.
Nhưng, trước khi cài đặt chúng ta cần kiểm tra xem phiên bản PHP hiện tại có trong Yum Package là bao nhiêu, hãy gõ lệnh sudo yum info php và kết quả trả về giống như sau:
[thach@vpscanban ~]$ sudo yum info php
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: centos.hyve.com
* extras: mirror.econdc.com
* updates: centos.mirroring.pulsant.co.uk
* webtatic: uk.repo.webtatic.com
Available Packages
Name : php
Arch : i686
Version : 5.3.3
Release : 27.el6_5.1
Size : 1.1 M
Repo : updates
Summary : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
License : PHP
Description : PHP is an HTML-embedded scripting language. PHP attempts to make
: it easy for developers to write dynamically generated webpages.
: PHP also offers built-in database integration for several
: commercial and non-commercial database management systems, so
: writing a database-enabled webpage with PHP is fairly simple. The
: most common use of PHP coding is probably as a replacement for CGI
: scripts.
:
: The php package contains the module which adds support for the PHP
: language to Apache HTTP Server.

[thach@vpscanban ~]$

Ngay tại phần Version, bạn sẽ thấy phiên bản của nó hiện tại là 5.3.3, tức là PHP 5.3.3. Tuy nhiên theo kinh nghiệm của mình bạn cần nâng cấp lên phiên bản PHP 5.4.x để nó không bị lỗi với 1 số plugin mới hiện nay vì họ sử dụng rất nhiều các chức năng mới trong PHP 5.4 và để sử dụng Opcode Cache nếu bạn muốn.
Để nâng cấp Yum Package, cụ thể là package tên php thì chúng ta sẽ sử dụng một repository (hiểu là kho chứa các bản cập nhật của các package).
Bạn hãy nạp thêm repository này vào:
// Đối với CentOS 32-bits
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

// Đối với CentoS 64-bits
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Kết quả trả về:
warning: remi-release-6.rpm: Header V3 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing... ########################################### [100%]
1:epel-release ########################################### [50%]
2:remi-release ########################################### [100%]

Mấy cái warning chẳng có vấn đề gì cả nên bạn cứ yên tâm nha.
Kế đến là sửa file /etc/yum.repos.d/remi.repo:
sudo vi /etc/yum.repos.d/remi.repo
Tìm:
[remi]
name=Les RPM de remi pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Thay enabled=0 thành enabled=1.
Save và thoát ra.
Ok, bây giờ hãy chạy lại lệnh yum info php để kiểm tra phiên bản, nó sẽ trở thành phiên bản 5.4.33 như dưới:
Available Packages
Name : php
Arch : i686
Version : 5.4.33
Release : 2.el6.remi
Size : 2.7 M
Repo : remi
Summary : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
License : PHP and Zend and BSD
Description : PHP is an HTML-embedded scripting language. PHP attempts to make
: it easy for developers to write dynamically generated web pages.
: PHP also offers built-in database integration for several
: commercial and non-commercial database management systems, so
: writing a database-enabled webpage with PHP is fairly simple. The
: most common use of PHP coding is probably as a replacement for CGI
: scripts.
:
: The php package contains the module (often referred to as mod_php)
: which adds support for the PHP language to Apache HTTP Server.

Okay, tiến hành cài đặt thôi.
sudo yum install php php-mysql php-devel php-gd php-mbstring
Cài xong, hãy gõ lệnh php -v để xem phiên bản PHP đã được cài đặt lên VPS.
[thach@vpscanban ~]$ php -v
PHP 5.4.33 (cli) (built: Sep 20 2014 16:04:53)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Cuối cùng là khởi động lại httpd.
sudo service httpd restart

II. Chạy thử một file PHP

Để xem PHP của bạn chạy có tốt không, cũng như xem các thông tin ở đó. Hãy tạo 1 file tên bất kỳ .php trong thư mục VirtualHost của bạn với nội dung là:
<?php phpinfo(); ?>
Sau đó chạy file này với địa chỉ http://IP-của-VPS/tên-file.php. Kết quả sẽ hiển thị trang thông tin về phiên bản PHP bạn đang có.
vps-php54

III. Cấu hình PHP

File cấu hình của PHP sẽ có tên là php.ini và được lưu tại thư mục /etc. Để chắc chắn nơi chứa file php.ini này, bạn hãy gõ lệnh tìm kiếm tên file dưới đây:
sudo find / -iname php.ini
Lệnh này nghĩa là mình tìm file php.ini trong thư mục / (thư mục gốc).
[thach @ vpscanban ~] $ sudo tìm / -iname php.ini
/etc/php.ini
Thực ra bây giờ bạn chưa cần sửa nó đâu, nhưng nếu sau này khi sử dụng WordPress, bạn bị lỗi không đủ bộ nhớ cho PHP chẳng hạn thì sẽ mở file php.ini này lên để tăng bộ nhớ, và các thiết lập khác. Nói chung bây giờ bạn chưa hiểu lắm thì chỉ cần biết file php.ini nằm ở đâu là được.

 Lời kết

Sau khi đã làm xong phần này thì coi như bạn đã đi được 80% trong tổng số các bước xây dựng một webserver trên VPS. Hãy nhớ dành thời gian xem lại các bài trước nếu có chưa hiểu để nắm vững kiến thức căn bản về Linux hơn nữa nhé.
Ở bài tiếp theo, mình sẽ hướng dẫn bạn cài MySQL Server và thao tác cần thiết về MySQL để bạn tiện quản trị database sau này

I. Cách cài MySQL vào VPS

Cài MySQL cũng rất dễ, chúng ta cũng vẫn sẽ sử dụng Yum package để cài đặt. Bạn chạy lệnh dưới đây để cài MySQL:
01
sudo yum  install mysql-server-và
Sau đó khởi động MySQL (tên service là mysqld):
01
sudo dịch vụ mysqld bắt đầu
Và nó sẽ hiện ra rất nhiều thông tin như thế này:
[thach @ vpscanban ~] $ sudo dịch vụ mysqld start
Khởi tạo cơ sở dữ liệu MySQL: Chú ý: Các máy chủ 'vpscanban' không thể được nhìn lên với resolveip.
Điều này có thể có nghĩa rằng các thư viện libc của bạn không tương thích 100%
với phiên bản MySQL nhị phân này. Các MySQL daemon, mysqld, nên công việc
thường với ngoại lệ là tên máy chủ giải quyết sẽ không làm việc.
Điều này có nghĩa rằng bạn nên sử dụng địa chỉ IP thay vì tên máy
khi xác định đặc quyền MySQL!
Cài đặt hệ thống bảng MySQL ...
được
Điền bảng giúp đỡ ...
được

Để bắt đầu mysqld vào lúc khởi động bạn phải sao chép
hỗ trợ các tập tin / mysql.server đến đúng nơi cho hệ thống của bạn

XIN NHỚ SET A PASSWORD FOR THE gốc USER MySQL!
Để làm như vậy, khởi động máy chủ, sau đó dùng các lệnh sau:

/ usr / bin / mysqladmin -u root password 'mới-password'
/ usr / bin / mysqladmin -u root -h mật khẩu vpscanban 'mới-password'

Hoặc bạn có thể chạy:
/ usr / bin / mysql_secure_installation

mà cũng sẽ cung cấp cho bạn tùy chọn loại bỏ các thử nghiệm
cơ sở dữ liệu và người dùng vô danh tạo ra theo mặc định. Đây là
khuyến khích mạnh mẽ cho các máy chủ sản xuất.

Xem hướng dẫn để được hướng dẫn thêm.

Bạn có thể khởi chạy trình nền MySQL với:
cd / usr; / usr / bin / mysqld_safe &

Bạn có thể kiểm tra các daemon MySQL với mysql-test-run.pl
cd / usr / mysql-kiểm tra; perl mysql-test-run.pl

Xin vui lòng báo cáo bất kỳ vấn đề ở http://bugs.mysql.com/

[ĐƯỢC ]
Bắt đầu mysqld: [OK]

Điều này có nghĩa là chúng ta chỉ mới cài MySQL vào nhưng chưa thiết lập cho nó, vả lại chúng ta còn thiếu một thông tin cực kỳ quan trọng đó là MySQL Root Password. MySQL Root Password là mật khẩu cho database user tên là root để đăng nhập vào MySQL.
Bạn đừng nhầm lẫn giữa root password cho MySQL và root password của VPS, hai cái này hoàn toàn khác nhau.
Để thiết lập, bạn chạy đoạn sau:
01
sudo / usr / bin / mysql_secure_installation
Đầu tiên là nó sẽ hỏi:
Nhập mật khẩu hiện tại cho root (nhập cho không có):
Do bạn chưa thiết lập mật khẩu root cho MySQL nên ấn Enter mà không cần nhập gì cả.
Tiếp tục nó sẽ hỏi bạn muốn thiết lập mật khẩu cho user root hay không, gõ y và enter.
Đặt mật khẩu root? [Y / n] y
Cuối cùng nó sẽ hỏi bạn thêm 4 câu hỏi nữa, cứ ấn Y rồi Enter hết.
Theo mặc định, một cài đặt MySQL có một người dùng vô danh, cho phép bất cứ ai
để đăng nhập vào MySQL mà không cần phải có một tài khoản người dùng tạo ra cho
chúng. Điều này được dự định chỉ để thử nghiệm, và để làm cho việc cài đặt
đi một chút mượt mà hơn. Bạn nên gỡ bỏ chúng trước khi chuyển sang một
môi trường sản xuất.

Xóa người dùng vô danh? [Y / n] y
... Sự thành công!

Thông thường, gốc nên chỉ được phép kết nối từ 'localhost'. Cái này
đảm bảo rằng một người nào đó không thể đoán mật khẩu gốc từ mạng.

Không cho phép đăng nhập root từ xa? [Y / n] y
... Sự thành công!

Theo mặc định, MySQL đi kèm với một cơ sở dữ liệu có tên là 'test' mà bất cứ ai có thể
quyền. Điều này cũng được dự định chỉ để thử nghiệm, và cần được loại bỏ
trước khi chuyển sang một môi trường sản xuất.

Di chuyển cơ sở dữ liệu kiểm tra và truy cập vào nó? [Y / n] y
- Cơ sở dữ liệu thử nghiệm rơi ...
... Sự thành công!
- Loại bỏ các đặc quyền trên cơ sở dữ liệu thử nghiệm ...
... Sự thành công!

Tải lại các bảng đặc quyền sẽ đảm bảo rằng tất cả các thay đổi được thực cho đến nay
sẽ có hiệu lực ngay lập tức.

Nạp lại bảng đặc quyền bây giờ? [Y / n] y
... Sự thành công!

Dọn dẹp...

Tất cả đã được làm xong! Nếu bạn đã hoàn thành tất cả các bước trên, MySQL của bạn
cài đặt bây giờ nên được an toàn.

Nhờ sử dụng MySQL
Ok, hãy khởi động lại MySQL nhé.
01
sudo dịch vụ mysqld restart
Bây giờ bạn đã có một MySQL Server trên VPS và đã có mật khẩu root của MySQL rồi. Hãy thử đăng nhập vào MySQL với lệnh sau:
01
sudo mysql -u -p123456 gốc
Trong đó, root là tên user root và 123456 là mật khẩu root của MySQL mà bạn vừa thiết lập.
Nếu nó hiện ra thế này là thành công:
Phiên bản máy chủ: 5.5.39 MySQL Community Server (GPL) của Remi

Copyright (c) 2000, 2014, Oracle và / hoặc chi nhánh của nó. Tất cả quyền được bảo lưu.

Oracle là một nhãn hiệu đã đăng ký của Oracle Corporation và / hoặc của nó
các chi nhánh. Tên khác có thể là thương hiệu của mình
chủ sở hữu.

Gõ 'giúp đỡ;' hoặc '\ h' để được giúp đỡ. Loại '\ c' để xóa các tuyên bố đầu vào hiện tại.

mysql>
Gõ exit; để thoát ra.

II. Tạo database và database user trên VPS

Chắc các bạn cũng đã biết là khi cài WordPress trên Shared Host, chúng ta phải tạo cho nó một cái database đúng không? Ở đây cũng vậy, chúng ta cũng phải cần tạo ra một database và một database user để kết nối vào WordPress để lưu trữ dữ liệu.
Mặc dù bạn có thể sử dụng database user là root với mật khẩu root của MySQL nhưng việc này quá nguy hiểm nếu bạn có nhiều database khác nhau, vì hacker chỉ cần biết mật khẩu root của MySQL là có thể chiếm quyền quản trị toàn bộ databases có trên VPS.
Do đó, mình khuyến khích bạn sử dụng một database user riêng cho từng database để an toàn.

Đăng nhập vào MySQL

Để làm việc với MySQL chúng ta đều phải cần đăng nhập vào MySQL Server với lệnh mysql.
01
mysql -u root -p123456
Có thể bạn không cần viết thẳng cái mật khẩu ra đằng sau -p vì bạn có thể nhập nó sau khi thực hiện lệnh đăng nhập.
Lưu ý thêm một điều là trong MySQL bạn sẽ viết bằng lệnh SQL, nên mỗi câu lệnh bạn phải kết thúc bằng dấu hai chấm (;).

2.1) Lệnh tạo database

Để tạo database, chúng ta sử dụng lệnh sau trong MySQL Server:
01
CREATE DATABASE dulieu1;
Trong đó, dulieu1 là tên database mà mình cần tạo. Thông báo thực hiện thành công sẽ có dạng này:
01
Query OK, 1 hàng bị ảnh hưởng (0.00 sec
Để chắc chắn là bạn đã có database vừa tạo trên server, hãy gõ lệnh:
01
HIỂN THỊ CƠ SỞ DỮ LIỆU;
Kết quả trả về:
01
02
03
04
05
06
07
08
09
+ -------------------- +
| Cơ sở dữ liệu |
+ -------------------- +
| information_schema |
| dulieu1 |
| mysql |
| performance_schema |
+ -------------------- +
4 hàng trong thiết lập (0,00 giây)

2.2) Lệnh tạo database user

Để tăng khả năng bảo mật, MySQL không đơn phương cho phép ứng dụng gửi dữ liệu trực tiếp vào ổ cứng mà sẽ thông qua quyền kiểm soát của một database user. Và để tránh việc sử dụng user root làm user thực hiện lệnh kết nối vì lý do bảo mật, chúng ta sẽ cần tạo một database user khác để quản lý database dulieu1 mà chúng ta vừa tạo ở trên.
Lệnh tạo database user như sau:
01
CREATE USER dulieu1_user @ localhost;
Trong đó, localhost là hostname của bạn, bạn không nên thay đổi cái này trừ khi bạn biết mình đang làm gì.
Bây giờ chúng ta đã có một user mang tên dulieu1_user, bạn có thể đặt tên bất kỳ nhưng mình đặt như thế này cho dễ nhớ.
Để chắc chắn bạn đã có user vừa tạo trên server, hãy kiểm tra bằng cách chạy lệnh sau:
01
CHỌN tài TỪ mysql. Người sử dụng;
Kết quả trả về:
01
02
03
04
05
06
07
08
09
+ -------------- +
| Người sử dụng |
+ -------------- +
| dulieu1_user |
| gốc |
| gốc |
| gốc |
+ -------------- +
4 hàng trong thiết lập (0,00 giây)
Đã gọi là user thì phải có password, bây giờ chúng ta sẽ thiết lập password cho user dulieu1_user vừa tạo bằng lệnh sau:
01
SET PASSWORD CHO dulieu1_user @ localhost =  PASSWORD ("123456");
Trong đó, 123456 ở cuối dòng lệnh là mật khẩu mà bạn cần thiết lập cho user dulieu1_user.
Bây giờ bạn có thể thoát ra khỏi MySQL Server bằng lệnh exit; và thử đăng nhập vô MySQL Server bằng user mà bạn vừa tạo.
01
mysql -u dulieu1_user -p123456
Sau đó gõ lệnh SHOW DATABASES; xem danh sách database mà nó đang sở hữu.
Bạn có thể thấy là nó chỉ có đúng một database mặc định tên là information_schema chứ không hề có database mang tên dulieu1. Và nếu nó chưa hiển thị database cần kết nối ở đây thì cũng đồng nghĩa với việc bạn sẽ bị báo lỗi kết nối database khi cài đặt WordPress.
Lý do là ở trên chúng ta chỉ vừa tạo database và database user mà thôi chứ chưa hề cấp quyền cho user dulieu1_user sử dụng database dulieu1. Ở phần dưới chúng ta sẽ làm công việc này.

2.3) Cấp quyền cho database user truy cập vào database

Hãy thoát ra và đăng nhập vào lại MySQL Server với tài khoản root nhé. Bây giờ ở đây chúng ta sẽ cần cấp quyền cho user tên là dulieu1_user có thể kết nối vào database tên dulieu1, thì chúng ta sẽ có lệnh như sau:
01
GRANT ALL PRIVILEGES ON dulieu1 *.  TO dulieu1_user @ localhost XÁC ĐỊNH  THEO '123456';
Hãy nhớ là nếu nó hiển thị Query OK, 0 rows affected (0.00 sec) thì mới là thành công nhé.
Trong đó, 123456 chính là mật khẩu của user dulieu1_user.
Cấp quyền xong, hãy gõ lệnh sau để nó tái tạo lại MySQL Server để cập nhật.
01
Tuôn ra  đặc quyền;
Ok, bây giờ database user tên dulieu1_user đã có quyền truy cập database tên là dulieu1 rồi. Bạn có thể thử login vào MySQL Server với database user vừa tạo và ấn lệnh SHOW DATABASES xem nó có hiển thị database vừa được cấp quyền không.

III. Tối ưu MySQL

Mặc định khi cài MySQL vào nó chưa được tối ưu nếu bạn gửi nhiều request cùng lúc, bạn hãy mở file /etc/my.cnf lên và chèn đoạn sau vào dưới cuối của file đó:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
[mysqld]
 
key_buffer = 500M
table_cache = 4000
sort_buffer_size = 3M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_connections = 400
query_cache_type = 1
query_cache_limit = 5M
query_cache_size = 500M
tmp_table_size = 20M
max_heap_table_size = 20M
thread_cache_size = 64
Sau đó khởi động lại MySQL với lệnh service mysqld restart.

IV. Cài đặt phpMyAdmin

Có thể bạn sẽ cảm thấy hơi khó khăn nếu sử dụng các dòng lệnh để thao tác những tác vụ cần thiết như tạo database, sửa dữ liệu,…nên có thể bạn sẽ khá cần đến công cụ phpMyAdmin để quản trị database dễ hơn.
Chạy lệnh sau để cài đặt phpMyAdmin:
01
yum  cài đặt phpMyAdmin
Mở file /etc/httpd/conf.d/phpMyAdmin.conf lên và tìm:
01
02
03
04
05
06
07
<IfModule! Mod_authz_core.c>
  # Apache 2.2
  Order Deny, Allow
  Từ chối từ tất cả
  Cho phép từ 127.0.0.1
  Cho phép từ :: 1
</ IfModule>
Sửa 127.0.0.1 thành IP máy tính của bạn vì mặc định nó chỉ có thể truy cập bởi mạng nội bộ trên máy chủ.
Sau đó là khởi động lại Apache.
01
dịch vụ httpd restart
Bây giờ bạn có thể truy cập vào phpMyAdmin với đường dẫn http://example.com/phpmyadmin. Bạn có thể truy cập với bất kỳ domain nào có trên VirtualHost.
Nếu bạn muốn thay đường dẫn từ http://domain/phpMyAdmin thành http://domain/hehe thì sửa 2 đoạn ở đầu file /etc/httpd/conf.d/phpMyAdmin.conf:
Alias ​​/ phpMyAdmin / usr / share / phpMyAdmin
Alias ​​/ phpmyadmin / usr / share / phpMyAdmin
thành
Alias ​​/ hehe / usr / share / phpMyAdmin
Alias ​​/ huhu / usr / share / phpMyAdmin
Và khởi động lại Apache:
01
dịch vụ httpd restart

Lời kết

Vậy là bây giờ ta đã có một webserver có đầy đủ các chức năng để chạy được một website WordPress rồi, còn chần chờ gì nữa mà không cài ngay một website WordPress lên nào. Ở phần sau, mình sẽ hướng dẫn bạn cách cài một website WordPress bằng cách nhanh nhất trên VPS

0 nhận xét trong bài "Hướng dẫn cài LAMP trên Centos"

Post a Comment