Total Pageviews

Friday 13 May 2016

用Laravel 5.1 做一个内容管理系统hfblog

首先,我们要知道Laravel是什么,那么请访问: 中文文档
然后推荐一个提问的地方: SegmentFault
最后推荐一个分享的地方: phphub
PS:这会是一个系列,等全部完成后,我把这些内容聚合到一个页里发布.

(01)准备工作

安装:用laravel或compser安装,或直接下载别人打包好的包

  1. Composer的安装,不会上互联网,只能上局域网的话,那就看这里吧Composer 中文网

cd ~
curl -sS https://getcomposer.org/installer | php
上步完成后:



sudo mv composer.phar /usr/local/bin/composer
继续,修改composer全局配置用中国镜像站的数据:



composer config -g repositories.packagist composer http://packagist.phpcomposer.com

  1. 安装Laravel,两种方式:
  • 通过 Laravel 命令安装程序(国内不推荐)



composer global require "laravel/installer=~1.1"
然后将~/.composer/vendor/bin目录加到环境变量里去.
如果想临时使用:



PATH=$PATH:~/.composer/vendor/bin; export PATH
如果想永久有效,Mac下,请编辑sudo vim ~/.bashrc,加入一行:



export PATH="$HOME/.composer/vendor/bin:$PATH"
环境变量设定好后,laravel命令就有效了,此时可以运行laravel new blog来创建一个blog文件夹,里面放着laravel的框架内容
  • 通过Composer安装(推荐,有国内镜像)



composer create-project laravel/laravel --prefer-dist
成功执行会在执行命令的当前目录下生成一个laravel的文件夹,我把它重命名为我想要的名称hfcms
到此为止,laravel已经完整的下载到我想要的目录下了,如果你觉得这一切来的太复杂,可以访问 http://golaravel.com 去下载,不过不推荐直接下载的方式,毕竟后面你总是要用到composer的.

配置

基本配置

  1. 目录权限: 安装好后,请确定storagebootstrap/cache目录具有写权限,这个写权限的意思是,解析你的laravel程序的进程对他们有写权限,我一般会先将他们的权限设置为777:



sudo chmod -R 777 storage bootstrap/cache

  1. 应用秘钥: 安装完 laravel 后,你应该设置一个随机字符串作为应用秘钥.这个字符串的长度应为32位,通过 laravelcomposer安装好的 Laravel ,秘钥已经通过命令:
    key:generate设置了.
    你现在打开目录下面的.env文件就可以看到安装过程中生成的 APP_KEY 了.没有它你的用户session和其他加密数据将 不再安全!
    如果是克隆过来的代码肯定是没有这个key的,可以在网站根目录下运行php artisan key:来生成并设定.
  2. 其他配置: 打开config/app.php:
老办法: 修改'debug' => env('APP_DEBUG', false),'debug' => true,,代码进入生成环境可以再改回来,调试的时候还是把错误显示打开比较好.
新办法: 修改根目录下的.envAPP_DEBUG=true,进入生产环境改为APP_DEBUG=false
再多说一句, env(‘APP_DEBUG’, false)的意思是,调取全局变量,如果有APP_DEBUG属性,就以属性值为整个表达式的返回值,如果没有找到这个属性,默认值为false
修改'locale' => 'en','locale' => 'zh',
修改'fallback_locale' => 'en','fallback_locale' => 'zh',
  1. rewrite配置这里直说nginx,在配置你的nginx里虚拟目录的配置文件里加入(加到server{}里面,我是这么做的):



location / {
    try_files $uri $uri/ /index.php?$query_string;
}
以上所说的各类配置,在Homestead里都已经配置好了
以下内容,你也许不是这么快就会用到,性子急,可以先跳过

环境配置

  1. .env文件
laravel使用了DotEnv类库,全新安装的laravel中,根目录下会有一个.env.example文件,如果根目录下没有.env文件,可以将这个文件重命名为.env.
当laravel收到请求,.env文件的所有变量都会被加载到 $_ENV PHP超全局变量中.我们可以使用env辅助函数来取出变量里面的值.
注意: .env文件最好不要提交到版本控制,毕竟”开发/生产”是不同的环境,应该有不同的.env,不同的环境变量配置.如果是团队开发,.env.example里面可以放环境变量的预留和默认信息,方便他人了解情况.
  1. 获取当前环境变量等
当前环境是通过.env文件的APP_ENV变量决定的.两种访问方式:



// 一般.env里的APP_ENV的值是"APP_ENV=local"
$environment = App::environment();
// 此时 $environment的值应当是"local"
$environment = app()->environment();

配置缓存

为了提升应用的速度,我们可以在laravel根目录运行php artisan config:cache,缓存所有配置文件到一个单一文件中,方便框架更快的加载配置.
注意: 在开发环境中不建议使用,因为配置可能会变,这个命令最好作为部署到生产环境的第一个步骤.

获取配置项

我们使用config这个全局辅助函数来访问配置项.



// app表示的时config目录下的app.php文件,"点"后面的timezone表示在这个配置文件里的配置项
$value = config('app.timezone'); // 默认是'timezone' => 'UTC',所以$value等于UTC
要设定一个配置项,需要传递一个数组进去:



// 意思是设定app.php文件里的timezone选项的值为America/Chicago
config(['app.timezone' => 'America/Chicago']);

应用程序命名

默认情况下,app目录下的命名空间为App,Composer自动加载标准是PSR-4,如果你要更改app为其他名字,比如:Huifeng,在laravel根目录运行命令:



php artisan app:name Huifeng
注意: 重命名你的应用并不是必须的!

维护模式

如果你的应用处于维护模式,当有请求传入时,将显示一个自定义的视图。当你的应用在更新或者维护时,可以方便的做到 “关闭” 站点。
默认的中间件中包含了维护模式的检查。如果当前应用处于维护模式,一个 带有 503 状态码 的 HttpException 异常将被抛出。
  • 开启维护模式:php artisan down
  • 关闭维护模式:php artisan up
503维护模式状态模板:resources/views/errors/503.blade.php
当你的应用处于维护模式,将不会有 队列 Jobs 被处理。这些 Jobs 将在应用关闭维护模式后继续正常处理.

from http://huifeng.me/categories/HFBlog/
https://github.com/wedojava/hfblog.dev

http://laravelcoding.com/blog?tag=L5+Beauty