THẢO LUẬN

thank bạn đã chia sẻ

0
thg 11 4, 2020 7:40 SA

cho e hỏi automatic css với bootstrap khác nhau ntn?

0

@maitrungduc1410 Tại mình cũng có một chút kiến thức về server và laravel rồi nên dễ làm theo.😆

+1

xịn quá, 1 phát bạn đã ăn ngay rồi 😄.

Ở project này mình chỉ detect user online và cho private chat với họ.

Bạn có thể custom load ra danh sách user cả online + offline hoặc cho tìm kiếm user không online sau đó cho private chat

0

Làm một phát được ngay không lỗi gì 😜 https://chat.codewebdao.com/ P/s: Project này còn một vấn đề là nếu các member khác trong room không online thì ta không thể chat private cho các member đó được.

+1
thg 11 4, 2020 4:48 SA

Có tài liệu nào liên quan đoạn công thức (3-10) không ạ, em đọc lại mấy lần rồi mà không hiểu lắm mặc dù bài viết viết khá rõ :orz:

0
thg 11 4, 2020 4:06 SA

Chào bạn. Cho mình hỏi tại sao bạn lại nói: "Chúng ta đọc mẫu mỗi 1/1000s và ghi lại con số đại diện chiều cao cùa sóng âm."? Theo mình hiểu ý bạn là: Tương tự như video, mỗi giây sẽ có hàng ngàn frame ảnh, thì file âm thanh, mỗi giây sẽ có hàng ngàn tần số. Đúng không bạn?

0

Đừng dùng user root là được b, có thể dùng user nginx hoặc www-data là ổn

0
thg 11 4, 2020 3:21 SA

@maitrungduc1410 oh, cảm ơn bạn nhiều nhé 😃

+1
thg 11 4, 2020 3:08 SA

Thanks bạn, mình cũng đang để user là nginx.

0
thg 11 4, 2020 3:06 SA

cảm ơn anh vì bài viết ạ 👍🙏

0
thg 11 4, 2020 3:06 SA

@hoangkim1982

Khi bạn không mount source code vào webserver thì khi truy cập tới các file css,js sẽ bị báo lỗi (404 từ phía Laravel, không phải từ phía Nginx nhé). Lí do bởi vì như ở comment trên mình đã nói, ở location ~ \.php$ ta đã bỏ đi try_files $uri =404 nhằm mục đích không mount source code mà vẫn chạy đc (như ý bạn muốn), do vậy Nginx sẽ không tìm các file css,js ở phía nó nữa mà cứ proxy thẳng vào app luôn, dẫn tới việc toàn bộ request sẽ được proxy vào service app và đc chuyển tới file index.php, tới đó thì Laravel sẽ đọc tìm xem có route nào tên là /js/app.js hay /css/app.css hay không, và tất nhiên ở routes/web.php ta không có các route như vậy nên bị lỗi 404 (thế nên ta mới thấy Laravel báo lỗi, không phải Nginx nhé).

Screenshot 2020-11-04 at 11.31.20.png

Về khắc phục việc này thì khá đơn giản bản chỉ cần cấu hình lại chút là được. 😄

Mình đã demo và chạy ngon, các file cấu hình ở đây nhé bạn.

Chú ý mình có mount file cấu hình PHP-FPM www.conf, bạn để ý dòng security.limit_extensions, mặc định PHP-FPM sẽ không allow cho các file .css, .js mà ta cần mount cấu hình do ta định nghĩa vào thì mới có.

Thứ nữa ở file cấu hình Nginx ta phải thêm 2 block location để bắt URL khi user truy cập vào các đường dẫn chứa file css, js.

Lí do phải chia thành 2 block location riêng cho cssjs là để xử lý Content-Type (mime-type) cho .css.js lí do là bởi vì bây giờ nginx proxy toàn bộ vào PHP-FPM rồi nên mime-type của các file js, css sẽ không được detect bởi Nginx nữa mà sẽ được detect phía bên PHP-FPM và luôn trả về text/html dẫn tới nếu web của bạn load các file này lên sẽ bị lỗi mime-type không chính xác.

Nom 2 block location giống y hệt nhau khác mỗi content-type, nhưng ta cũng không nên để if vào trong location để check (với mong muốn cho code gọn hơn), lí do là vì If is Evil... when used in location context. Bạn có thể dùng map để làm điều đó, nhưng nó vượt ngoài phạm vi ta đang trao đổi 😃

Các file .js, .css khi chạy production để tối ưu nhất bạn nên để nó ở phía Nginx chứ không nên proxy hết cả vào PHP-FPM làm gì, PHP-FPM tốt nhất nên chỉ để chạy code PHP như cấu hình mặc định của nó vậy (đoạn security.limit_extensions trong file www.conf), Nginx serve các tài nguyên static này (css, js) rất tốt và tối ưu. Đó là lí do vì sao bài này và thực tế mình làm thì luôn chọn mount source code vào Nginx

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 11 4, 2020 2:58 SA

cam on ban da support ak

0
Avatar
đã bình luận cho bài viết
thg 11 4, 2020 2:56 SA

Thank bạn đã chia sẻ bài viết rất hữu ích. Bạn cho mình hỏi thêm ở mục 2. Script đó có độc lập không? với.

Ở đây bạn nói là dùng async để quá trình loadexecute script song song, tuy nhiên ở chỗ đầu bài viết đoạn giả thích về <script async> mình thấy 2 quá trình anỳ có thực thi song song đâu, nó chờ tải file về rồi mới execute mà nhỉ ?

0

@nguyenxuandat252 có vẻ b vẫn chưa hiểu case này 😃))

0
thg 11 4, 2020 2:11 SA

@maitrungduc1410 nhưng của mình nếu ko mount vào sever web thì ko đọc được file css, js. Bạn có thể giải thích tại sao được ko, hoặc có cách nào khắc phục ngoài việc phải mount vào nginx ko nhỉ.

0
thg 11 4, 2020 2:06 SA

@hoangkim1982

Sau comment của bạn mình mới nhận ra do file cấu hình Nginx ở location ~ \.php$ mình đang để là try_files $uri =404 do vậy Nginx sẽ cố gắng tìm file .php và thực thi do vậy dẫn tới lỗi 404. Bỏ dòng này đi thì sẽ chạy bình thường không cần mount code vào service webserver như bạn nói.

Luôn có những điều mới mình nhận ra sau những comment như của bạn. cám ơn bạn nhé 😃

0
thg 11 4, 2020 1:52 SA

@maitrungduc1410 của mình ko cần mout sang server web vẫn chạy bình thường nhé, chỉ có điều nó chỉ đọc được file php còn các file tĩnh như css, js ko đọc được Mình làm theo hướng dẫn này, ko hề có mount sang server web https://kipalog.com/posts/Thu-cai-dat-moi-truong-docker-cho-laravel

0
thg 11 4, 2020 1:03 SA

@hoangkim1982

Bạn không mount source code vào webserver mà vẫn chạy được à bạn? 😃

Luồng request của app PHP với Nginx sẽ là như sau:

User request -> request tới Nginx -> Nginx tìm tới các file .php tương ứng với URL đang request và thực thi -> Nginx proxy request vào PHP-FPM (thông qua FastCGI) -> PHP-FPM tìm tới các file .php và chạy

Do vậy nếu bạn không mount code vào Nginx thì ở bước nginx tìm các file .php sẽ báo lỗi 404:

Screenshot 2020-11-04 at 09.02.51.png

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí