CHIA SẺ:

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.

46 Comments

  1. hoangvinh91 5

    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

        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

          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

        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

    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

    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

    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

    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

    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

    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 2

    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

      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

          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

          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

    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

    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

        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

    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

        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

  12. tử vương 4

    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

      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 4

    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.

Comment của bạn

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