创设自己的,获取用户地理地点音讯

澳门葡京备用网址 1

自己的博客原文:
http://www.qinblog.net/Article/article/7.html

如何在 CentOS 7 / Ubuntu 15.04 上安装 PHP 框架 Laravel

世家好,那篇小说将要讲述怎样在 CentOS 7 / Ubuntu 15.04 上设置
Laravel。如果你是一个 PHP Web
的开发者,你并不须求考虑什么在琳琅满目标现世 PHP 框架中选择,Laravel
是最轻松启动和运转的,它省时省力,能让您大饱眼福到 web 开发的童趣。Laravel
信奉着一个普世的开发工学,通过不难的指导开创出可尊敬代码是最优先的,你将保证着飞快的开支功能,可以时刻毫不畏惧更改你的代码来改正现有成效。

澳门葡京备用网址 2

Laravel 安装并不麻烦,你假设跟着本作品一步步操作就能在 CentOS 7 依旧Ubuntu 15 服务器上安装。

我们好,这篇小说将要讲述如何在
CentOS 7 /
Ubuntu 15.04 上安装
Laravel。如若您是一个 PHP Web
的开发者,你并不须要考虑如何在灿烂的现代 PHP 框架中拔取,Laravel
是最自在启动和运作的,它省时省力,能让你享受到 web 开发的野趣。Laravel
信奉着一个普世的开销理学,通过不难的点拨开创出可保险代码是最优先的,你将保持着火速的支付效能,可以时刻毫不畏惧更改你的代码来立异现有功效。

自我如今亟需一个用户地域检测来设置用户的默许区域和货币。由 Daniel
Stainback
创制的 torann/geoip 
很好地知足为Laravel 5 项目提供 GeoIP 服务的须要。

前言

laravel 提供了一个心灵手巧的情势,那就是 facade 。框架之中的 DB、Auth、File
等效果也有连锁的 facade 完毕。那么,该怎么写自己的 facade 呢?

1) 服务器需求

在安装 Laravel
前须要安装一些它的依靠前提条件,首要是有些主干的参数调整,比如升级系统到最新版本,sudo
权限和安装看重包。

当您总是到您的服务器时,请确保您能通以下命令能得逞的利用 EPEL
仓库并且升级你的服务器。

澳门葡京备用网址 3

以此 Laravel GeoIP 包协助部分服务,包含默许的 ip-api.com 服务,
一个可下载的 马克斯mind 数据库和 马克斯mind
API。你也可以经过这几个布局轻松地充实一个通用的服务。

Facade 是什么?

第一,facade 并不是 laravel
独有的事物,它就是设计形式中的外观情势(Facade)。
本来,那里就不顾虑太多去钻探外观方式的概念了。那篇小说写的很不错 :
设计格局(九)外观情势Facade(结构型)。
那么,laravel 的 facade 做了怎样?
一如既往的, laravel 落成了外观形式的开关成效,并且动用魔术点子
__callstatic 完毕了静态形式调用、动态创建对象的功力。参考
(合法文档)

当然你或许以为那个概念很空虚,都怎么东西。那么实际上一句话来说,laravel 的
facade 就是将一些职能封装成工具类,而且能以静态格局调用工具类的方法。

CentOS-7

  1. #yum install epel-release
  2. # rpm -Uvh https://dl.Fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  3. # rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  4. #yum update

Laravel 安装并不麻烦,你如若跟着本小说一步步操作就能在 CentOS 7 还是Ubuntu 15 服务器上安装。

这一个包的中央使用是引用 geoip() 接济函数,可接纳性传递 IP
地址参数。上边是一个按照 IP 地址的地址对象的例证:

树立和睦的 facade

率先、以 laravel 5.1 框架,我事先写过的 Geoip facade
为例,说一下怎么去建立自己的 facade。

Ubuntu

  1. #apt-get install python-software-properties
  2. # add-apt-repository ppa:ondrej/php5
  3. #apt-get update
  4. #apt-get install -y php5 mcrypt php5-mcrypt php5-gd

1) 服务器必要

在装置 Laravel
前必要安装一些它的依靠前提条件,紧如果一些为主的参数调整,比如升级系统到最新版本,sudo
权限和装置看重包。

创设自己的,获取用户地理地点音讯。当您总是到您的服务器时,请保管您能通以下命令能得逞的应用 EPEL
仓库并且升级你的服务器。

