2015-04-02 94 views
18

我需要將laravel 5項目部署到客戶端主機。在共享主機中僅使用FTP部署Laravel 5

我的客戶的計劃是基本託管:沒有cpanel或類似的Linux + MySql(即沒有管理面板)。

我只能通過ftp訪問並且只能訪問名爲www.mycustomerweb.com的文件夾。這意味着我無法在www.mycustomerweb.com文件夾的同一級別創建目錄。只有在它內部(我認爲它被稱爲共享主機)。

一年前,我部署Laravel 4這樣做的一個項目:

  1. 擺脫公共文件夾的內容移動到根文件夾和更新的index.php和bootstrap.php中
  2. 完成全項目在本地(與Xampp)
  3. 通過ftp上傳所有文件到www.myclientweb.com。

我的問題是:

  1. 難道我做的一切都還好嗎與laravel 4項目?我是否可能陷入安全問題(我的意思是,網站安全)?

  2. 如何將laravel 5項目部署到同一站點?在Laravel 5,我有Laravel 4

沒有我無法擺脫公用文件夾的現在,我已經建立了Laravel 5的全新安裝在本地主機上,然後我上傳的所有文件到www。 myclientweb.com文件夾通過ftp:

這肯定是不正確的做法...

我已經通過網絡和#1,沒有運氣很長的搜索。

真的很有幫助。

感謝您的閱讀。

+2

我想你可以把一個.htaccess在根項目文件夾拒絕訪問一切,它重定向到公用文件夾。我不知道你會怎麼做,但我認爲,如果你谷歌,你可以找到一些完成。 – hfingler 2015-04-02 03:37:08

+0

我做了什麼,聯繫託管公司告訴他們你需要在「www.mycustomerweb.com文件夾/公共」的根目錄,並將所有東西都複製到服務器上......這是最簡單的方法。祝你好運,與託管公司解決這個問題... – Kyslik 2015-04-02 08:05:08

+2

無論你爲laravel 4做什麼,爲laravel 5做同樣的事情。沒有區別。 – itachi 2015-04-02 09:19:56

回答

1

L4和L5之間沒有區別,所以您對L4做的是同樣的事情。

+1

無論如何,你應該以某種方式保護根文件,記住這一點。 – giovannipds 2016-05-13 21:55:44

2

如果你嘗試運行Laravel 5.1到一個共享的虛擬主機空間,或者您正試圖把你的laravel 5/5.1到您共同主辦這樣一個子目錄,您可以訪問它像這樣:

http://mywebsite.com/mylaravel/ 

所以這個答案是給你的,首先確保你符合

Laravel 5。1個要求:

- PHP 5.5 
- PHP extension Mcrypt 
- PHP extension Mbstring 
- PHP extension OpenSSL 

這兩個教程爲您提供:

Link 1

Link 2

+0

非常感謝您的回答。不幸的是,我不能創建不能從網上訪問的目錄。我的意思是,我只有一個文件夾來放置我的所有文件。無論如何,@itachi告訴我要像L4一樣工作。謝謝! – 2015-06-27 01:09:12

+0

我只是將我的公共'文件夾'重命名爲'public_html'。並更改bootstrap文件,這是正確的方式laravel 5.1 + – pvaitonis 2015-08-31 19:19:08

7

UPDATE
這是一個危險的過程。通過使用它,您可以爲惡意用戶提供查找錯誤的權限。像http://project-url/storage/logs/laravel.log仍然是開放的。


以前的答案:
那些誰很難檢查意見, @Andrew F.已經給出了答案。
但他錯過了一些其他文件,如作曲家和包。
已格式化答案是:

  1. 將公共文件中的每個文件移動到父文件夾。
  2. index.php中的更新路徑。
  3. 添加以下行爲.htaccess:
    RewriteRule ^(server\.php|gulpfile\.js|\.env|composer.*|package.*) - [F,L,NC]

+0

我得到了一個500內部服務器錯誤與此。 – giovannipds 2016-05-13 21:50:18

+0

你使用的是5.1嗎? @GiovanniPiresdaSilva – 2016-05-13 22:05:46

+0

我幾乎可以肯定我是@ ssi-anik。我不知道,哈哈,但我已經知道了這一點。對不起如果我以前沒有看到你的快速回復。不管怎麼說,還是要謝謝你。 =) – giovannipds 2016-07-04 18:49:15

9
  1. 我創建了一個名爲 「保護」
  2. 移動以外的所有 「公共」 文件夾到 「保護」 文件夾
  3. 移動新的文件夾所有在「公共」文件夾內的根
  4. 編輯根文件夾中的index.php(來自公共文件夾),

編輯require __DIR__.'/../bootstrap/autoload.php';require __DIR__.'/protected/bootstrap/autoload.php';

還編輯$app = require_once __DIR__.'/../bootstrap/app.php';$app = require_once __DIR__.'/protected/bootstrap/app.php';

+1

如果你不會通過.htaccess以某種方式保護該文件夾,那麼該指南只會僞造一些保護......我不推薦用這種方式。 – giovannipds 2016-05-13 21:52:16

+0

@giovannipds您可以請與htaccess共享某種方式來保護該文件夾。 – Noitidart 2017-09-10 22:57:40

+0

我不行。首先,我建議你現在擺脫這樣的託管。其次,您可以通過'.htaccess'處的URL重定向規則來管理這種情況,並根據目錄和/或擴展名進行權限管理。這取決於你的項目/框架,我沒有現成的Laravel代碼。這只是不正確的方式。最好的辦法是擺脫這樣的主機,這很重要。 – giovannipds 2017-10-12 13:31:50