PHP Homestead 虚拟化安装与 MongoDB 扩展安装

本文由码农网 –
邱康原创翻译,转发请看清文末的转发须要,迎接参加大家的付费投稿布署!

本身是 PHP 比比较小白,因公司业务作者急需在 Mac 下安装 PHP MySQL MongoDB
一多元整套的付出情形,谈起来都以眼泪,特别是 MongoDB 的扩展真的是。

简介

Laravel Homestead 是一个法定预封装的 Vagrant
box,它为您提供了一个兼顾的支付景况,你没有必要在地面安装 PHP ,web
服务器,或别的服务软件。何况永不操心系统被搞乱! Vagrant box
是全然三回性的。若是有何地点出错了,你也得以在几秒钟国内发卖毁天公地道建 box

Homestead 可以运营在 Windows 、 Mac 或 Linux 系统上,而且在那之中包含了
Nginx Web 服务器、 PHP 7.1 、 MySQL 、 Postgres 、 Redis 、 Memcached 、
Node 、 以至全部助于你付出 laravel 应用的其余程序。

Optical Character Recognition (OC中华V卡塔尔(قطر‎即光学字符辨识是把打字与印刷文本调换到二个数字代表的历程。它有丰裕多采的实在应用–从数字化印制书籍、创造发票的电子记录,到车牌识别甚至破解基于图像的验证码。

  • 品味了 XAMPP 情状退步 PHP 未有跑起来。
  • 同事推荐安装 MAMP 也失利了,原因是 MongoDB
    扩充死活装不上去,还会有一个难点 Apache
    会运维系统自带的暗中同意配置,并不受 MAMP 调整。
  • 中间也尝试接受 Mac 自带的配备,一想到 MySQL
    也要和睦解和管理理就废弃了,缺乏自动化。
  • 除此以外一人同事推荐设想 VirtualBox 方法,冥冥之中以为是三个好法子。

下载安装包

在你运转你的 Homestead 意况之前,你不得不安装VirtualBox 5.1、
VMWare或Parallels的中间之一,以致Vagrant。本次选用的VirtualBox5.1。上边提供了本次必要的安装包下载地址。

VirtualBox-5.1.24-117012-Win.exe
密码:mnry
vagrant_2.0.1_x86_64.msi
密码:tvkk
laravel-VAGRANTSLASH-homestead.rar
密码:63cr(只针对利用Virtualbox)

图片 1

安装

(1)安装vagrant,vagrant归于跨平台利用,作者的系统是win10。安装成功后能够在cmd中输入
vagrant。看见如下图表明安装成功。

图片 2

(2)安装Virtualbox,直接依据提示安装就可以。

(3)安装 Homestead Vagrant Box

vagrant box add laravel/homestead

原本只要如上的吩咐就能够,但鉴于国内令人瞩指标网络原因,大家只可以思考先下载好的box再来增添。上边提供的”laravel-VAGRANTSLASH-homestead.rar”(只针对利用Virtualbox)正是下载好的vagrant
box。

解压后将全数文件夹复制到 .vagrant.d/boxes
文件夹中(.vagrant.d文本夹在系统盘的客户文件夹对应的系统顾客文件夹,作者的是C:UsersAdministrator.vagrant.d),实现后在cmd中输入
vagrant box list,能够看见如下图表明vagrant box安装成功。

图片 3

(4)安装 Homestead,选用你的行事目录,使用git bash克隆Homestead

git clone https://github.com/laravel/homestead.git Homestead

要是你克隆完 Homestead 的代码宾馆,就能够在 Homestead 目录中运转 bash
init.sh 命令 来创立 Homesstead.yaml 配置文件:

// Mac / Linux...
bash init.sh

// Windows...双击运行
init.bat

运作成功后,Homesstead.yaml 文件会被停放在你的 Homestead 目录中。

Tesseract是一个能兑现OC讴歌MDX的开源项目。你能在*Nix系统,Mac系统和Windows系统上运营这些类型,可是假使利用五个库,大家就会在PHP项目中央银行使它了。本学科的指标是教您怎么着使用。

  • PHP 设想化技艺的几个首要软件介绍
  • 安装 Homestead 步骤
  • 安装 MongoDB 扩展
  • 感想

配置 Homestead

(1)配置你的提供者,Homestead.yaml 中的 provider
参数设置决议于你用的是哪二个 Vagrant 提供者 virtualbox 、 vmware_fusion
、 vmware_workstation ,也许 parallels
。你能够依赖本身的喜好来安装提供者,这里接收的是virtualbox 。

provider: virtualbox

(2)配置分享文件夹,你能够在 Homestead.yaml 文件的 folders
属性里列出具备想与 Homestead
遭遇分享的文本夹。那个文件夹中的文件若有变动,它们将会在您的本机计算机与
Homestead
碰到自动更新同步。你能够在那地设置多少个分享文件夹,这里笔者在Homestead文件夹中开创了code文件夹用来分享。

folders:
    - map: F:/Homestead/code        //对应Homestead文件夹的路径
      to: /home/vagrant/code

(3)配置 Nginx 站点,对 Nginx 不熟识吗?不妨。sites
属性能够扶助你能够随便钦定一个 域名 来对应到 homestead
景况中的三个目录上。在 Homestead.yaml 文件中已盈盈了一个网站设置范本。

sites:
    - map: homestead.app   //域名
      to: /home/vagrant/code/laravel/public    //对应Nginx 虚拟机的laravel安装目录

只要你在 Homestead box 配置之后修改了 sites 属性,那么应该重国民党的新生活运动行
vagrant reload –provision 来更新 Nginx 配置到设想机上。

(4)配置hosts 文件,必得将要 Nginx sites
中所加多的「域名」也丰盛到您本机Computer的 hosts 上。 hosts
文件会将号令重定向至 Homestead 条件中安装的本地域名。在 Mac 或 Linux
上,该文件日常会存放在 /etc/hosts 。在 Windows 上,则寄放于
C:WindowsSystem32driversetchosts 。

192.168.10.10  homestead.app

总得确认 IP 地址与 Homestead.yaml 文件中设置的均等。

安装

启动 Vagrant Box

编纂完 Homestead.yaml 后,步入你的 Homestead 目录并运维 vagrant up
命令。 Vagrant 就能够依据 Homestead.yaml
里的配备新闻,为虚构机设置共享文件夹和 Nginx 网址。

图片 4

只要你现身如下景况:

图片 5

大家依照提醒,貌似是ssh的key未有变动,于是大家要运转如下命令,那一个命令能够在git
bash下生成。

ssh-keygen

起步成功今后我们得以张开Virtualbox,我们能够看见:

图片 6

准备

为了让事情变得轻易和一模一样的, 大家将使用虚构机(本文使用Vagrant)来运维应用程序,那会涉嫌到安装PHP和Nginx,大家将设置Tesseract来分别演示进度。假若您想自身依据现存Debian-based系统安装Tesseract,你能够跳过下部分—或许查看the README来赢得在其余*nix上,Mac系统可能Windows的安装指点.

  • VirtualBox 是 Oracle 公司的虚拟机软件,可安装虚构操作系统。
  • Vagrant 提供可编制程序可陈设的自动化安装操作系统软件。
  • Homestead 正是封装一批的构造文件。

登录vagrant并安装laravel

(1)大家得以用cmd命令行步入Homestead目录,使用如下命令连接,若是采取Virtualbox开启登入须要客商名跟密码,都是
vagrant

vagrant ssh

图片 7

(2)安装laravel,我们日常是透过composer来进行设置,在Homestead.yaml中我们配备的目录是
to: /home/vagrant/code/laravel/public
,由此大家要跻身code目录下安装,输入如下命令:

cd /home/vagrant/code
composer create-project --prefer-dist laravel/laravel

倘诺要下载其余版本,举个例子5.3版本,能够动用这么些命令:

composer create-project --prefer-dist laravel/laravel blog 5.3.*

(3)完毕后测量检验laravel是还是不是安装成功,

cd /home/vagrant/code/laravel
php artisan

(4)重开三个cmd运路程序,步入Homestead目录重新运维 vagrant reload
–provision
来更新 Nginx
配置到设想机上,之后我们得以在Homestead/code文件夹中看看下载的laravel代码。这是在浏览器中通过该域名访谈站点了:

http://homestead.app

(5)访谈 提示No input file
specified,那个或者是laravel的设置目录与Homestead.yaml中配备的目录不等同,只怕是Homestead.yaml中配备的目录现身了大写字母。因为在设想机中的目录都是小写字母的。矫正形成未来步向Homestead目录重新运转
vagrant reload –provision 来更新 Nginx 配置到虚构机上。

图片 8

翻看最早的作品>> 曼巴童鞋 – 博客 – Laravel
设想开荒情况Homestead安装

配置Vagrant

为了布置Vagrant以跟上本学科,实现如下步骤。可能你也能够简轻便单的从Github得到代码。

 

输入以下命令来下载Homestead Improved Vagrant布置到四个名字为orc的文书夹:

git clone https://github.com/Swader/homestead_improved ocr

将Nginx配置文件Homestead.yml中的以下代码:

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Project/public

修改成:

sites:
    - map: homestead.app
      to: /home/vagrant/Code/public

无差别于要在hosts文件中加多

192.168.10.10       homestead.app

他俩的分支构造:由于有 VirtualBox,大家能够在 Mac 设想操作系统,然后使用
Vagrant 可以用编制程序的措施去调节 VirtualBox 自动安装操作系统。

安装Tesseract

下一步是设置Tesseract

因为Homestead Improved 使用debian,我们能够在使用vagrant ssh登录虚构机后选择apt-get 来安装它,轻便运转如下命令:

sudo apt-get install tesseract-ocr

正如上文提到的,在the README中有其余的操作系统对应教程。

Homestead 便是一批编制程序方法和安顿文件,能够通过 Vagrant 去操作 VirtualBox安装生成三个捏造操作系统里面有 PHP MySQL Apache 整套境况。

测量试验并定制安装

大家将利用PHP包装,可是在此之前我们能够在指令行测验Tesseract。

率先保存那几个图片sign.png

在设想机中,推行如下命令来从图纸中读取文字

tesseract sign.png out

那将要这里时此刻文件夹创造三个文本:out.txt里面应该有单词:CAUTION

几天前尝试sign2.jpg

tesseract sign2.jpg out

这一次产生单词Einbahnstral’ie。很周围但不得法—固然图像中的文字卓殊清楚,它未能识别字符ß。

为了获使Tesseract符合规律读取字符串,大家要求设置一些新的语言文件—就本例来讲,乌Crane语。

此处有贰个全面包车型客车可用语言文件列表,但大家直接下载所需的公文:

wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.deu.tar.gz

解压:

tar zxvf tesseract-ocr-3.02.deu.tar.gz

接下来把公文复制到如下目录:

/usr/share/tesseract-ocr/tessdata

例如

cp deu-frak.traineddata /usr/share/tesseract-ocr/tessdata
cp deu.traineddata /usr/share/tesseract-ocr/tessdata

现在大家再一次试行原本的命令不过要用 –l

tesseract sign2.jpg out -l deu

“deu” 是英文的 ISO 639-3码.

此番,文字应该是Einbahnstraße(精确的)。

能够经过重复上述进度来行使任性语言。

1. 安装 VirtualBox 和 Vagrant 直接点击下载安装2. 加多 Homestead 的
Vagrant box

配置应用程序

大家将选择这个库来用PHP使用Tesseract。

我们将确立一个极简的web应用:顾客上传图片,并查阅OCOdyssey管理结果。大家将应用Silex microframework 来落成。不要操心您素不相识它,那几个动用自己相当的粗略。

难忘这篇教程的兼具代码都能在Github上获得。

首先步是用Composer来安装信任文件:

composer require silex/silex twig/twig thiagoalessio/tesseract_ocr:dev-master

接下来建构四个公文夹:

- public
- uploads
- views

小编们必要上传表单(viewsindex.twig):

<html>
  <head>
    <title>OCR</title>
  </head>
  <body>

    <form action="" method="post" enctype="multipart/form-data">
      <input type="file" name="upload">
      <input type="submit">
    </form>

  </body>
</html>

亟需三个结出展现页面(viewsresults.twig)::

<html>
  <head>
    <title>OCR</title>
  </head>
  <body>

    <h2>Results</h2>

    <textarea cols="50" rows="10">{{ text }}</textarea>

    <hr>

    <a href="/">← Go back</a>

  </body>
</html>

现今确立skeleton Silex app (publicindex.php):

<?php 

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

use SymfonyComponentHttpFoundationRequest; 

$app = new SilexApplication(); 

$app->register(new SilexProviderTwigServiceProvider(), [
  'twig.path' => __DIR__.'/../views',
]);

$app['debug'] = true; 

$app->get('/', function() use ($app) { 

  return $app['twig']->render('index.twig');

}); 

$app->post('/', function(Request $request) use ($app) { 

    // TODO

}); 

$app->run();

就算您在浏览器访谈那几个动用,你应有能观望二个文件上传表单。要是您在应用Homestead Improved Vagrant,你可以因此如下链接待上访谈该利用。

http://homestead.app/

下一步是完毕公文上传。Silex使得那项专业特别轻松;$request包含叁个files组件,大家得以透过它来得到自由上传的公文,代码:

// Grab the uploaded file
$file = $request->files->get('upload'); 

// Extract some information about the uploaded file
$info = new SplFileInfo($file->getClientOriginalName());

// Create a quasi-random filename
$filename = sprintf('%d.%s', time(), $info->getExtension());

// Copy the file
$file->move(__DIR__.'/../uploads', $filename);

如你所见,大家发出随机文件名来压缩文件名冲突—但在本利用中,大家怎么命名文件是不首要的。一旦大家在该地有一份文件拷贝,大家就足以生出一个Tessearct库的实例,然后进行深入分析:

// Instantiate the Tessearct library
$tesseract = new TesseractOCR(__DIR__ . '/../uploads/' . $filename);

在图像上落到实处OC路虎极光极其轻便,大家只需调用方法recognize(卡塔尔。

// Perform OCR on the uploaded image
$text = $tesseract->recognize();

末段大家把结果呈现到结果页面:

return $app['twig']->render(
    'results.twig',
    [
        'text'  =>  $text,
    ]
);

在一部分图纸上尝试,看看它功效怎么着。就算您有许多不便,可以参照这个

$ vagrant box add laravel/homestead

四个事实上的事例

让大家来看OC奥迪Q5叁个更实用的事例。在本例中,大家尝试在图像中找到三个格式化的电话号码。

拜访上面一幅图,上传到您的选取:

图片 9

结果应该如下:

:ii‘i
Customer Service Helplines

British Airways Helpline

09040 490 541

它并未有挑出本文文本,那是咱们能料到的,因为图片品质太差。纵然识别了数码可是也许有部分“噪声”。

为了提取相关音信,犹如下几件事大家能够做。

你能够让Tesseract 把它的结果节制在料定的字符集内,所以我们告诉它只回去数字型的剧情代码如下:

$tesseract->setWhitelist(range(0,9));

但如此有个难点。它时时把非数字字符解释成数字而非忽视它们。比方“Bob”恐怕被分解称数字“808”。

为此我们接受两步管理。

  1. 品尝提取或然是电话号码的数字串。
  2. 用二个库轮番评估每贰个候选字符,一旦找到一个可行电话号码则甘休。

率先步,大家能够用贰当中央的正则表达式。能够用谷歌(Google卡塔尔电话库来分明二个数字串是还是不是是合法电话号码。

备注:小编已在Sitepoint 写过关于Google电话库的原委。

让大家给Google电话库增多叁个PHP 端口,改革composer.json,增添:

"giggsey/libphonenumber-for-php": "~7.0"

别忘了进级:

composer update

至今我们能够写八个函数,输入为叁个字符串,尝试提取七个合法的电话号码

/**
 * Parse a string, trying to find a valid telephone number. As soon as it finds a 
 * valid number, it'll return it in E1624 format. If it can't find any, it'll 
 * simply return NULL.
 * 
 * @param  string   $text           The string to parse
 * @param  string   $country_code   The two digit country code to use as a "hint"
 * @return string | NULL
 */
function findPhoneNumber($text, $country_code = 'GB') {

  // Get an instance of Google's libphonenumber
  $phoneUtil = libphonenumberPhoneNumberUtil::getInstance();

  // Use a simple regular expression to try and find candidate phone numbers
  preg_match_all('/(+d+)?s*((d+))?([s-]?d+)+/', $text, $matches);

  // Iterate through the matches
  foreach ($matches as $match) {

    foreach ($match as $value) {

      try {

        // Attempt to parse the number
        $number = $phoneUtil->parse(trim($value), $country_code);    

        // Just because we parsed it successfully, doesn't make it vald - so check it
        if ($phoneUtil->isValidNumber($number)) {

          // We've found a telephone number. Format using E.164, and exit
          return $phoneUtil->format($number, libphonenumberPhoneNumberFormat::E164);

        }

      } catch (libphonenumberNumberParseException $e) {

        // Ignore silently; getting here simply means we found something that isn't a phone number

      }

    }
  }

  return null;

}

愿意注释能解释这一个函数在干什么。注意要是那个库未能从字符串中解析出三个官方的电话号码它会抛出多少个充裕。这不是怎么难题;我们直接忽视它并卫冕下一个候选字符。

假使大家找到四个电话号码,大家以E.164的花样重返它。那提供了叁个国际化的数码,大家得以用来打电话只怕发送SMS。

当今我们能够如下使用:

$text = $tesseract->recognize();

$number = findPhoneNumber($text, 'GB');

大家需求给谷歌(Google卡塔尔电话库提供四个晋升来验证那些编号是哪些国家的。你也能够改成你本人的国度。

咱俩把具备的这么些包裹在三个新的路由中:

$app->post('/identify-telephone-number', function(Request $request) use ($app) { 

  // Grab the uploaded file
  $file = $request->files->get('upload'); 

  // Extract some information about the uploaded file
  $info = new SplFileInfo($file->getClientOriginalName());

  // Create a quasi-random filename
  $filename = sprintf('%d.%s', time(), $info->getExtension());

  // Copy the file
  $file->move(__DIR__.'/../uploads', $filename); 

  // Instantiate the Tessearct library
  $tesseract = new TesseractOCR(__DIR__ . '/../uploads/' . $filename);

  // Perform OCR on the uploaded image
  $text = $tesseract->recognize();

  $number = findPhoneNumber($text, 'GB');

  return $app->json(
    [
      'number'     =>  $number,
    ]
  );

});

大家今日有简短的API的幼功—-也正是JSON响应-—大家得以用来作为叁个简练的位移应用的后端,那款应用能够用来从一幅图中添加关系人,打电话。

突发性安装会一点也非常的慢,等啊!十万火急的能够自动物检疫索。3. 查看安装是或不是中标

总结

OCHighlander有无数行使——而且十分轻巧整合进你的行使(超过你的意料)。本文中,大家设置了开源OC库罗德包;并应用三个装进器库,把它结合进多个超轻巧的PHP应用。我们只是触及到了独具只怕的表面,希望那能给你有些机关算尽,帮您思谋怎么在你自个儿的应用中利用OCTiggo。

$ vagrant box listlaravel/homestead (virtualbox, 5.2.0)

4. 部署 Homestead 环境clone Git 项目到桌面。

$ git clone --branch v2.1.8 https://github.com/laravel/homestead.git Homestead

cd 刚刚拉取 Homestead 目录下,早先化。

$ bash init.shHomestead initialized!

5. 当前目录下有 Homestead.yaml 文件

---ip: "192.168.10.10"memory: 2048cpus: 1provider: virtualboxauthorize: ~/.ssh/id_rsa.pubkeys: - ~/.ssh/id_rsafolders: - map: /Users/ltz/Desktop/code/riot-match-management to: /home/vagrant/codesites: - map: homestead.test to: /home/vagrant/code/publicdatabases: - homestead# blackfire:# - id: foo# token: bar# client-id: foo# client-token: bar# ports:# - send: 50000# to: 5000# - send: 7777# to: 777# protocol: udp

folders 是她们的公用文件。配置 folders map 是 Mac 下的文件路线,to
是虚构机文件路线。

布署完毕现在,vagrant 虚构情状与 Mac 主机之间暗中认可使用 ssh 密钥对认证举行ssh 通信,平常的话密钥对在运用 Git 的先前时代准备干活中应有已经转移。

6. 运行 Homestead配置完毕后走入 Homestead 目录,然后接收 vagrant up
命令就可以运维 Homestead 设想情形:

$ vagrant up

突发性候会等长时间成功后, 127.0.0.1:8000 访谈你的体系。

7. vagrant 多少个指令

$ vagrant up //启动$ vagrant halt //关闭$ vagrant suspend //暂停$ vagrant reload //重启$ vagrant ssh //SSH 连接$ vagrant status //查看状态$ vagrant destroy --force //强制删除

8. 极端链接 vagrant 与 MySQLHomestead 意况已经集成 MySQL,暗许账户为
homestead,密码为 secret

$ vagrant ssh$ mysql -u homestead -pEnter password: secret

9. 安装 homestead 收尾大家未来中央 PHP
开荒已经远非其余难点了,Apache PHP MySQL 皆已经设置了。

1.下载安装

# 进入 vagrant$ vagrant ssh# 下载$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz# 解压$ tar -zxvf mongodb-linux-x86_64-3.0.6.tgz# 将解压包拷贝到指定目录$ sudo mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb# 修改文件夹权限$ sudo chmod 777 /usr/local/mongodb# 创建数据库目录$ mkdir -p /usr/local/mongodb/data/db# 环境变量$ export PATH=/usr/local/mongodb/bin:$PATH

2.运行 MongoDB在 MongoDB 安装路线下的 bin 目录执行 $ ./mongod
命令来运行 MongoDB 服务。或直接使用 $ /usr/local/mongodb/bin/mongod
命令就可以直接开行 MongoDB 服务。–dbpath
参数可钦点数据库寄存目录,–logpath 参数可钦点日志寄放目录。钦定参数运营MongoDB:

$ /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --fork --logpath=/usr/local/mongodb/logs

3.安装 MongoDB 的 PHP 扩展MongoDB 的 PHP 扩充有希望信任libsasl2-dev,所以大家先安装 libsasl2-dev 后就可以成功安装 MongoDB 的 PHP
增加:

$ sudo apt-get install libsasl2-dev$ sudo pecl install mongo

4.翻看 PHP 配置文件所在目录,并更改配置

$ php -i | grep 'Configuration File'Configuration File  Path => /etc/php7.2.1/cliLoaded Configuration File => /etc/php7.2.1/cli/php.ini

在 /etc/php7.2.1/cli/php.ini 和 /etc/php7.2.1/fpm/php.ini
多少个布局文件中步向 extension=mongo.so 字段并保存。重启 PHP 就可以初阶应用
MongoDB 进行开辟:

sudo kill -USR2 `cat /run/php5-fpm.pid`

MongoDB 暗中同意端口3000,未有账号密码直接链接。别忘了 composer install。

说真话挺倒霉弄的,笔者只想要二个直接往里面拖代码的就能够跑起来的条件。每趟配置开辟蒙受体验算不得友好,可是我们都在迈入走努力,让开垦条件与硬件操作系统隔开分离。至此一折腾作者以为Docker 应该算是服务器开荒的必修课了,纵然小编是写 Node.js 后端。

参照链接:

发表评论

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