Homestead添加多站点的坑

Homestead做Laravel的开发还是很方便的,但是在添加多站点的时候,发现几个坑,来做个记录。

首先,官方文档给了修改homestead.yaml文件的方式,只需要在sites字节下添加一个新的站点配置就好了,如图:
homestead-sites

然后执行
homestead provison
就可以使得配置生效!

但是!!坑来了…去访问的话,你会得到一个502错误!好吧,这个错误相信很多人已经发现了,只是因为新版本的Homestead有个PHP-FPM的配置错误,只需要修改/etc/nginx/sites-enabled/下的homestead.app(请按照自己的实际情况修改)文件,将fastcgi_pass_unix:/var/run/php5-fpm.sock;修改为fastcgi_pass_unix:/var/run/php/php7.0-fpm.sock;就可以了,然后重启Nginx。

但是,重点不是这个好嘛。按照上图的配置,/etc/nginx/sites-enabled/下面应该有两个文件的,每个配置文件代表一个站点。然而,这个版本的Homestead只会使用配置下的第一个站点配置来生成Nginx的配置文件。

而且执行homestead provision是有损数据的。

好吧,这个需要另一种添加站点的方式。

使用SSH登陆Homestead,然后,执行如下图命令:homestead-scripts

是不是有一个serve-laravel.sh的脚本,对,我们需要使用它来帮助我们添加多站点。

执行
sudo /vagrant/scripts/serve-laravel.sh blog.app /home/vagrant/Code/blog/public

然后执行
ls /etc/nginx/sites-enabled/
是不是多出来你刚刚配置的站点配置文件。别高兴太早,那个Bug,记得修改PHP-FPM的相关配置,重启Ngixn,去试试吧,对了还有别忘了hosts。

记录下Homestead的几个坑

最近在Windows下玩玩Laravel,顺便用用Homestead,配置环境的过程中发现几个坑,记录下:

  • 坑1:V2.2.1版本的Homestead有BUG,因为内置了php5.6和php7.0.2两个版本的PHP,所以在多站点配置项,/etc/nginx/sites-enable下的配置文件即可–发现自nginx错误日志
  • 坑2:homestead.yaml文件不能有tabs,必须空格!!

Yii学习笔记之Yii,Composer的了解与安装

现在开始了解学习一下Yii框架,之前学了ThinkPHP,学习Yii也是一时兴起吧,看了一下文档的开始,不知怎么就像学学,顺便学会使用Composer.
OK,主要是可以给我记一下,说不定学一半又被耽搁了,方便以后查阅吧.

首先,简介:
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。

第一步:安装Composer

(注:是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。http://www.phpcomposer.com/)

此处只记录基于linux下的安装,Mac同此,而Windows下安装下载并运行 Composer-Setup.exe.
在 Linux 和 Mac OS X 中可以运行如下命令:
[shell collapse=”false”]
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
[/shell]

第二步,安装Composer

Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下命令即可安装 Yii :
[shell collapse=”false”]
composer global require "fxp/composer-asset-plugin:~1.0.0"
composer create-project –prefer-dist yiisoft/yii2-app-basic yii
[/shell]

第一条命令安装 Composer asset plugin,它是通过Composer 管理 bower和 npm 包所必须的,此命令全局生效,一劳永逸。 第二条命令会将 Yii 安装在名为yii的目录中,你也可以随便选择其他名称。

此处有一点需要注意,因为Composer在安装过程中需要在GitHub请求数据,在这过程中由于数据较多,可能会超过GitHub对匿名用户的API限制,因此会询问你 GitHub 账户的登录信息.看来,作为一个程序猿,木有GitHub账号没法玩的说~~
composer-github

如上图,提示验证Token,只需要访问提示中的连接,登录GitHub账号,如下图,生成即可.
github-token-generate
然后,复制至终端即可.
接下来就是漫长的等待了,天朝你懂得.
不用Composer,直接下载安装的方式,此处略.

安装好之后,访问http://localhost/basic/web/index.php

OK 暂时这么多,还在安装中,真慢.

Syntax error: Bad for loop variable解决办法

Ubuntu中写了一个简单的shell脚本,利用for..do..done结构每3秒执行一次php脚本,错误为Syntax error: Bad for loop variable

解决办法:sudo dpkg-reconfigure dash
在选择项中选No

从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。

ubuntu edgy是第一个将dash作为默认shell来发行的版本,这似乎是受了debian的影响。wiki 里面有官方的解释,https://wiki.ubuntu.com/DashAsBinSh,主要原因是dash更小,运行更快,还与POSIX兼容。

但 目前存在的问题是,由于shell的更换,致使很多脚本出错,毕竟现在的很多脚本不是100%POSIX兼容。

在wiki里面也说到,如 何将默认的shell改回bash,方法就是

在终端执行 sudo dpkg-reconfigure dash

然后选 择 no

Ubuntu下搭建LNAMP环境时PHP扩展的安装

在Ubuntu中,我们能够很方便的使用apt-get来安装LNAMP环境。以下是踩过的一些坑,做个记录。
1.当搭建Linux+Apache+PHP+MySql环境时,PHP安装使用:
[shell collapse=”false”]
sudo apt-get install php5
[/shell]
当搭建Linux+Nginx+PHP+MySql环境的时候,PHP安装使用:
[shell collapse=”false”]
sudo apt-get install php5-fpm
[/shell]
PHP-FPM是一个PHPFastCGI管理器,是只用于PHP的。nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。

PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。
2.安装PHP扩展:
[shell collapse=”false”]
sudo apt-cache search php5
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
[/shell]
这样可以安装这些扩展,话说之前看别人的教程踩的坑蛮多的。