|
| 1 | +# 如何在共享主机上部署Laravel应用程序 |
| 2 | +[](README.md) |
| 3 | +[](README-es.md) |
| 4 | +[](README-vi.md) |
| 5 | +[](README-zh_CN.md) |
| 6 | + |
| 7 | +本简要指南介绍如何在共享主机上部署Laravel和Lumen应用程序。 |
| 8 | + |
| 9 | +本指南有一个更加简明的版本(也许你已经读过),阅读该指南请移步"[在共享主机上部署Laravel 5应用程序的简单指南(英文)](https://medium.com/laravel-news/the-simple-guide-to-deploy-laravel-5-application-on-shared-hosting-1a8d0aee923e#.7y3pk6wrm)" |
| 10 | + |
| 11 | +## 系统要求 |
| 12 | + |
| 13 | +尝试在共享主机上部署Laravel应用程序之前,需要确保主机服务提供适合[Laravel要求](https://laravel.com/docs/5.2#server-requirements)的环境。 例如,Laravel 5.2的基本要求如下: |
| 14 | + |
| 15 | +* PHP >= 5.5.9 |
| 16 | +* OpenSSL PHP 扩展 |
| 17 | +* PDO PHP 扩展 |
| 18 | +* Mbstring PHP 扩展 |
| 19 | +* Tokenizer PHP 扩展 |
| 20 | + |
| 21 | +总之,具体取决于你想安装的Laravel版本,请检查相应版本的[Laravel文档的服务器要求页面](https://laravel.com/docs/master)。 |
| 22 | + |
| 23 | +**接下来,你必须拥有虚拟主机的SSH访问权限。否则下面的内容都可以忽略。** |
| 24 | + |
| 25 | +除了PHP和上述必备扩展,下列实用程序可以使部署更加容易。 |
| 26 | + |
| 27 | +* [Git](https://git-scm.com/) |
| 28 | +* [Composer](https://getcomposer.org/) |
| 29 | + |
| 30 | +有了这些就好办了。接下来,请参阅以下内容,详细了解部署Laravel应用程序的更多信息。 |
| 31 | + |
| 32 | +## 部署说明 |
| 33 | + |
| 34 | +首先,让我们来了解如何组织Laravel应用程序文件结构。 一开始,您的虚拟主机用户文件夹下,会有类似下列目录和文件: |
| 35 | + |
| 36 | +```bash |
| 37 | +.bash_history |
| 38 | +.bash_logout |
| 39 | +.bash_profile |
| 40 | +.bashrc |
| 41 | +.cache |
| 42 | +.cpanel |
| 43 | +.htpasswds |
| 44 | +logs |
| 45 | +mail |
| 46 | +public_ftp |
| 47 | +public_html |
| 48 | +.ssh |
| 49 | +tmp |
| 50 | +etc |
| 51 | +www -> public_html |
| 52 | +... |
| 53 | +``` |
| 54 | + |
| 55 | +对于与主域名绑定的主账户,前端代码应该保存在“public_html”或“www”目录中。 我们当然不想将 *Laravel文件* (如.env 等...)暴露给全世界,所以我们要把它们放在其他目录中。 |
| 56 | + |
| 57 | +创建一个与“public_html”或“www”平行的目录,将它命名为`projects`或其他适合的名字。 |
| 58 | + |
| 59 | +```bash |
| 60 | +$ mkdir projects |
| 61 | +$ cd projects |
| 62 | +``` |
| 63 | + |
| 64 | +好了,接下来我们可以利用`git`命令来获取代码。 |
| 65 | + |
| 66 | +```bash |
| 67 | +$ git clone http://[GIT_SERVER]/awesome-app.git |
| 68 | +$ cd awesome-app |
| 69 | +``` |
| 70 | + |
| 71 | +下一步是要将`awesome-app/public`目录映射到`www`目录。这个时候符号连接(symbolic link)非常有用。不过,首先我们需要备份`public`文件夹。 |
| 72 | + |
| 73 | +```bash |
| 74 | +$ mv public public_bak |
| 75 | +$ ln -s ~/www public |
| 76 | +$ cp -a public_bak/* public/ |
| 77 | +$ cp public_bak/.htaccess public/ |
| 78 | +``` |
| 79 | + |
| 80 | +因为我们把`www`目录映射成项目的*虚拟*`public`目录,所以,我们需要编辑`~/www/index.php`,更新文件路径: |
| 81 | + |
| 82 | +```diff |
| 83 | +- require __DIR__.’/../bootstrap/autoload.php’; |
| 84 | ++ require __DIR__.'/../projects/awesome-app/bootstrap/autoload.php'; |
| 85 | + |
| 86 | +- $app = require_once __DIR__.’/../bootstrap/app.php’; |
| 87 | ++ $app = require_once __DIR__.'/../projects/awesome-app/bootstrap/app.php'; |
| 88 | +``` |
| 89 | + |
| 90 | +更新后的文件应该是这样: |
| 91 | + |
| 92 | +```php |
| 93 | +require __DIR__.'/../projects/awesome-app/bootstrap/autoload.php'; |
| 94 | + |
| 95 | +$app = require_once __DIR__.'/../projects/awesome-app/bootstrap/app.php'; |
| 96 | +``` |
| 97 | + |
| 98 | +好了,麻烦的部分到此结束。接下来就似乎一些基本的Laravel设置了。首先,确保`storage`目录可写: |
| 99 | + |
| 100 | +```bash |
| 101 | +$ chmod -R o+w storage |
| 102 | +``` |
| 103 | + |
| 104 | +**然后,编辑`.env`文件,确保配置正确。这步不要忘记!** |
| 105 | + |
| 106 | +最后,使用**composer**来安装或更新必要的依赖包,并添加必要的缓存文件: |
| 107 | + |
| 108 | +```bash |
| 109 | +$ php composer install |
| 110 | +$ php composer dumpautoload -o |
| 111 | +$ php artisan config:cache |
| 112 | +$ php artisan route:cache |
| 113 | +``` |
| 114 | + |
| 115 | +**恭喜!到此,你已成功在共享虚拟主机上设置Laravel应用程序。** |
| 116 | + |
| 117 | +## 常见问题 |
| 118 | + |
| 119 | +> **1. 如何获取我的帐户的SSH访问权限?** |
| 120 | +
|
| 121 | +请联系您的主机客服,确认您的身份后,您将立即可以获得SSH访问权限。 |
| 122 | + |
| 123 | +> **2. git在哪里? 我怎么找不到。** |
| 124 | +
|
| 125 | +在CPanel主机服务中,`git`一般安装在`/usr/local/cpanel/3rdparty/bin/git`。所以,如果想要使用`git`命令,则要提供`git`的完整路径。 当然,也可以创建别名以方便使用: |
| 126 | + |
| 127 | +```bash |
| 128 | +alias git="/usr/local/cpanel/3rdparty/bin/git" |
| 129 | +``` |
| 130 | + |
| 131 | +> **3. 如何安装composer?** |
| 132 | +
|
| 133 | +可以使用FTP或SCP命令来上传将下载好的`composer.phar`上传到虚拟主机。也可以直接使用`wget`或`curl`在主机上直接下载: |
| 134 | + |
| 135 | +```bash |
| 136 | +$ wget https://getcomposer.org/composer.phar |
| 137 | +``` |
| 138 | + |
| 139 | +或者 |
| 140 | + |
| 141 | +```bash |
| 142 | +$ curl -sS https://getcomposer.org/installer | php — –filename=composer |
| 143 | +``` |
| 144 | + |
| 145 | +> **4. 这个指南可以用于Lumen吗?** |
| 146 | +
|
| 147 | +Laravel和Lumen就像一对双胞胎,所以Lumen也适用。 |
| 148 | + |
| 149 | +> **5. 我尝试使用`composer`命令,但什么也没显示。发生了什么?** |
| 150 | +
|
| 151 | +运行`composer`需要提供php环境信息。也就是说,在某些虚拟主机上不能直接运行`composer`。要运行`composer`,需要使用如下命令: |
| 152 | + |
| 153 | +```bash |
| 154 | +$ php -c php.ini composer [命令] |
| 155 | +``` |
| 156 | + |
| 157 | +> **6. 怎么找到`composer`需要加载的`php.ini`文件?** |
| 158 | +
|
| 159 | +你可以将默认`php.ini`文件复制过来。这个文件一般保存在`/usr/local/lib/php.ini`。当然也可以用这个命令来查找: |
| 160 | + |
| 161 | +```bash |
| 162 | +$ php -i | grep "php.ini" |
| 163 | +``` |
| 164 | + |
| 165 | +## 测试可用的提供商 |
| 166 | + |
| 167 | +经测试,以下共享主机服务提供商100%可部署Laravel应用。 |
| 168 | + |
| 169 | +* [NameCheap](https://www.namecheap.com/) |
| 170 | +* [JustHost](https://www.justhost.com/) |
| 171 | +* [bluehost](https://www.bluehost.com/) |
| 172 | +* [GoDaddy](https://godaddy.com/) |
| 173 | +* [HostGator](http://www.hostgator.com/) |
| 174 | +* [GeekStorage](https://www.geekstorage.com/) |
| 175 | +* [Site5](https://www.site5.com/) |
| 176 | + |
| 177 | +在[GeekStorage](https://www.geekstorage.com/)的共享服务上也可用,不过要通过`.htaccess` 的 |
| 178 | +`AddHandler application/x-httpd-php56.php`来启用 PHP 5.6。 |
| 179 | + |
| 180 | +如果确定其他提供商可用,欢迎添加到此列表。 |
| 181 | + |
| 182 | +## 仍有问题? |
| 183 | + |
| 184 | +如果采用上述步骤还没有解决安装问题,请提出你的详细[问题](https://github.com/petehouston/laravel-deploy-on-shared-hosting/issues),我会来帮你。 |
| 185 | + |
| 186 | +## 如何贡献 |
| 187 | + |
| 188 | +欢迎fork这个项目,也欢迎提交[pull request](https://github.com/petehouston/laravel-deploy-on-shared-hosting/pulls). |
0 commit comments