Laravel là một PHP framework mã nguồn mở và miễn phí nhắm vào mục tiêu hỗ trợ phát triển các ứng dụng web theo cấu trúc MVC Model-View-Controller. Theo thời gian, Laravel ngày càng trở nên thông dụng và được ưa chuộng hơn.


Trong bài này mình sẽ hướng dẫn các bạn cách cài đặt Laravel 5 với HocVPS Script (Nginx + PHP + MariaDB) trên CentOS 6/7 (Áp dụng hoàn toàn tương tự với các hệ quản trị LEMP khác).

Laravel 5

1. Cài đặt Laravel 5

1.1. Cài đặt HocVPS Script và Composer

Đầu tiên, bạn cần chuẩn bị một VPS mới tinh và cài đặt HocVPS Script. Quá trình cài đặt có thể lựa chọn PHP 5.6, 7.0 hoặc 7.1 đều được. Sau khi cài đặt xong, chúng ta sẽ có Nginx 1.12.2; PHP 7.1.11 và MySQL (MariaDB) 10.

Mình sẽ cài đặt Laravel thông qua Composer.

# curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer

1.2. Cài đặt Laravel 5

Lưu ý: Laravel cần kích hoạt các PHP function: escapeshellarg, proc_close, proc_get_status, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate. HocVPS đã kích hoạt sẵn nên các bạn không cần sửa trong /etc/php.ini nữa.

Di chuyển đến thư mục website /home/domain.com/public_html/ và cài đặt Laravel:

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

Thiết lập quyền webserver đối với thư mục Laravel. Đối với HocVPS, bạn chỉ cần chạy menu 14)Phan Quyen Webserver

# chown -R nginx:nginx laravel
# chmod -R 755 laravel/storage

1.3. Cấu hình Nginx cho Laravel

Mở và chỉnh sửa file cấu hình Nginx của tên miền:

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

Điều chỉnh một số tham số(màu đỏ) như sau, phần còn lại giữa nguyên:

