Trong bài này mình sẽ hướng dẫn các bạn cách cài đặt Laravel 5 sử dụng HocVPS Script (Nginx + PHP + MariaDB) trên CentOS 6.

Laravel 5

1/ Cài đặt HocVPS Script

Đầu tiên, bạn cần chuẩn bị một VPS mới tinh và cài đặt HocVPS Script. Trong quá trình cài đặt có thể lựa chọn PHP 5.6, 5.5 hoặc 5.4, bài viết này mình sẽ sử dụng PHP 5.6.

Sau khi cài đặt xong, chúng ta sẽ có Nginx 1.8.0; PHP 5.6; MySQL (MariaDB) 5.5.

2/ Cài đặt Composer

Mình sẽ cài đặt Laravel thông qua Composer. Trước khi bắt đầu cần cài thêm package php-cli

yum --enablerepo=remi-php56 install php-cli

Rồi cài đặt Composer

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

3/ Cài đặt Laravel

Cấu hình PHP của HocVPS Script sẽ disable một số function để bảo mật, tuy nhiên khi cài đặt Laravel chúng ta bắt buộc phải enable.

nano /etc/php.ini

Tìm dòng disable_functions và xóa đi các function sau: escapeshellarg,proc_close,proc_get_status,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate

Lưu lại file bằng cách nhấn Ctrl+OCtrl+X để thoát.

Chuyển đến folder public_html và cài đặt Laravel

cd /home/domain.com/public_html && composer create-project laravel/laravel

Tiếp theo change owner cho webserver đối với thư mục appstorage

chown -R nginx:nginx laravel/app
chown -R nginx:nginx laravel/storage

4/ Cấu hình lại Nginx

Mở file cấu hình Nginx của tên miền lên:

nano /etc/nginx/conf.d/domain.com.conf

Điều chỉnh lại một số tham số (màu đỏ) như sau:

