Do đã xuất hiện từ lâu nên LAMP (viết tắt của Linux, Apache, MySQL, và PHP) được dùng rất phổ biến trên thế giới.

Các bước cài đặt LAMP trên CentOS

Đầu tiên bạn cần chuẩn bị một server CentOS mới tinh chưa cài gì cả, ở đây mình dùng CentOS 6.4 64bit. Trước khi thao tác bạn cần phải đổi lại hostname và chỉnh sửa file host.

1. Cài đặt Apache

yum install httpd

Đường dẫn file cấu hình Apache:

/etc/httpd/conf/httpd.conf

Khởi động Apache

service httpd start

Test thử bằng cách truy cập vào http://<youraddress> bạn sẽ thấy thông báo “Apache 2 Test Page”

Lưu ý: nếu sử dụng VPS ở Vultr, mặc định port 80 sẽ bị block, khi truy cập vào IP sẽ bị báo lỗi ERR_CONNECTION_REFUSED. Bạn hãy thực hiện thêm thao tác mở port như sau:

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save

Cấu hình Apache Virtual Hosts

– Tạo một file cấu hình ở thư mục /etc/httpd/conf.d, đặt tên ví dụ example.com.conf (thay bằng domain của bạn)

Nội dung file /etc/httpd/conf.d/example.com.conf

NameVirtualHost *:80

<VirtualHost *:80> 
     ServerAdmin webmaster@example.com
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot /var/www/example.com/public_html/
     ErrorLog /var/www/example.com/logs/error.log 
     CustomLog /var/www/example.com/logs/access.log combined
</VirtualHost>

– Tạo thư mục cho website

mkdir -p /var/www/example.com/public_html
mkdir /var/www/example.com/logs

– Nếu muốn thêm website, bạn chỉ cần tạo thêm một file .conf khác và reload lại Apache với lệnh: service httpd reload

2. Cài đặt MySQL

yum install mysql-server
service mysqld start

Tiến hành cài đặt MySQL bằng lệnh

/usr/bin/mysql_secure_installation

Do mới cài đặt nên nếu bị hỏi password bạn nhấn Enter

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Sau đó cần đặt root password bằng cách chọn y

Tiếp theo bạn sẽ phải trả lời một loạt các câu hỏi, tốt nhất cứ chọn y

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL 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                                            
 ... 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
... Success!

By default, MySQL 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
 - 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
 ... Success!

Cleaning up...

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

Thanks for using MySQL!

3. Cài đặt PHP

yum install php php-mysql

PHP Modules

PHP có rất nhiều thư viện module khác nhau, bạn có thể xem bằng cách gõ lệnh sau

yum search php-
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Common files for PHP
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-devel.x86_64 : Files needed for building PHP extensions
php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Human Language and Character Encoding Support
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php-imap.x86_64 : A module for PHP applications that use IMAP

Để cài module nào dùng lệnh sau

yum install name of the module

4. Tự động chạy service khi reboot

chkconfig httpd on
chkconfig mysqld on

Restart Apache

service httpd restart

OK vậy là quá trình cài đặt LAMP trên CentOS vậy là xong.

Xem thêm

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