\Torann\GeoIP\Location {

    #attributes:array [
        'ip'           => '232.223.11.11',
        'iso_code'     => 'US',
        'country'      => 'United States',
        'city'         => 'New Haven',
        'state'        => 'CT',
        'state_name'   => 'Connecticut',
        'postal_code'  => '06510',
        'lat'          => 41.28,
        'lon'          => -72.88,
        'timezone'     => 'America/New_York',
        'continent'    => 'NA',
        'currency'     => 'USD',
        'default'      => false,
    ]
}

下载 geoip 扩展

geoip 是一个得以更具 IP 获取国家、地域、城市音讯的 PHP 增添,基于
maxmind 数据库。 github
在此。

首先,为 laravel 添加 geoip 扩展。
打开 composer.json,添加 “geoip2/geoip2”: “~2.0” 到 require。
品种根目录运行 composer update ( 必要设置 composer )更新一下,geoip
的借助和软件包就被下载到 vendor 文件夹中了。

下一场下载 geoip 看重的数据库,免费库的地址 :
GeoLite2

我下载了 GeoLite2 Country 和 GeoLite2 City 库,放到了 storage/geoipdb
中。

2) 防火墙安装

系统防火墙和 SELinux
设置对于用于产品使用安全来说更加紧要,当您拔取测试服务器的时候可以关闭防火墙,用以下命令行设置
SELinux 成宽容情势(permissive)来担保安装程序不受它们的熏陶。

  1. #setenforce0

CentOS-7

  1. #yum install epel-release
  2. # rpm -Uvh https://dl.Fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  3. # rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  4. #yum update

正如你所看到的,地址对象涵盖部分地点新闻,有助于控制用户的货币,时区和国度
ISO 代码。

建立 facade。

在 app 目录下新建 Facades 文件夹,里面新建 Facades/GeoIP/GeoIP.php 和
Facades/GeoIP/Facade/GeoIP.php
(提议每个成效新建一个文书夹区分,比如我那边给 GeoIP
新建一个文件夹,关于GeoIP 的事物全放到此处)
专注,Facades/GeoIP 下的 GeoIP.php 是您要对 geoip 增添进行包装的类,
Facades/GeoIP/Facade 下的 GeoIP.php 是你的 facade,用来给 laravel
解析选取,那多个公文可以不一致名。

目录结构如图:

Facades/GeoIP/Facade/GeoIP.php 如下

<?php

namespace App\Facades\GeoIP\Facade;

use Illuminate\Support\Facades\Facade;

class GeoIP extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'geoip';
    }
}

注意你的 facade 现在唯有一个措施,重临了一个字符串 ‘geoip’ ,
那么些字符串是一个标明,用来给 laravel 的劳务提供者解析选择的。

Facades/GeoIP/GeoIP.php 如下(吐槽:写的有些随意)

<?php

namespace App\Facades\GeoIP;

use GeoIp2\Database\Reader;

class GeoIP
{
    /**
     * GeoIP country db path (base on storage_path).
     *
     * @var GeoIP
     */
    private $_country_db = 'geoipdb/GeoLite2-Country.mmdb';

    /**
     * GeoIP city db path (base on storage_path).
     *
     * @var GeoIP
     */
    private $_city_db = 'geoipdb/GeoLite2-City.mmdb';

    /**
     * Instance for GeoIP .
     *
     * @var GeoIP
     */
    private $_instance;

    /**
     * Init instance.
     *
     */
    public function init($mode)
    {
        switch ($mode) {
          case 'getCountry':
            $path = $this->_country_db;
            break;
          case 'getCity':
            $path = $this->_city_db;
            break;
          default:
            break;
        }

        $this->_instance = new Reader(storage_path($path));
    }

    /**
     * Get Country infomations.
     *
     * @param  String  $ip
     * @return Array
     */
    public function getCountry($ip)
    {
      $this->init(__FUNCTION__);

      $record = $this->_instance->country($ip);

      // 国家信息
      $data['iso_code'] = $record->country->isoCode;
      $data['country_name'] = $record->country->name;
      $data['country_name_zh_cn'] = $record->country->names['zh-CN'];

      return $data;
    }

 /**
     * Get City infomations.
     *
     * @param  String  $ip
     * @return Array
     */
    public function getCity($ip)
    {
      $this->init(__FUNCTION__);

      $record = $this->_instance->city($ip);

      $data['iso_code'] = $record->country->isoCode;
      $data['country_name'] = $record->country->name;
      $data['country_name_zh_cn'] = $record->country->names['zh-CN'];

      // 省、州信息
      $data['sub_division_name'] = $record->mostSpecificSubdivision->name;
      $data['sub_division_name_zh_cn'] = $record->mostSpecificSubdivision->names['zh-CN'];
      $data['sub_division_code'] = $record->mostSpecificSubdivision->isoCode;

      // 城市信息
      $data['city_name'] = $record->city->name;
      $data['postal_code'] = $record->postal->code;

      // 经纬度
      $data['latitude'] = $record->location->latitude;
      $data['longitude'] = $record->location->longitude;

      return $data;
    }

}

