前言
后面所有服务或者程序安装,都在虚拟机下进行操作。
Laravel框架提供了一个安装器,我们要用它来创建基于Larave的新项目。
一、安装composer服务
Laravel安装器,本质是一个PHP的程序,而这个程序,我们需要下载它的工程到本地来编译执行。
composer,是用来管理PHP依赖的工具。有了它,我们就不需要自己去下载源码编译了。
下载地址:https://pkg.phpcomposer.com/#how-to-install-composer
Homestead虚拟机默认安装了Composer,我们直接使用就好。
vagrant@laravel:~$ composer --version
Composer version 2.0.11 2021-02-24 14:57:23
二、安装Laravel
1. 下载安装器
首先,使用 Composer 安装 Laravel 安装器:
composer global require laravel/installer
经过一系列的下载,laravel的安装器便安装到了系统目录下:
vagrant@laravel:~$ ll ~/.config/composer/vendor/bin/laravel
lrwxrwxrwx 1 vagrant vagrant 32 Feb 2 00:13 /home/vagrant/.config/composer/vendor/bin/laravel -> ../laravel/installer/bin/laravel*
这一步同样也会将laravel目录写入到环境变量里。
安装完成后,就可以全局使用laravel命令来生成新项目了。
2. 生成新项目
这里需要注意,为了开发方便,我们应该在win/mac下编辑代码,linux运行工程。
所以新项目要生成在第一章里设定的共享路径里。
cd /home/vagrant/Laravel/Projects/
laravel new TestProject
执行结束后,laravel便会帮我们创建好一个全新的工程,框架需要的所有库文件都会创建在TestProject目录下。
回到Win/Mac这边,对应的共享目录下,TestProject目录和里面的文件也就都在了。
用PhpStorm打开这个目录,便可以Coding了。
3. 测试Laravel
第一章最后,我们已经启动了Nginx,并绑定了Webserver的根目录为
root "/home/vagrant/Laravel/TestLogin/public";
至此工程已经创建OK,对应的public/index.php文件已经自动生成。
现在可以尝试在Win/Mac浏览器里登录域名来测试了。
http://homestead.test/
当你能够看到下面这个页面,恭喜你,所有的环境你都准备好了。
开始Coding吧!
三、引用PHP版本修改
我们使用的HomeStead虚拟机,本身是安装了PHP v5~v8的所有版本的。所以当启动Laravel Server的时候,需要手动指定PHP版本,否则不一定会随机到哪个PHP上面。
1. 检查版本
在路由文件中,追加我们自己的测试逻辑
vi ProjectPath/routes/web.php
追加如下代码:
Route::get('/test/{param}', function ($param) {
Log::debug("Web access with closure", array("param"=>$param));
return phpinfo();
//return "test for route : {$param}";
});
在Chrome浏览器里,打开网址:
http://homestead.test/test/anything
此时便能看到如下页面:
如果这里不是你想要的PHP版本,比如你想使用PHP7.4,就需要修改配置了。
2. 修改版本
事先说明,这里打印的PHP version,其实和虚拟机上默认使用的php cli version不是一码事。你可能在虚拟机上命令行下直接执行结果是这样的:
vagrant@laravel:~$ php -v
PHP 8.0.1 (cli) (built: Jan 13 2021 08:22:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.1, Copyright (c) Zend Technologies
with Zend OPcache v8.0.1, Copyright (c), by Zend Technologies
但是通过网页访问phpinfo(),得到的却是PHP 7.4
这是因为Laravel WebServer使用的PHP版本,是由Nginx配置来决定的。
vagrant@laravel:~$ cat /etc/nginx/sites-enabled/homestead.test
server {
listen 80;
listen 443 ssl http2;
server_name .homestead.test;
root "/home/vagrant/Laravel/TestLogin/public";
...
...
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
最后一句,便是Nginx指定的版本号,我们修改它为自己想要的版本,比如:
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
然后重启Nginx服务就可以了。
3. 自动修改版本
如果希望启动HomeStead的时候,就直接指定好PHP版本,可以借助Homestead.yaml配置文件
还记得第一章我们借助它来实现默认Nginx配置吧
加上最后一行代码:
sites:
-
map: homestead.test
to: /home/vagrant/Laravel/TestLogin/public
php: '8.0'
重启虚拟机(重新读取配置文件):
vagrant reload --provision
这样,在启动HomeStead虚拟机后,Nginx配置中就会自动修改为对应PHP版本了。
总结
在环境准备的过程中,我们总共接触到了3个PHP工程目录:
- Homestead :Homestead虚拟机配置工具,后续的虚拟机启动都需要用到这个目录生成的文件
- Laravel Installer : Laravel安装器,帮我们生成新项目
- TestProject :Lavarel 新项目工程
其实,当TestProject测试工程生成后,为了方便开发,我们应该将Homestead工程也集成到里面
毕竟从根源上,他们都是通过composer来管理的。
这样有助于跨机器远程项目协作。团队成员可以共享一套虚拟机配置。