server {
        listen   80 default_server;
        root /home/domain.com/public_html/laravel/public;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        # Remove trailing slash to please routing system.
        if (!-d $request_filename) {
                rewrite     ^/(.+)/$ /$1 permanent;
        }

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
                fastcgi_buffer_size 32k;
                fastcgi_buffers 8 16k;
                fastcgi_busy_buffers_size 32k;
                fastcgi_temp_file_write_size 32k;
                fastcgi_intercept_errors on;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

Cuối cùng nhấn Ctrl+O để lưu lại và Ctrl+X để thoát.

Restart lại Webserver và PHP

service nginx restart
service php-fpm restart

Cuối cùng, truy cập vào tên miền hoặc IP, bạn sẽ thấy dòng chữ Laravel 5 xuất hiện. Vậy là xong.

Chúc các bạn thành công.

60 Comments

  1. hoangvinh91 5 comment

    ErrorException in Filesystem.php line 81:
    file_put_contents(/home/conifer.com.vn/public_html/laravel/bootstrap/cache/services.json): failed to open stream: Permission denied

    Em bi loi vay bac a.

      1. unknown 3 comment

        Bạn quangduy cho mình hỏi sao lại chạy lệnh đó cho vấn đề permission nhỉ ?
        cái đấy nó tự bật server cổng 8000.
        Mình cũng bị lỗi permission và chạy lệnh trên thì với cổng 8000 đó ko bị lỗi gì nhưng mình muốn nó chạy như bình thường thì phải làm như thế nào vợ ?

        1. quangduy 3 comment

          Bạn chạy lệnh đó xong 1 hồi bạn ctrl + c cho nó dừng, rồi vào web ở port 80 bình thường mà, nó tự fix permission này nọ.

      2. unknown 3 comment

        Bạn quaygduy cho mình hỏi chút sao chạy cái đới thì không bị lỗi về permission nhỉ. Mình chạy nó và vào bằng cổng 8000 thì ổn giờ mình muốn nó cổng 80 và không chạy lệnh kia thì phải làm thế nào vợi ?

  2. Trung 2 comment

    Bác cho em hỏi, cài HocVPS Scrip này có chạy đc File .htaccess không vậy
    e sử dụng code WHMCS

  3. Thạc Sỉn 2 comment

    Bác cho em hỏi, em dùng hocvps script để chạy trên vps, đã cài laravel ngon lành, site chạy tốc độ tốt. Tuy nhiên em có config crontab để chạy schedule của laravel thì không được. Bác trợ giúp em cái. crontab của em là:
    * * * * * /usr/bin/php /home/mydomain.com/public_html/laravel/artisan schedule:run >> /dev/null 2>&1

  4. Thạc Sỉn 2 comment

    Cám ơn bác, mình đã làm được rồi.
    Tiện thể bác cho mình hỏi là con vps của mình check ramdom trong ngày thì thường bị 99% ram mà mình không biết phải giải quyết như thế nào. Thông số vps của mình:
    RAM: 768MB của hostus (gói 10$)
    Mysql db: 1 db dung lượng khoảng 2GB
    Cho mình hỏi có cách nào tối ưu hoặc giải quyết vấn đề hết ram ko? Site mình visit ko nhiều chỉ khoảng ~100 visit/ngày.
    Cám ơn bác!

  5. Trần Giáp 11 comment

    e cài bị lỗi như thế này là bị gì vậy a Luân?

    [ErrorException]
    escapeshellarg() has been disabled for security reasons

    1. Luân Trần Admin

      Hàm PHP này đã bị disable, bạn mở file /etc/php.ini ra tìm đoạn nào có chữ escapeshellarg thì xóa đi, restart lại PHP là được.

  6. Nam Luu 11 comment

    Cho mình hỏi 1 chút

    Việc cài đặt laravel có ảnh hưởng gì đến cấu hình cài đặt wordpress ko.
    Vì mình thấy chuẩn bị 1 vps mới nên sợ cài vào vps đang chạy wp mà lỗi thì toi hệ thống 😀

  7. Huy 1 comment

    Chào Luận, mình vừa tìm hiểu VPS và Laravel nên cũng hơi gà, cho mình hỏi là mình k muốn cho laravel nằm ở thư mục gốc mà nằm ở 1 thư mục con thì mình phải thay đổi những chỗ nào trong các câu lệnh trên vậy bạn ?

    ví dụ : lrv sẽ nằm ở folder api từ root, và phải gõ domain.com/api thì mới ra trang welcome của Laravel chứ k phải gõ domain.com như của cậu

    THanks Luân nhé

    1. Luân Trần Admin

      Bạn cần thay đổi đường dẫn root trong phần 4/ Cấu hình lại Nginx nhé.

  8. Kenshin 3 comment

    hi a Luan, khi em cai xong va start len, khi vao tat ca cac link no bao loi nay a.

    No input file specified.

    1. Thành 4 comment

      Mình cũng giống ya chang lỗi này nè, mình cài Centos 6.8/ 64 của DO, help me

      No input file specified.

        1. Thành 4 comment

          Oki bậy giờ vào được rồi.
          Do mình sai trong file .conf : fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

          Nhưng giờ lỗi khác: Fatal error: require(): Failed opening required ‘/home/dailykemnghia.vn/public_html/laravel/bootstrap/../vendor/autoload.php’ (include_path=’.:/usr/share/pear:/usr/share/php’) in /home/dailykemnghia.vn/public_html/laravel/bootstrap/autoload.php on line 17

        2. Thành 4 comment

          Thanks Luân cuối cùng cũng vào được trang , hiện lên chữ Laravel

          Lúc nãy mình bị lỗi proc_open(): fork failed – Cannot allocate memory, nó không down về các folder trong vendor, sau đó mình enable swap giờ thì okey

  9. unknown 3 comment

    Có bác nào bị lỗi như thế này không chỉ mình cách fix với 🙁

    [error] 2875#2875: *43 FastCGI sent in stderr: “PHP message: PHP Fatal error: Uncaught exception ‘UnexpectedValueException’ with message ‘The stream or file “/usr/share/nginx/html/helloWorld/storage/logs/laravel.log” could not be opened: failed to open stream: Permission denied’ in /usr/share/nginx/html/helloWorld/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107

    Mặc dù đã chmod các folder storage , bootstrap/cache .

  10. Hoà 3 comment

    Mình đã setup hocvps và cấu hình laravel theo đúng hướng dẫn. Tuy nhiên khi chạy code mình có 1 số hàm upload file lên thư mục custome vào public thì nó trả thông báo lỗi không thể ghi file hoặc thư mục vào được và mình phải chmod về 777 thì mới chạy. Tuy nhiên trên 1 số host khác mình thuê ở ngoài thì ko cần làm vậy. Vấn đề là gì nhỉ? Vì để 777 hơi nguy hiểm! 😀

    1. Luân Trần Admin

      Mình đoán có thể do owner hoặc permission thôi. Chưa chắc vấn đề ở chmod 777. Bạn kiểm tra lại xem file hoặc thư mục đó đang có owner là gì thế?

      1. Hoà 3 comment

        Mình có xem 1 vài hướng dẫn chỉnh owner www-data gì đó nhưng hình như nginx không xài được. Hiện tại thì đã chmod thành 777 rồi, mình thử cả 755 và 775 đều không được nhưng về 777 thì lên ngay.

  11. Anh Đức 13 comment

    anh ơi vps của em thì dùng vpssim chứ không dùng hocvps nhưng nó cũng như nhau, em làm theo bao nhiêu hướng dẫn rồi mà vẫn không cài được laravel, nó toàn lỗi 403. anh có thể giúp em được không

      1. Anh Đức 13 comment

        Sao lại laravel 2 ạ, em dùng laravel 5.3 mà anh. Em chạy centos 6x 64 bit và nginx 1.11.6. Em tìm biết bao nhiêu bài hướng dẫn của việt nam rồi sang nước ngoài rồi cuối cùng mò về đến hocvps của anh là thấy hướng dẫn giống hệ thống của em nhất và làm theo mà vẫn không được.

        1. Phương Moderator

          Mình vừa cài thử hocvps Script rồi Laravel 5.3 theo hướng dẫn được luôn mà
          Test : http://45.32.112.69/
          [root@vultr laravel]# php artisan –version
          Laravel Framework version 5.3.23

          Bạn check lại xem lỗi ở bước cài đặt hay bước cấu hình lại nginx

          1. Lộc 23 comment

            mình cài theo hướng dẫn, cũng đang sử dụng hocvps. nhưng gõ :php artisan –version thì k ra

          2. Việt Phương Moderator

            Có thể bước cài đặt Laravel bạn bị lỗi. Trước đó bạn đã bỏ các disable_functions chưa?

          3. Lộc 23 comment

            VPS mới hoàn toàn k dính vết bẩn, chỉ cài mỗi hocvps. Sau đó cài Laravel luôn. Disable theo hướng dẫn luôn. Chạy ra giao diện demo của Laravel nhưng gõ lệnh trên thi k ra

          4. Việt Phương Moderator

            Lạ nhỉ. Vậy bạn cứ sử dụng xem sao. Deploy project xem

          5. Việt Phương Moderator

            Hình như do bạn sử dụng php artisan ngoài thư mục Laravel. Chỉ có thể chạy trong thư mục cài đặt Laravel, cũng như các project của Laravel

          6. Lộc 23 comment

            OK, đã tìm ra được nguyên nhân rồi, mà Laravel này ver 5.3 à bác Phương? Làm sao update lên 5.4.16 được ?

  12. tử vương 4 comment

    Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

    session_start(): open(/var/lib/php/session/sess_r0b00v12dt6cd3qgtq37lbsl4ot14h2c, O_RDWR) failed: Permission denied (13)

    cài xong vào phpmyadmin nó báo thế này nè cậu

    1. Việt Phương Moderator

      Kiểm tra quyền truy cập thư mục PHP session # ls -al /var/lib/php, đảm bảo bạn có full quyền ghi đọc drwxrwxrwx
      Nếu chưa có, bạn cần set toàn quyền đọc/ghi cho thư mục PHP session# chmod -R 777 /var/lib/php/session/
      Chú ý: thư mục PHP session có thể ở các vị trí khác nhau tùy vào server. Kiểm tra php.ini để biết vị trí folder ở dòng session.save_path

    2. Trần Anh Đức 13 comment

      anh ơi giờ em cài được rồi nhưng vào nó lại ra lỗi No input file specified.
      Làm sao đề fix lỗi này ạ

      1. Việt Phương Moderator

        Sau bạn cmt riêng để tránh lẫn cmt bạn khác nhé
        No input file specified là do bạn cấu hình Nginx của domain rồi nên không nhận đúng file để đọc hoặc chưa đổi owner thư mục

  13. Thai 5 comment

    Ad cho hỏi em dùng hocvps script, upload code laravel lên nhưng bị lỗi này: SQLSTATE[HY000] [1130] Host ‘127.0.0.1’ is not allowed to connect to this MariaDB server

    1. Việt Phương Moderator

      Lỗi này có vẻ như bạn không có quyền truy cập MySQL từ localhost 127.0.0.1.

  14. Hùng 2 comment

    Mình đã làm đến bước hiện ra chữ laravel rồi… nhưng đến lúc up code lên thì vào nó lại k hiển thị trang web. Bạn có thể hướng dẫn cho mình cách cấu hình database được k? tks ạ!

    1. Việt Phương Moderator

      Như các source web thông thường thì bạn tạo database rồi sửa config của source các thông tin của database để sourcecode kết nối được database đó. Cụ thể Laravel như thế nào phần database thì mình không rõ.

      1. Hùng 2 comment

        DB_CONNECTION=mysql
        DB_HOST=127.0.0.1 /
        DB_PORT=3306
        DB_DATABASE=
        DB_USERNAME=root
        DB_PASSWORD=

        Bạn giúp mình config cái này được k?. tks ạ

        1. Việt Phương Moderator

          Bạn để DB_HOST=localhost xem. Cả Username là username liên quan đến database, không phải root

  15. Pham Thong 1 comment

    Cám ơn anh Luân, nhờ bài viết này e đã cài thành công, đã thử hocvps + vpssim đều okay cả 😀
    Ai muốn thuần tí, ít cài đặt tích hợp sẵn thì dùng Hocvps, còn nếu không biết vps nhiều thì dùng vpssim vì trong đó có sẵn nhiều thứ bạn cần cho 1 website.

Comment của bạn

Your email address will not be published. Required fields are marked *