OK,现在 geoip 的常用成效已经封装到点子中了。

3) Apache, MariaDB, PHP 安装

Laravel 安装程序须要已毕安装 LAMP 整个环境,需要分外安装
OpenSSL、PDO,Mbstring 和 Tokenizer 等 PHP 扩张。假使 LAMP
已经运行在你的服务器上你可以跳过这一步,直接确认一些必需的 PHP
插件是不是安装好。

要设置完整 AMP 你要求在和谐的服务器上运行以下命令。

Ubuntu

  1. #apt-get install python-software-properties
  2. # add-apt-repository ppa:ondrej/php5
  3. #apt-get update
  4. #apt-get install -y php5 mcrypt php5-mcrypt php5-gd

设若目标地址没有找到,可采纳一份可配备的备用地址代替,这时 default 参数被装置为 true
。你可以覆盖默认设置,默许配置如下所示:

挂号服务

姣好了 facade 的制造和职能封装,上边就要选用它了。自己创办的 facade 要在
laravel 使用是要拓展登记的,以便 laraval 在开行时能自动注入看重(请看
laravel 的借助注入简介 : laravel 看重注入
大学君)

CentOS

  1. #yum install httpd mariadb-server php56w php56w-mysql php56w-mcrypt php56w-dom php56w-mbstring

要在 CentOS 7 上贯彻 MySQL / 玛丽亚db
服务开机自动启动,你须要周转以下命令。

  1. #systemctl start httpd
  2. #systemctl enable httpd
  3. #systemctl start mysqld
  4. #systemctl enable mysqld

在启动 玛丽亚DB 服务之后,你须要周转以下命令配置一个十足安全的密码。

  1. #mysql_secure_installation

2) 防火墙安装

系统防火墙和 SELinux
设置对于用于产品选用安全来说非凡关键,当你使用测试服务器的时候可以关闭防火墙,用以下命令行设置
SELinux 成宽容情势(permissive)来确保安装程序不受它们的影响。

  1. #setenforce0
'default_location' => [
    'ip' => '127.0.0.0',
    'iso_code' => 'US',
    'country' => 'United States',
    'city' => 'New Haven',
    'state' => 'CT',
    'state_name' => 'Connecticut',
    'postal_code' => '06510',
    'lat' => 41.31,
    'lon' => -72.92,
    'timezone' => 'America/New_York',
    'continent' => 'NA',
    'default' => true,
    'currency' => 'USD',
],

编写服务提供者

在 app/Providers 下新建 FacadesServiceProvider.php
可以手动建,也得以用 artisan 命令来变化,随你喜爱。
app/Providers/FacadesServiceProvider.php 代码如下:

<?php

namespace App\Providers;

use App\Service\ApiService;
use Illuminate\Support\ServiceProvider;

// include the class facade binded
use App\Facades\GeoIP\GeoIP;

