07/01/2019, 14:43

Deploy Laravel web lên Shared Hosting

Nếu bạn đã dùng Hostgator shared web hosting, bạn sẽ thấy đây là dịch vụ web tốt, ổn định và mạnh mẽ, chi phí lại thấp, đúng như danh tiếng lâu đời của nó. Có điều các dịch vụ tích hợp liên quan của Hostgator thì rất tệ, cùng với việc các cloud service hiện nay rất phổ biến, làm mất dần lợi thế ...

Nếu bạn đã dùng Hostgator shared web hosting, bạn sẽ thấy đây là dịch vụ web tốt, ổn định và mạnh mẽ, chi phí lại thấp, đúng như danh tiếng lâu đời của nó. Có điều các dịch vụ tích hợp liên quan của Hostgator thì rất tệ, cùng với việc các cloud service hiện nay rất phổ biến, làm mất dần lợi thế của Hostgator. Nhưng đối với tôi, Hostgator vẫn là một lựa chọn tốt, hiệu quả mà lại rẻ, những vấn đề với các dịch vụ tích hợp nếu có sự cố thì đã có technical support rất chuyên nghiệp được chia theo level rõ ràng.
Shared web hosting của Hostgator có một vấn đề mà tôi phải viết bài này, đó là nó ko có git. Một số đồng nghiệp của tôi upload qua ftp, thậm chí upload cả library như vendor hay node_modules lên, đây không phải cách hay, đặc biệt là khi bạn cần update tính năng mới hay bảo trì ứng dụng web trên shared hosting này.

SSHFS mount đối với Hostgator shared web hosting tôi cho là giải pháp tối ưu. Với shared hosting không hỗ trợ kết nối SSH, bạn có thể dùng CurlFtpFS hoặc cách ở mục 5., ngoài ra khi không có SSH bạn cũng sẽ khó khăn với việc chạy compose và php artisan (sẽ có cách riêng để giải quyết vấn đề này).
Bắt đầu với việc cài SSHFS:

apt-get install sshfs

Trên máy của bạn, tạo một folder để mount tới shared hosting của bạn:

mkdir /mnt/mywebsite

Thực hiện mount folder trên shared hosting vào folder bạn vừa tạo:

sshfs [user@]hostname:[host_folder] /mnt/mywebsite

Lưu ý rằng host_folder phải là folder có chứa folder con là public_html, điều này rất quan trọng.
Sau khi mount xong bạn có thể clone code vào folder mount /mnt/mywebsite:

git clone <mywebsite_repo>

Sau đó checkout branch master (bạn có thể clone thẳng branch master, nhưng việc này không được khuyến khích):

git checkout master

Xong. Giờ đây bạn có thể dùng git để làm việc với shared hosting của giống như làm việc trên máy của bạn vậy.

Thật may là SSH được hỗ trợ đối với shared hosting của Hostgator.
Bây giờ bạn có thể ssh vào shared hosting để cài đặt và sử dụng composer.
Bạn cần download file composer.phar tương ứng với PHP version trên hosting, ví dụ:

wget https://getcomposer.org/download/1.7.3/composer.phar

Sau đó chạy composer update:

php composer.phar install --optimize-autoloader --no-dev

Nếu hosting của bạn không hỗ trợ kết nối qua ssh, vấn đề sẽ phức tạp hơn nhiều.
Quay trở về máy tính của bạn, trước hết PHP version trên máy bạn phải giống hoặc tương đồng với PHP trên shared hosting.
Bạn thực hiện lệnh composer trong folder /mnt/mywebsite ngay trên máy của bạn:

composer install --optimize-autoloader --no-dev

Quả thật là rất chậm. Sẽ nhanh hơn rất nhiều nếu thay vì dùng máy tính của bạn bằng sử dụng một server trung gian có cùng network hoặc cùng region với shared hosting cần cài đặt.

Có SSH thì không có gì để nói, nhưng nếu không có SSH thì đành phải thực hiện trên máy của bạn.
Generate key:

php artisan key:generate

Caching:

php artisan config:cache
php artisan route:cache

Còn cái này thì sao (sau khi cấu hình file .env rồi nhé):

php artisan migrate

Oh, no... không được rồi, bạn đang ở trên máy local. Sẽ dễ dàng hơn nếu tạm thời có thể remote access tới database trên hosting của bạn, bạn có thể thay tham số để có thể remote db trong file .env. Nhưng trớ trêu thay việc remote db thường ko được cho phép.
Đành phải làm thủ công vậy, sử dụng db trên máy local rồi sau đó dump lên db của shared hosting.
Khá là mất công, vậy nên tôi mới suggest bạn dùng shared hosting của Hostgator, hịn chả kém gì AWS Linux AMI mà lại rẻ và mạnh mẽ.
alt text

Nhưng tôi chưa thử.
Bạn thử đi.
Đó là biến shared hosting của bạn thành remote repository, bạn chỉ cần add nó vào repository trên local của bạn rồi push lên là được.
Theo cách này việc push code lên hosting sẽ dễ dàng như upload code qua ftp account vậy. Dù sao theo cách này bạn vẫn phải tracking modified code theo cách trên.

Nếu trong quá trình thực hiện theo những cách trên gặp vấn đề gì bạn nhớ ping tôi nhé, tôi sẽ giúp bạn hoặc nhận thêm một số thủ thuật để update cho bài viết này.
Tham khảo:
https://github.com/libfuse/sshfs

http://curlftpfs.sourceforge.net/

Bài viết này được trích dẫn từ blog nội bộ công ty KAOPIZ - カオピーズ
Bài gốc: http://kipalog.kaopiz.com/posts/mSuZ1KuwZiOWJCB5DONvJg

0