110 Comments

  1. TUANK19 3 comment

    Giúp mình chạn truy cập web bằng Ip chỉ cho bằng domain name thôi
    vd: domain: abc.com cài đặt trên server có IP 123.123.123.123
    bây giờ mình có thể truy cap web bằng tên domain hoặc bằng ip: 123.123.123.123

    Có cách nào chỉ cho truy cap bằng tên miền: abc.com còn truy cập bằng ip 123.123.123.123 bị bị chặng hoặc hiện 1 cái thông báo lỗi.
    Thanks

    1. Việt Phương Moderator

      Bạn thiết lập cho localhost, nhớ đặt trong block VirtualHost *:80

      ServerName localhost
      Redirect 403 /
      UseCanonicalName Off
      UserDir disabled

      1. TUANK19 3 comment

        Cám ơn Phương đã Rep lại,

        Mình làm để localhost thì kho dc, nhưng thay localhost bằng IP 123.123.123.123 thì okie.
        Thanks

  2. Dũng 4 comment

    Enter current password for root (enter for none):
    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
    Em cài đặt mysql thì báo vầy
    – Gõ Enter thì tiếp tục có thông báo
    – Còn ghi chữ vào cũng không ghi đc

  3. Kind 7 comment

    Mình thử chạy cái code grab nó bị lỗi 500 bác ạ. mà file .htaccess up lên nó chuyển qua htaccess
    giờ làm sao hả bác

    1. Việt Phương Moderator

      Bạn up qua các trình kéo thả à? Bạn nên zip cả source web up lên rồi giải nén chứ đừng up kiểu thư mục thế. Và mình hiện cũng không rõ code grab bạn như thế nào nên vấn đề 500 Error chưa hiểu lắm

        1. Việt Phương Moderator

          Mình đang nói về vấn đề file htacess thôi chứ còn cái lỗi kia là do bạn cấu hình thư mục web với web server và database đã đúng chưa

    1. Việt Phương Moderator

      Uhm. Các module thì tùy vào mục đích sử dụng của bạn cần đến module nào thì cài thêm thôi

        1. Việt Phương Moderator

          Bạn chỉ cần cài các module cần dùng đến thôi. Và sau có thể cài thêm mà. Cài thì # yum install module1 module2 module3

  4. Tis 1 comment

    Bạn ơi cho hỏi mình muốn cài lamp cho vps theo topic của bạn nhưng tại sao phải đổi hostname và thay đổi thông tin IP vậy? mình muốn cài lamp nhưng giữ nguyên hostname của mình và IP do bên DVụ Máy chủ cung cấp thì cần làm gì vậy bạn ?

    1. Việt Phương Moderator

      Một số phần mềm yêu cầu server phải được thiết lập chính xác thông tin FQDN (Fully Qualified Domain Name) cho hostname. Đây cũng là vấn đề thường xuyên gặp phải trong khi làm việc với CentOS.
      Bạn có thể không cần thay đổi hostname cũng được

  5. cuong 1 comment

    Mình bị lỗi này.
    Mong admin giúp đỡ

    error 2002 (hy000) can’t connect to local mysql server through socket ‘/var/lib/mysql/mysql.sock’

  6. Lữ Phú Hòa 17 comment

    sau vài ngày nghiên cứu xin chia sẽ thêm cho anh em như sau là có thể thêm 1 domain mới
    nội dung này có thế Tạo một file cấu hình ở thư mục /etc/httpd/conf.d hoăc add trực tiếp vào /etc/httpd/conf/httpd.conf đều được nhé
    có gì không đúng admin fix lại dùm nhé, tks!
    ===========
    NameVirtualHost *:80 #dòng này có thể bỏ từ domain thứ 2 trở đi để tránh gặp lỗi dupe

    ServerName example.com
    ServerAlias http://www.example.com
    DocumentRoot /var/www/example.com/public_html/ #có thể đổi qua thư mục khác như /home/userlinux/ nhưng phải phân quyền cho apache:apache và user khác

  7. Ngọc Anh 5 comment

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
    đó là lỗi khi em gõ pass vào. Em gõ đúng rồi mà vẫn không được

  8. tri le 3 comment

    Ad cho hỏi patch của php-cli được không. Mình tìm ko ra được. Đã yum install php-cli và báo đã cài.

    1. Luân Trần Admin

      Bạn tạo file info.php với function phpinfo(); sẽ có đường dẫn php đó.

  9. Tin 12 comment

    Hi,

    Có bài viết nào về tối ưu dành cho webserver nào không bạn? Cài nginx thì chạy oke lắm nhưng nhiều hàm nó không chạy nên đành chuyển sang nghiên cứu LAMP, cái này mà có script như nginx thì quá tuyệt.

      1. Tin 12 comment

        Chào bạn,

        Mình có web cũng có chạy vài hàm auto, mà bên nginx thì nó không chạy được, nó không chuyển trạng thái được, chạy bên Apache thì oke mà bên nginx thì bị lỗi, đang tìm hiểu mà chẳng biết bị sao nữa.
        Bạn có tối ưu cho apache không vậy?

        1. Luân Trần Admin

          Nếu không có thông tin cụ thể thì mình chịu rồi. Apache mình không sử dụng mấy nên ko có nhiều kinh nghiệm. À mà bạn nên sử dụng Varnish làm frontend cache nếu dùng Apache.

          1. Tin 12 comment

            Để mình xem lại thế nào, có gì sẽ pm hỏi bạn sau. Cám ơn bạn rất nhiều!

  10. Vector6 2 comment

    Mình bắt đầu cài sudo yum install httpd
    thì hiện lên:

    [root@vultr ~]# sudo yum install httpd
    Loaded plugins: fastestmirror
    Setting up Install Process
    Loading mirror speeds from cached hostfile
    * base: http://ftp.riken.jp
    * epel: http://ftp.kddilabs.jp
    * extras: http://ftp.riken.jp
    * updates: http://ftp.riken.jp
    http://ftp.kddilabs.jp/Linux/packages/fedora/epel/6/x86_64/repodata/98b7fa7eb7c5d0de7e158efc19fb3dc802281b1d55d64a96b2bb9b2413dd95b7-primary.sqlite.bz2: [Errno 14] PYCURL ERROR 22 – “The requested URL returned error: 404 Not Found”
    Trying other mirror.
    http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/repodata/98b7fa7eb7c5d0de7e158efc19fb3dc802281b1d55d64a96b2bb9b2413dd95b7-primary.sqlite.bz2: [Errno 14] PYCURL ERROR 22 – “The requested URL returned error: 404 Not Found”
    Trying other mirror.
    http://mirror.premi.st/epel/6/x86_64/repodata/98b7fa7eb7c5d0de7e158efc19fb3dc802281b1d55d64a96b2bb9b2413dd95b7-primary.sqlite.bz2: [Errno 14] PYCURL ERROR 22 – “The requested URL returned error: 404 Not Found”
    Trying other mirror.
    http://ftp.cuhk.edu.hk/pub/linux/fedora-epel/6/x86_64/repodata/98b7fa7eb7c5d0de7e158efc19fb3dc802281b1d55d64a96b2bb9b2413dd95b7-primary.sqlite.bz2: [Errno 14] PYCURL ERROR 22 – “The requested URL returned error: 404 Not Found”
    Trying other mirror.

      1. Trần Chung 1 comment

        anh ơi cho em hỏi em dùng VPS chạy centos7 cài đặt lamp và sau đó em up website qua ftps với quyền root. Mọi thư hoạt động trơn tru nhưng em up hình ảnh từ trang web thì hình ảnh không chạy lên vps. Em nghi là khi em up srouce code bằng quyền root thì admin trang web k có quyền truy cập phải k ạ. Để giải quyết vấn đề phải làm sao xin anh hãy chỉ em với.Có phải mình up qua ftp mới được phải k ạ. Em đa thức khuya nhiều đêm tìm hiểu nhưng k biết làm. Nếu anh biết in hay giúp em qua teamview . Em xin cám ơn và hậu tạ 500k tiền cafe ạ

        1. Việt Phương Moderator

          Hình ảnh không chạy trên VPS là sao bạn. Bạn truy cập VPs xem ảnh thuộc quyền gì

  11. Nam 28 comment

    Tới bước cài PHP, PHP Modules có cần phải cài ko, hay là đọc cho biết và skip qua, còn nếu cài thì cài cái nào để chạy đc wordpress vậy aLuan?
    Cám ơn anh.

    1. Luân Trần Admin

      PHP thì bắt buộc phải cài thì mới dùng được WP, còn module thì tùy nhu cầu sử dụng mà cài đặt thêm nhé bạn.

  12. Vu Hoang Nam 1 comment

    Mình mới mua một VPS tren Ramnode.

    Đã cài đặt được Apache như hướng dẫn.

    Tuy nhiên ko thể test access duoc URL 🙁
    > Test thử bằng cách truy cập vào http:// bạn sẽ thấy thông báo “Apache 2
    > Test Page”
    =>
    Access cái IP Address Ramnode cung cấp thì luôn bị báo là “This webpage is not available”, ko hiểu là thế nào ?, giúp mình với 🙁

      1. Anh Tuan 2 comment

        Em start Apache rồi, nhưng truy cập IP vẫn không chạy ra trang “Apache 2 Test Page”, em không biết lỗi ở đâu nữa, admin giúp em với

          1. Anh Tuan 2 comment

            em làm đúng như trên, Lúc em nhập dòng “sudo service httpd start” thì chỉ trả về một dòng “Stating httpd:”, chạy IP thì không thấy gì hết ạ

          2. Luân Trần Admin

            Gửi mình thông tin tài khoản root vào mail để check thêm chi tiết nhé.

  13. thien 24 comment

    Ý bạn là hostname ở chỗ này ha bạn:

    111.222.333.444 datcucgach.com datcucgach

    mình sử full như bạn hướng dẫn.

    1. Luân Trần Admin

      Chuyển lại cho mình với, không cần thiết để full domain. Vì lúc này VPS sẽ hiểu domain kia sẽ có IP là 104.238.161.145

  14. thien 24 comment

    Mình đã cai xong các bước đên lúc down code về thì thì lại gặp lỗi này:

    [root@vtoolfix public_html]# wget http://vtoolfix.com/vtoolfix.zip
    –2015-03-19 06:48:30– http://vtoolfix.com/vtoolfix.zip
    Resolving vtoolfix.com… 104.238.161.145
    Connecting to vtoolfix.com|104.238.161.145|:80… connected.
    HTTP request sent, awaiting response… 404 Not Found
    2015-03-19 06:48:30 ERROR 404: Not Found.

    xin được chỉ giáo thanks you.

    trên Ngix thì down phà phà.

    1. Luân Trần Admin

      Có vẻ như domain đó đang trỏ đến đúng cái IP server mà bạn định down xuống 🙂

  15. thien 24 comment

    cho mình hỏi chút khi cào xong apache, PHP, MySQL xong thì mình sửa file httpd.conf đoạn cuối này:
    #
    # ServerAdmin webmaster@dummy-host.example.com
    # DocumentRoot /www/docs/dummy-host.example.com
    # ServerName dummy-host.example.com
    # ErrorLog logs/dummy-host.example.com-error_log
    # CustomLog logs/dummy-host.example.com-access_log common
    #

    thay example.com thành domain của mình và up code cào var/www lạ chạy được web chưa bạn.
    Thanks

  16. thien 24 comment

    cho mình hỏi cách sử lỗi này vơi:

    Starting httpd: httpd: apr_sockaddr_info_get() failed for vultr.guest
    httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

    1. Luân Trần Admin

      Dòng đầu tiên thì mình ko rõ, còn dòng thứ 2 ko ảnh hưởng gì cả.

  17. Ngô Tấn Tài 2 comment

    Chào Luân,

    Mình có cài và đã chạy ok, nhưng không hiểu sao lhi up website lên thì không connect được đến MySQL, không biết có phải do website bị sao không nhưng khi dùng trên windows vs xampp thì chạy bình thường, up lên các hosting free cũng như mua của các hãng dịch vụ thì chạy bình thường.

    1. Ngô Tấn Tài 2 comment

      Một số website thì connect được MySQL nhưng có code chạy được, có code lại lỗi, mặc dù đã test trên máy và các hosting khác thì không bị như vậy.

      Mong được Luân giải đáp, cám ơn nhiều.

  18. DoremonViet 9 comment

    Mình bị lỗi Laravel requires the Mcrypt PHP extension.
    Mình dùng lệnh này: sudo apt-get install php5-mcrypt
    Nhưng ko cài đc mcrypt. Luân giúp mình nhé, Cảm ơn bạn.

  19. Nguyễn Văn Văn 3 comment

    Mình đã test xong vào báo đang chạy nhưng tại sao vẫn không truy cập được ip nhỉ. Nếu không truy cập được thì liệu có cài được các bước tiếp theo ko Luân. Xin cảm ơn
    https://sites.google.com/site/datphuongbac/_/rsrc/1420615710055/home/test%20apache.PNG
    test thành công
    https://sites.google.com/site/datphuongbac/_/rsrc/1420615705023/home/ko%20truy%20cap%20dc.PNG
    vẫn không vào ip được.
    Luân có cao kiến gì chỉ mình với. Thanks

  20. Nguyễn Văn Văn 3 comment

    Chào Luân. Hiện mình đang dùng hosting đang mong muốn chuyển sang vps, mình đã tìm hiểu thông tin về vps và được biết hocvps là một trong những người có tâm quyết cũng như kiến thức chuyên môn cao. Xin cảm ơn nhưng bài của Luân.
    Trong quá trình tìm hiểu và thực hành mình đã đăng ký VPS của Vultr đang được km 20$.
    Bắt tay vào việc. Mình đã đổi hostname thành công và đã trỏ domain giaiphapfnb.net về vps rồi.
    Khi cài đặt Apache cũng không gặp báo gì lỗi. Nhưng khi truy cập vào IP thì không được.
    Một số hình ảnh Luân xem hộ mình với.
    Thông tin tài khoản
    https://sites.google.com/site/datphuongbac/_/rsrc/1420528161554/home/vitul.PNG
    Đổi hostname thành công và cài đặt apache
    https://sites.google.com/site/datphuongbac/home/hostname.PNG?attredirects=0
    Không thể truy cập được ip
    https://sites.google.com/site/datphuongbac/_/rsrc/1420528153547/home/apache.PNG
    Mong được hướng dẫn chi tiết (mặc dù đã làm theo video của bạn Thạch Phạm) nhưng tới apache lại không cài được.
    Xin cảm ơn nhiều.

    1. Luân Trần Admin

      Nói hơi quá lời rồi nhưng cũng xin cảm ơn bạn.

      Về vấn đề kia, bạn hãy check lại xem service Apache có đang chạy hay không với lệnh service httpd status hoặc dùng lệnh top

  21. Nhan 1 comment

    Minh sài vultr đã thay đổi hostname
    nhưng khi chạy lệnh Cài đặt Apache rồi mình vào trình duyệt gõ ip thì bị The connection has timed out
    minh sài HOSTNAME=datcucgach.com lun

  22. Thọ 1 comment

    Luân làm bài hướng dẫn về EC2 của Amazon Web Services đi Luân, anh thấy gói free tier của nó cũng ổn phết, mỗi tội băng thông hơi ít.

    1. Luân Trần Admin

      VPS của bạn hình như không có mạng rồi. Thử ping google.com xem có được không?

        1. Luân Trần Admin

          Bạn viết ticket liên hệ support đi, ghi cái lệnh ping kia vào là họ hiểu

          1. vanthu 21 comment

            Họ trả lời có 1 câu mà mình chẳng hiểu gì cả, ad giúp với!! 🙁
            “Please check /etc/resolv.conf to make sure resolvers exist”

  23. tuan 1 comment

    chao ban,minh lam theo ban buoc 1 da cai thanh cong apache roi no bao ok hết,nhưng mình dùng ip đăng nhập kiểm tra thử thì không vào được. giúp mình voi

  24. Châu Nguyễn 11 comment

    Site mình đang chạy vps 2 core, RAM 2GB bên Vultr, online tầm 1k5 tính theo amung là vps die lên die xuống rồi. Mình đang dùng servertut. Theo bạn mình nên cài LAM, hay LEMP thì tốt hơn.
    Hoặc có hướng dẫn nào tối ưu hơn không ? Thanks bạn

    1. Luân Trần Admin

      Dùng Servertut là ngon rồi vì nó đã tối ưu căn bản cho VPS.
      Giờ bạn tìm cách tối ưu thêm cho VPS bằng cách sử dụng cache, loadbalancing xem như thế nào?

  25. Thanh 1 comment

    Chào bạn,
    Cho minh hỏi để chạy ổn WP trên LAMP thi cần cài thêm nhưng thư viện module nào của PHP, hay chỉ cần PHP thôi ?

  26. Duy 3 comment

    Giờ người ta thường kết hợp cả Apache + Nginx thì phải (apache chạy các file .php còn nginx đảm nhiệm các file tĩnh như .css , .zip .các file ảnh và file khác)

    1. Luân Trần Admin

      Bạn check lại mysql có đang chạy không? Nếu không thì có thể do server hết RAM tự kill cái đó đi. Reboot lại là được.
      Chú ý tạo swap nữa nhé.

  27. cudan706 39 comment

    Mình gặp lỗi Server error ở trang chủ 🙁 mặc dù tất cả các thứ đều tốt.
    Có cách nào không bạn?
    Thanks

    1. cudan706 39 comment

      Sau một buổi tối mò mò mẫm mẫm trên mạng đã cài đặt thành công cho em centos 6 trên ramnode.
      Bạn nào bị giống mình thì xem lại file htaccess nhé.

      Xin cảm ơn bài viết rất hay và bổ ích.

  28. VienamRich 1 comment

    Em đang nghiên cứu cách quản lý VPS.

    Cài thử LAMP nhưng đến bước khởi động và restart APACHE thì bị lỗi này là sao hả anh:

    [root@HoangVietPhu ~]# sudo service httpd restart
    Stopping httpd: [ OK ]
    Starting httpd: httpd: apr_sockaddr_info_get() failed for HoangVietPhu
    httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

  29. Hoàng Vũ 1 comment

    em muốn cài gói php version 5.3.28 thì cài sao vậy anh.

    em lam cach này nhưng ko được:
    dowload php-5.3.28.tar.gz về
    giải nén ra được thư mục php-5.3.28
    chmod -R php-5.3.28
    cd php-5.3.28
    rồi ./INSTALL

    kQ: ./INSTALL: line 46: the: command not found
    ./INSTALL: line 47: online: command not found
    ./INSTALL: line 48: __________________________________________________________________: command not found
    ./INSTALL: line 50: General: command not found
    ./INSTALL: line 52: Before: command not found
    ./INSTALL: line 53: want: command not found
    ./INSTALL: line 54: described: command not found
    ./INSTALL: line 55: syntax error near unexpected token `(‘
    ./INSTALL: line 55: ` * Websites and web applications (server-side scripting)’
    [root@server1 php-5.3.28]#