class FacadesServiceProvider extends ServiceProvider
{
    /**
     * 在容器中注册绑定。
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('geoip', function ($app) {
            return new GeoIP($app);
        });
    }
}

上面代码可见,服务提供者注册时会注册一个单例,标号为
‘geoip’,也就是大家协调的 facade
再次回到的非凡,然后回调函数会回到一个目标,也就是我们封装 geoip
功能的越发类的实例,不晓得的校友可以看看 laravel
的服务提供者和服务容器相关知识哦。(注意要 use 将 facade
和封装类的命名空间引用一下啊)

Ubuntu

  1. #apt-get install mysql-server apache2 libapache2-mod-php5 php5-mysql

3) Apache, MariaDB, PHP 安装

Laravel 安装程序须要完毕安装 LAMP 整个环境,需求分外安装
OpenSSL、PDO,Mbstring 和 Tokenizer 等 PHP 伸张。如果 LAMP
已经运行在您的服务器上您可以跳过这一步,直接肯定一些必备的 PHP
插件是还是不是安装好。

要设置完整 AMP 你需求在融洽的服务器上运行以下命令。

在 澳门葡京备用网址 ,Github 官方地址
上查看包的源代码,阅读 文档 有助于你接纳那些包。

登记服务提供者

laravel 5.1 以上版本的话, config/app.php 中找到 providers 和 aliases
,将你的服务提供者和 facade 别名配置一下 :

providers 加入 :

App\Providers\FacadeServiceProvider::class,

aliases 出席(不用每一回都写很长的命名空间前缀) :

'GeoIP'      => App\Facades\GeoIP\Facade\GeoIP::class,

对于 lumen 5.2 以上,需要在 bootstrap/app.php 中添加

$app->register(App\Providers\FacadesServiceProvider::class);

登记截止后,每趟使用 facade::function 的时候,laravel 会自动分析
facade, 然后成立一个对象给用户采用,,而无需用户自己去 new
一个对象出来。

4) 安装 Composer

在大家设置 Laravel 前,先让大家初阶设置 composer。安装 composer 是安装
Laravel 的最关键步骤之一,因为 composer 能帮大家设置 Laravel
的各类信赖。

CentOS

  1. #yum install httpd mariadb-server php56w php56w-mysql php56w-mcrypt php56w-dom php56w-mbstring

要在 CentOS 7 上完毕 MySQL / 玛丽亚db
服务开机自动启动,你要求周转以下命令。

  1. #systemctl start httpd
  2. #systemctl enable httpd
  3. #systemctl start mysqld
  4. #systemctl enable mysqld

在起步 玛丽亚DB 服务之后,你须要周转以下命令配置一个丰盛安全的密码。

  1. #mysql_secure_installation

越来越多现代化 PHP 知识,请前往 Laravel / PHP
知识社区

使用

今天,在任何一个控制器,或者路由的回调函数中,使用

$res = GeoIP::getCountry('75.101.195.215');
var_dump($res);

你会发觉,facade 已经得以可以做事了,enjoy!

CentOS/Ubuntu

在 CentOS / Ubuntu 下运行以下命令来配置 composer 。

  1. # curl -sS https://getcomposer.org/installer | php
  2. #mv composer.phar /usr/local/bin/composer
  3. #chmod+x /usr/local/bin/composer

澳门葡京备用网址 4

composer installation

Ubuntu

  1. #apt-get install mysql-server apache2 libapache2-mod-php5 php5-mysql

参照小说

【1】设计情势(九)外观格局Facade(结构型)
【2】Laravel 服务容器实例教程 ——
深切领会控制反转(IoC)和珍重性注入(DI)
【3】Laravel 服务提供者实例教程 —— 创立 Service Provider
测试实例

5) 安装 Laravel

咱俩得以运作以下命令从 github 上下载 Laravel 的安装包。

  1. #wget https://github.com/laravel/laravel/archive/develop.zip

运作以下命令解压安装包并且举手投足 document 的根目录。

  1. # unzip develop.zip
  2. #mv laravel-develop /var/www/

今日使用 compose 命令来设置目录下具有 Laravel 所必要的看重。

  1. #cd/var/www/laravel-develop/
  2. # composer install

澳门葡京备用网址 5

compose laravel

4) 安装 Composer

在大家设置 Laravel 前,先让大家起头设置 composer。安装 composer 是安装
Laravel 的最首要步骤之一,因为 composer 能帮我们设置 Laravel
的种种信赖。

6) 密钥

为了加密服务器,大家接纳以下命令来生成一个加密后的 32 位的密钥。

  1. # php artisan key:generate
  2. Application key [Lf54qK56s3qDh0ywgf9JdRxO2N0oV9qI]set successfully

当今把那几个密钥放到 ‘app.php’ 文件,如以下所示。

  1. #vim/var/www/laravel-develop/config/app.php

澳门葡京备用网址 6

Key encryption

CentOS/Ubuntu

在 CentOS / Ubuntu 下运行以下命令来布署 composer 。

  1. # curl -sS https://getcomposer.org/installer | php
  2. #mv composer.phar /usr/local/bin/composer
  3. #chmod+x /usr/local/bin/composer

澳门葡京备用网址 7

composer installation

7) 虚拟主机和所属用户

在 composer 安装好后,分配 document 根目录的权力和所属用户,如下所示。

  1. #chmod775/var/www/laravel-develop/app/storage
  2. #chown-R apache:apache /var/www/laravel-develop

用随机一款编辑器打开 apache
服务器的默许配置文件,在文书最终加上虚拟主机配置。

  1. #vim/etc/httpd/conf/httpd.conf

  1. ServerName laravel-develop
  2. DocumentRoot/var/www/laravel/public
  3. start Directory/var/www/laravel
  4. AllowOverrideAll
  5. Directory close

近期咱们用来下命令重启 apache 服务器,打开浏览器查看 localhost 页面。

5) 安装 Laravel

我们得以运作以下命令从 github 上下载 Laravel 的安装包。

  1. #wget https://github.com/laravel/laravel/archive/develop.zip

运作以下命令解压安装包并且举手投足 document 的根目录。

  1. # unzip develop.zip
  2. #mv laravel-develop /var/www/

当今利用 compose 命令来安装目录下拥有 Laravel 所急需的爱抚性。

  1. #cd/var/www/laravel-develop/
  2. # composer install

澳门葡京备用网址 8

compose laravel

CentOS

  1. #systemctl restart httpd

6) 密钥

为了加密服务器,大家运用以下命令来生成一个加密后的 32 位的密钥。

  1. # php artisan key:generate
  2. Application key [Lf54qK56s3qDh0ywgf9JdRxO2N0oV9qI]set successfully

方今把那一个密钥放到 ‘app.php’ 文件,如以下所示。

  1. #vim/var/www/laravel-develop/config/app.php

澳门葡京备用网址 9

Key encryption

Ubuntu

  1. # service apache2 restart

7) 虚拟主机和所属用户

在 composer 安装好后,分配 document 根目录的权能和所属用户,如下所示。

  1. #chmod775/var/www/laravel-develop/app/storage
  2. #chown-R apache:apache /var/www/laravel-develop

用随机一款编辑器打开 apache
服务器的默许配置文件,在文书最终加上虚拟主机配置。

  1. #vim/etc/httpd/conf/httpd.conf

  1. ServerName laravel-develop
  2. DocumentRoot/var/www/laravel/public
  3. start Directory/var/www/laravel
  4. AllowOverrideAll
  5. Directory close

今天大家用来下命令重启 apache 服务器,打开浏览器查看 localhost 页面。

8) Laravel 5 网络访问

开辟浏览器然后输入你布署的 IP 地址或者完全域名(Fully qualified domain
name)你将汇合到 Laravel 5 的默许页面。

澳门葡京备用网址 10

Laravel Default

CentOS

  1. #systemctl restart httpd

总结

Laravel
框架对于开发网页应用来说是一个绝好的的工具。所以,看了那篇小说你将学会在
Ubuntu 15 和 CentOS 7 上设置 Laravel, 之后你就可以利用那个超棒的 PHP
框架提供的种种功效和清爽便捷性来展开你的成本工作。

如若你有哪些看法或者指出请在以下评论区中回复,大家将依照你宝贵的申报来使大家的稿子尤其浅显易懂。

Ubuntu下使用Nginx部署Laravel 

Ubuntu 14.04 上使用 Nginx 部署 Laravel 5.0 


via:

作者:Kashif 译者:NearTan 校对:Caroline

本文由 LCTT 原创编译,Linux中国 荣誉推出

正文永久更新链接地址:

CentOS 7 / Ubuntu 15.04 上设置 PHP 框架
Laravel 我们好,那篇小说将要讲述怎么着在 CentOS 7 / Ubuntu 15.04 上设置
Laravel。借使您是一个 PHP Web 的…

Ubuntu

  1. # service apache2 restart

8) Laravel 5 互连网访问

打开浏览器然后输入你安顿的 IP 地址或者完全域名(Fully qualified domain
name)你将会看出 Laravel 5 的默许页面。

澳门葡京备用网址 11

Laravel Default

总结

Laravel
框架对于开发网页应用来说是一个绝好的的工具。所以,看了那篇小说你将学会在
Ubuntu 15 和 CentOS 7 上设置 Laravel, 之后您就可以使用这几个超棒的 PHP
框架提供的各类功效和舒服便捷性来举行你的支付工作。

假定你有怎么着意见或者指出请在偏下评论区中平复,我们将基于你宝贵的举报来使大家的小说越发浅显易懂。

Ubuntu下使用Nginx部署Laravel 
http://www.linuxidc.com/Linux/2015-08/121988.htm

Ubuntu 14.04 上使用 Nginx 部署 Laravel 5.0 
http://www.linuxidc.com/Linux/2015-08/121986.htm


via:

作者:Kashif
译者:NearTan
校对:Caroline

本文由 LCTT
原创编译,Linux中国 荣誉推出

正文永久更新链接地址:http://www.linuxidc.com/Linux/2016-01/127113.htm

澳门葡京备用网址 12

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website