Laravel 5 App on Linux Server 上的共享主機

預設情況下,Laravel 專案的 public 資料夾公開了應用程式的內容,任何人都可以從任何地方請求該應用程式的內容,其他應用程式程式碼對於沒有適當許可權的任何人來說是不可見的或無法訪問的。

在你的開發機器上開發應用程式之後,需要將其推送到生產伺服器,以便可以從任何地方通過網際網路訪問 - 對吧?

對於大多數應用程式/網站,首選是使用託管服務提供商(如 GoDaddy,HostGator 等)的共享託管包,主要是因為成本低。

注意 :你可以要求你的提供商手動更改 document_root ,因此你只需將 Laravel 應用程式上傳到伺服器(通過 FTP),請求將 root 更改為 {app} / public ,你應該做得很好。

但是,這樣的共享主機軟體包在終端訪問和檔案許可權方面確實存在限制。預設情況下,必須將其應用/程式碼上傳到其共享主機帳戶上的 public_html 資料夾。

因此,如果你想將 Laravel 專案上傳到共享主機帳戶,你會怎麼做?你應該將整個應用程式(資料夾)上傳到共享主機帳戶的 public_html 資料夾嗎? - 肯定沒有

因為 public_html 資料夾中的所有內容都可以“公開地,即任何人”訪問,這將是一個很大的安全風險。

將專案上傳到共享主機帳戶的步驟 - Laravel 方式

步驟 1
在與 public_html 資料夾相同的級別上建立一個名為 laravel(或任何你喜歡的任何內容)的資料夾。

Eg:  
/
|--var  
    |---www
        |----laravel       //create this folder in your shared hosting account
        |----public_html  
        |----log  

步驟 2
laravel 資料夾(在伺服器主機 - 共享主機帳戶)上的 laravel 專案(在開發機器上)複製除 public 資料夾之外的所有內容。
你可以使用:

  • C-panel:這將是最慢的選擇
  • FTP 客戶端:像 FileZilla 一樣連線到你的共享主機帳戶,並通過 FTP 上傳傳輸你的檔案和資料夾
  • 對映網路驅動器:你還可以在開發計算機上建立對映的網路驅動器,以使用“ ftp:// your-domain-name ”作為網路地址連線到共享主機帳戶的根資料夾。

步驟 3
開啟 laravel 專案的 public 資料夾(在開發機器上),複製所有內容並貼上到 public_html 資料夾(在伺服器主機上 - 共享主機帳戶)。
步驟 4
現在開啟共享主機帳戶(在 cpanel 編輯器或任何其他連線的編輯器中)的 public_html 資料夾中的 index.php 檔案,並且:

更改:

require __DIR__.'/../bootstrap/autoload.php';   

至:

require __DIR__.'/../laravel/bootstrap/autoload.php';  

並改變:

$app = require_once __DIR__.'/../bootstrap/app.php';

至:

$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

儲存並關閉

步驟 5
現在轉到 laravel 資料夾(在共享主機帳戶 - 伺服器上)並開啟 server.php 檔案

更改

require_once __DIR__.'/public/index.php';

至:

require_once __DIR__.'../public_html/index.php';  

儲存並關閉

步驟 6
設定 laravel/storage 資料夾的檔案許可權(遞迴)以及共享主機帳戶中的所有檔案,子資料夾和檔案 - 伺服器到 777
注意: 小心 linux 中的檔案許可權,它們就像雙刃劍,如果使用不當,它們可能會使你的應用容易受到攻擊。要了解 Linux 檔案許可權,你可以閱讀 https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions

第 7 步

由於本地/開發伺服器的 .env 檔案被 git 忽略,因此它應該被忽略,因為它包含所有環境變數,包括 APP_KEY,並且不應該通過將其推入儲存庫來公開它。你還可以看到 .gitignore 檔案中提到了 .env,因此它不會將其上傳到儲存庫。

完成上述所有步驟後,在 laravel 資料夾中建立一個 .env 檔案,並將你使用的所有環境變數從本地/開發伺服器的 .env 檔案新增到生產伺服器的 .env 檔案中。

甚至在 laravel 應用程式的 config 資料夾中也有像 app.phpdatabase.php 這樣的配置檔案,它在 env() 的第二個引數中預設定義了這些變數,但是不對這些檔案中的值進行硬編碼,因為它會影響使用者的配置檔案。拉你的儲存庫。所以建議手動建立 .env 檔案!

另外 laravel 提供了 .env-example 檔案,你可以將其用作參考。

而已。

現在,當你訪問使用伺服器配置為域的 URL 時,你的 laravel 應用程式應該像在 localhost - development 機器上一樣工作,同時應用程式程式碼仍然是安全的,沒有適當檔案許可權的任何人都無法訪問。