server {
	listen 80 default_server;
		
	# access_log off;
	access_log /home/hocvps.com/logs/access.log;
	# error_log off;
    	error_log /home/hocvps.com/logs/error.log;
	
    	root /home/hocvps.com/public_html/laravel/public;
	index index.php index.html index.htm;
    	server_name hocvps.com;
 
    	location / {
		try_files $uri $uri/ /index.php?$query_string;
	}
	# Remove trailing slash to please routing system.
        if (!-d $request_filename) {
                rewrite     ^/(.+)/$ /$1 permanent;
        }
	# Custom configuration
	include /home/hocvps.com/public_html/*.conf;

    	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 /home/hocvps.com/public_html/laravel/public$fastcgi_script_name;
    	}

Nhấn Ctrl+O để lưu lại và Ctrl+X để thoát.
Lưu ý: Phần fastcgi_param là cấu hình riêng của HocVPS, nếu bạn không sử dụng thì không cần sửa.

Restart lại Nginx và PHP, thông báo OK là được

# service nginx restart && nginx -t
# service php-fpm restart && service php-fpm status

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.
Lưu ý: Các lệnh php artisan chỉ chạy được trong thư mục Laravel. Ví dụ:

# php artisan --version
Laravel Framework 5.5.19

2. Cấu trúc thư mục Laravel

Laravel sử dụng mô hình MVC Model-View-Controller làm nền tảng phát triển.

/root/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── .env.example
├── .gitattributes
├── .gitignore
├── artisan
├── composer.json
├── composer.lock
├── package.json
├── phpunit.xml
├── readme.md
├── server.php
└── webpack.mix.js

Trong đó:

  • app: chứa code chính của ứng dụng, bao gồm các tập tin php, các class php, thư viện, models, controllers, providers…
  • bootstrap: chứa tập tin khởi tạo, điều hướng hệ thống và một số file cấu hình nạp tự động.
  • config: chứa tập tin cấu hình Laravel Framework như cấu hình database, app, mail, session…
  • database: chứa các thư mục về cơ sở dữ liệu.
  • public: chính là webroot với file khởi động index.php để người dùng sẽ truy cập vào đây, đồng thời là nơi chứa các tập tin css, js, image.
  • resources: chứa trang views (V trong mô hình MVC) và các file hỗ trợ cho đa ngôn ngữ cùng các file khác như SASS, LESS…
  • routes: chứa các tập tin định nghĩa, xử lý điều hướng các truy vấn, bao gồm web, api và console.
  • storage: chứa các tập tin hệ thống như upload, cache, session, cookie, log…
  • tests: chứa các file test của Framework.
  • vendor: chứa các thư viện của composer.
  • .env và .env.example: 2 tập tin cấu hình chính của laravel như key app, tên app, url app, email, CSDL… trong đó .env.example là cấu hình mẫu của Laravel.
  • .gitattributes và .gitignore: Git sử dụng 2 file này để định nghĩa thuộc tính và danh sách các file không theo dõi.
  • artisan: tập tin thực thi lệnh Laravel, được tương tác nhiều nhất thông qua # php artisan.
  • composer.json và composer.lock: tập tin cấu hình thao tác với composer.
  • package.json: tập tin cấu hình của nodejs, chứa các package cần dùng cho project.
  • phpunit.xml: Là tập tin xml của phpunit dùng để testing project.
  • readme.md: hướng dẫn sử dụng Laravel Framework.
  • server.php: tập tin để artisan trỏ đến tạo server khi gõ lệnh # php artisan serve.

Như vậy, các bạn đã cài đặt thành công và hiểu sơ bộ về Laravel Framework. Chúc các bạn thành công!

Comment của bạn

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

86 Comments

  1. Dũng 24 comment

    Bạn cho mình hỏi khi mình login vào server thì nó bị lỗi như này:
    “The page has expired due to inactivity.
    Please refresh and try again.”
    Mặc dù mình phân quyền đúng hết và trỏ domain đúng hết rồi. Lỗi này fix như nào bạn
    Thank bạn nhé

  2. Quang Minh 2 comment

    Laravel của mình bị lỗi khi sử dụng hocvps script. Tất cả các request class tự tạo thủ công (qua Laravel artisan command) được extend từ FormRequest class của Laravel đều bị báo lỗi không tìm thấy.

    Mặc dù cùng một hdh Centos 7 hoặc ubuntu18 nhưng nếu mình cài thủ công các thành phần của LEMP thì ko gặp lỗi này. Cũng hơi khó hiểu mà đến giờ vẫn ko biết là tại sao 😂😂😂

    1. Việt Phương Moderator

      Vấn đề này mình không rõ rồi. Bạn tìm hiểu log thêm xem sao

    2. Quang Minh 2 comment

      Uh mình cũng hỏi một số nơi trên StackOverflow, Laracast, rồi Github mà vẫn chưa ai trả lời đc cả b ạ hix hix

  3. chjhieu 4 comment

    Mình đã tạo được 1 site ngon lành rồi. mình muốn tạo site thứ 2 cũng vào hocvps thêm site và database, tạo cả sql trong phpmyadmin rồi nhưng mà vẫn chưa hoạt động chưa thấy có kết nối

    Ai làm site thứ 2 rồi hướng dẫn mình với

  4. Nguyễn Cường 2 comment

    server {
    listen 80 default_server;

    # access_log off;
    access_log /home/hello.wifinghean.com/logs/access.log;
    # error_log off;
    error_log /home/hello.wifinghean.com/logs/error.log;

    root /home/hello.wifinghean.com/public_html/laravel/public;
    index index.php index.html index.htm;
    server_name hello.wifinghean.com;

    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 /home/hello.wifinghean.com/public_html$fastcgi_script_name;
    }

    location ~ /\. {
    deny all;
    }

    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }

    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }

    location ~* \.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|eot|svg|ttf|woff)$ {
    gzip_static off;
    add_header Pragma public;
    add_header Cache-Control “public, must-revalidate, proxy-revalidate”;
    access_log off;
    expires 30d;
    break;
    }

    location ~* \.(txt|js|css)$ {
    add_header Pragma public;
    add_header Cache-Control “public, must-revalidate, proxy-revalidate”;
    access_log off;
    expires 30d;
    break;
    }
    }
    Ai giúp mình với. Nó báo File not found.

      1. Cươngg 2 comment

        Trước mình có nhờ a luân cài vps. Bạn cho mình email. Bạn check vps cho mình đc k.

  5. Phuc Vo 15 comment

    Làm theo hướng dẫn thì báo File not found.
    Tuy nhiên thay vì trỏ “root /home/hocvps.com/public_html/laravel/public” thì mình trỏ sang “root /home/hocvps.com/public_html/laravel/tests” thì nó lấy được file index.html.
    Giờ mình phải làm sao đây

  6. Duy 5 comment

    Mình đang thử đẩy laravel lên nhưng có vẻ nó ko hoạt động với mariadb tốt, khi migrate db thử thì rất nhiều lỗi

      1. Việt Phương Moderator

        Ok bạn. Vấn đề chỉ với MariaDB hoặc MySQL 5.7 trở xuống nhỉ. Well noted with thanks

  7. nguyen van duong 8 comment

    anh ơi cho em hỏi chút ạ, sao em cài thêm một website nữa cũng chạy bằng laravel trên cùng một server, web 1 chạy ngon lành, nhưng web 2 thì toàn file not found
    khi thay chỉ số này:

    fastcgi_param SCRIPT_FILENAME /home/xxxx.com/public_html$fastcgi_script_name;

    =>>

    #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    thì nó chạy dc bình thường, nhưng mỗi lần up code mới lên thì phải restart lại nginx thì nó mới nhận code mới

    1. Việt Phương Moderator

      Hai website bạn để 2 thư mục khác nhau chứ? Kiểu /home/a với home/b

      1. nguyen van duong 8 comment

        đúng rồi anh, 2 thư mục khác nhau, em dùng cái hocvps mục thêm website để tạo mà

  8. Thành 1 comment

    cho mình hỏi mình có project laravel chạy trên xampp localhost được rồi giờ muốn up project để chạy trên vps thì sao. MÌnh làm giống như php thuần là up hết source lên rồi import data nhưng bị lỗi 500 không chạy được

    1. Việt Phương Moderator

      Laravel mình không xài nên không rõ case này rồi. Bạn kiểm tra thư mục up chưa? Không phải up thẳng vào public_html đâu mà là thư mục bên trong. Và bạn check log PHP xem vì sao

    2. LINH IT PRO 8 comment

      Bạn tiến hành:
      chmod -R 777 storage/
      php artisan config:cache
      php artisan cache:clear
      php artisan key:generate

      Chỉnh sửa lại .env cấu hình database …
      Chúc bạn thành công

        1. Việt Phương Moderator

          Not Found File tức cái thư mục public_html theo Nginx Conf đang không show ra được cái gì

    1. Việt Phương Moderator

      Theo cảnh báo thì bạn không nên chạy composer trên user root hoặc bất kì user có quyền ngang root, vì việc đó cho phép bên thứ 3 thông qua plugins/scripts có toàn quyền đối với user chạy composer (trong trường hợp này là root). Vì thế, bạn nên chạy trên 1 user khác
      Và như trong bài hướng dẫn, mình đã để composer chạy trên user nginx

  9. 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.

  10. 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

  11. 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.

  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. 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 52 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 52 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 52 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 ?

  14. 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.

  15. 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 .

  16. Kenshin 8 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

  17. 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é.

  18. Nam Luu 21 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 😀

  19. 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.

  20. 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!

  21. 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

  22. 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

  23. 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 ?