|
| 1 | +# Phương pháp triển khai ứng dụng Laravel trên shared hosting |
| 2 | + |
| 3 | +Hướng dẫn đơn giản để triển khai ứng dụng Laravel và Lumen trên shared hosting. |
| 4 | + |
| 5 | +Bạn có thể xem bản hướng dẫn nhanh (chắc hẳn nhiều trong số bạn đã từng đọc qua), trên medium, "[The simple guide to deploy Laravel 5 application on shared hosting](https://medium.com/laravel-news/the-simple-guide-to-deploy-laravel-5-application-on-shared-hosting-1a8d0aee923e#.7y3pk6wrm)" |
| 6 | + |
| 7 | +## Yêu cầu |
| 8 | + |
| 9 | +Before trying to deploy a Laravel application on a shared hosting, you need to make sure that the hosting services provide a fit [requirement to Laravel](https://laravel.com/docs/5.2#server-requirements). Basically, following items are required for Laravel 5.2: |
| 10 | +Trước khi thực hiện triển khai ứng dụng Laravel trên shared hosting, bạn cần đảm bảo nhà cung cấp dịch vụ cho bạn môi trường với [các yêu cầu cần thiết cho Laravel](https://laravel.com/docs/5.2#server-requirements). Về cơ bản, yêu cầu cho Laravel 5.2 như sau: |
| 11 | + |
| 12 | +* PHP >= 5.5.9 |
| 13 | +* OpenSSL PHP Extension |
| 14 | +* PDO PHP Extension |
| 15 | +* Mbstring PHP Extension |
| 16 | +* Tokenizer PHP Extension |
| 17 | + |
| 18 | +Tuy nhiên, yêu cầu này còn phụ thuộc vào phiên bản của Laravel bạn muốn sử dụng, hãy đọc tài liệu về [yêu cầu tương ứng của từng phiên bản Laravel](https://laravel.com/docs/master). |
| 19 | + |
| 20 | +**Tiếp đến, bạn cần có quyền truy cập vào SSH tới tài khoản hosting của bạn; nếu không mọi thứ ở đây sẽ trở nên vô nghĩa.** |
| 21 | + |
| 22 | +Ngoài các yêu cầu về phiên bản PHP và các extensions cần thiết, bạn cần có thêm một vài công cụ để cho việc triển khai được dễ dàng hơn. |
| 23 | + |
| 24 | +* [Git](https://git-scm.com/) |
| 25 | +* [Composer](https://getcomposer.org/) |
| 26 | + |
| 27 | +Theo tôi như vậy là đủ. Hãy xem các phần bên dưới để tìm hiểu phương thức triển khai. |
| 28 | + |
| 29 | +## Hướng dẫn |
| 30 | + |
| 31 | +Cùng bắt đầu bằng việc tìm hiểu về cách chúng ta nên quản lý cấu trúc thư mục của ứng dụng Laravel. Đầu tiên, cùng nhìn xem danh sách các files và thư mục bạn có trên tài khoản. |
| 32 | + |
| 33 | +``` |
| 34 | +.bash_history |
| 35 | +.bash_logout |
| 36 | +.bash_profile |
| 37 | +.bashrc |
| 38 | +.cache |
| 39 | +.cpanel |
| 40 | +.htpasswds |
| 41 | +logs |
| 42 | +mail |
| 43 | +public_ftp |
| 44 | +public_html |
| 45 | +.ssh |
| 46 | +tmp |
| 47 | +etc |
| 48 | +www -> public_html |
| 49 | +... |
| 50 | +``` |
| 51 | + |
| 52 | +Với tài khoản chính được gắn với domain chính của bạn, phần front-end sẽ phải nằm trong thư mục `public_html` hoặc `www`. Vì chúng ta không muốn để lộ các *thông tin nhạy cảm của Laravel* (ví như các file .env, v..v..) ra bên ngoài, chúng ta sẽ giấu chúng đi. |
| 53 | + |
| 54 | +Tạo một thư mục mới để chứa toàn bộ code, đặt tên là `projects` hay bất cứ tên nào bạn muốn. |
| 55 | + |
| 56 | +``` |
| 57 | +$ mkdir projects |
| 58 | +$ cd projects |
| 59 | +``` |
| 60 | + |
| 61 | +Từ đây, chúng ta sẽ sử dụng câu lệnh git để lấy code về, |
| 62 | + |
| 63 | +``` |
| 64 | +$ git clone http://[GIT_SERVER]/awesome-app.git |
| 65 | +$ cd awesome-app |
| 66 | +``` |
| 67 | + |
| 68 | +Bước tiếp theo là làm cho thư mục `awesome-app/public` được tham chiếu tới `www`, symbol link sẽ hỗ trợ chúng ta việc này, nhưng chúng ta cần backup thư mục `public` trước đã. |
| 69 | + |
| 70 | +``` |
| 71 | +$ mv public public_bak |
| 72 | +$ ln -s ~/www public |
| 73 | +$ cp -a public_bak/*.* public/ |
| 74 | +$ cp public_bak/.htaccess public/ |
| 75 | +``` |
| 76 | + |
| 77 | +Phần khoai nhất đã xong, phần còn lại sẽ là các bước cơ bản để thiết lập Laravel. Cấp quyền ghi cho thư mục `storage` là một việc quan trọng, |
| 78 | + |
| 79 | +``` |
| 80 | +$ chmod -R o+w storage |
| 81 | +``` |
| 82 | + |
| 83 | +**Hãy chỉnh cấu hình trong file `.env`. Đừng bỏ quên điều này!** |
| 84 | + |
| 85 | +Cuối cùng, hãy cập nhật các packages cần thiết cho project Laravel sử dụng **composer** và thêm các cache cần thiết, |
| 86 | + |
| 87 | +``` |
| 88 | +$ php composer install |
| 89 | +$ php composer dumpautoload -o |
| 90 | +$ php artisan config:cache |
| 91 | +$ php artisan route:cache |
| 92 | +``` |
| 93 | + |
| 94 | +**Chúc mừng! Bạn đã triển khai thành công một ứng dụng Laravel trên một dịch vụ shared hosting..** |
| 95 | + |
| 96 | +## FAQs |
| 97 | + |
| 98 | +> **1. Làm thế nào để lấy được quyền sử dụng SSH cho tài khoản của tôi?** |
| 99 | +
|
| 100 | +Hãy liên hệ trực tiếp với bên hỗ trợ của dịch vụ bạn sử dụng, họ sẽ cần xác nhận thông tin của bạn và sẽ cho bạn quyền sử dụng SSH một cách nhanh chóng. |
| 101 | + |
| 102 | +> **2. Git nằm ở đâu? Tôi không tìm thấy.** |
| 103 | +
|
| 104 | +`git` thường được đặt ở vị trí này trong các dịch vụ hosting sử dụng CPanel, `/usr/local/cpanel/3rdparty/bin/git`. Vì vậy, bạn cần phải gõ đường dẫn đầy đủ tới `git` nếu bạn muốn thực thi một câu lệnh; hoặc là bạn của thể tạo một alias cho tiện. |
| 105 | + |
| 106 | +``` |
| 107 | +alias git="/usr/local/cpanel/3rdparty/bin/git" |
| 108 | +``` |
| 109 | + |
| 110 | +> **3. Làm thế nào để lấy composer?** |
| 111 | +
|
| 112 | +Bạn có thể sử dụng FTP hay SCP để upload file `composer.phar` lên host sau khi download trên máy cá nhân. Hoặc cũng có thể sử dụng `wget` hay `curl` để download file trực tiếp về host. |
| 113 | + |
| 114 | +``` |
| 115 | +$ wget https://getcomposer.org/composer.phar |
| 116 | +
|
| 117 | +hoặc |
| 118 | +
|
| 119 | +$ curl -sS https://getcomposer.org/installer | php — –filename=composer |
| 120 | +``` |
| 121 | + |
| 122 | +> **4. Cách này có thực hiện được cho Lumen hay không?** |
| 123 | +
|
| 124 | +Về cơ bản thì Laravel và Lumen như là anh em sinh đôi, vì vậy có thể áp dụng được với Lumen. |
| 125 | + |
| 126 | +> **5. Tôi thử chạy `composer` nhưng mà không thấy hiển thị gì cả. Vấn đề ở chỗ nào vậy?** |
| 127 | +
|
| 128 | +Bạn cần cung cấp đường dẫn tới file cầu hình PHP để thực thi `composer`, nghĩa là, bạn không thể thực thi `composer` trực tiếp trên host. Vì thể để thực thi `composer`, bạn sẽ phải thực hiện như câu lệnh sau, |
| 129 | + |
| 130 | +``` |
| 131 | +$ php -c php.ini composer [COMMAND] |
| 132 | +``` |
| 133 | + |
| 134 | +> **6. Tôi có thể lấy `php.ini` ở đâu để thực thi `composer`?** |
| 135 | +
|
| 136 | +Bạn có thể copy file cấu hình `php.ini` mặc định, thường nằm tại `/usr/local/lib/php.ini`, hoặc có thể sử dụng câu lệnh sau để tìm kiếm, |
| 137 | + |
| 138 | +``` |
| 139 | +$ php -i | grep "php.ini" |
| 140 | +``` |
| 141 | + |
| 142 | +## Danh sách các nhà cung cấp dịch vụ đã được thực hiện kiểm tra và hoạt động |
| 143 | + |
| 144 | +Các dịch vụ dưới đây đã được thực hiện kiểm tra và hoạt động 100%. |
| 145 | + |
| 146 | +* [NameCheap](https://www.namecheap.com/) |
| 147 | +* [JustHost](https://www.justhost.com/) |
| 148 | +* [bluehost](https://www.bluehost.com/) |
| 149 | +* [GoDaddy](https://godaddy.com/) |
| 150 | +* [HostGator](http://www.hostgator.com/) |
| 151 | + |
| 152 | +Nếu như bạn tìm thấy nhà cung cấp dịch vụ nào mà cũng hoạt động, hãy chia sẻ, tôi sẽ cập nhật để cho nhiều người khác cùng biết tới. |
| 153 | + |
| 154 | +## Vẫn gặp vấn đề? |
| 155 | + |
| 156 | +Nếu như bạn vẫn thất bại trong việc triển khai ứng dụng Laravel sau khi thực hiện đầy đủ các bước ở trên. Hãy cung cấp cho tôi [nội dung vấn đề của bạn](https://github.com/petehouston/laravel-deploy-on-shared-hosting/issues) một cách chi tiết, tôi sẽ cố gắng để giúp bạn. |
| 157 | + |
| 158 | +## Hướng dẫn đóng góp |
| 159 | + |
| 160 | +Hãy thực hiện fork và gửi một [pull request](https://github.com/petehouston/laravel-deploy-on-shared-hosting/pulls). |
0 commit comments