1 创建laravel项目
创建laravel
项目,需要使用composer
工具,所以需要先安装composer
,composer官网。
然后使用命令行进行安装,安装命令如下:
composer create-project laravel/laravel {project-name} {laravel version} --prefer-dist {project-path}
# ex. composer create-project laravel/laravel myBlog --prefer-dist
其中,
{project-name}
表示你创建的laravel项目名{laravel version}
表示laravel
项目的版本号,默认是最新的版本{project-path}
表示项目创建的地址,默认是命令行存在的那个目录下,这个可以不用写。
2 启动laravel项目
2.1 方式1
在项目的根目录下,使用以下命令进行启动:
php artisan serve
使用这个命令需要先将php
添加环境变量中:
这种方式有一个缺点,就是如果关掉了这个命令行界面,那么laravel
项目也就关掉了。
2.2 方式2
将项目放到nginx
或者apache
服务器中,这里以nginx
为例。
首先在Windows
电脑上安装phpstudy工具。
点击右侧的【网站】添加一个新的网站域名,这个域名是本地的域名,可以是任意的字符串,但是需要注意,如果自己创建了多个网站服务,端口号不能重复,否则会访问不到服务。
如果你的laravel
是要给前后端分离的项目,也就是说前端是通过接口访问你提供的服务,你还需要在nginx
的配置文件添加一个配置,才能访问,先找到nginx
的配置文件的存放地址,按照下面的方式进入到nginx
的根目录。
进入nginx的vhost
目录下,找到自己的vhost配置文件:
打开配置文件:
server {
listen 81;
server_name www.zhgblog.com;
root "E:/software/phpstudy_pro/WWW/myBlog/public";
location / {
index index.php index.html error/index.html;
try_files $uri $uri/ /index.php?$query_string; ## 添加这一行即可
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
include E:/software/phpstudy_pro/WWW/myBlog/public/nginx.htaccess;
autoindex off;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
然后重启nginx
服务器就可以了。
3 编写接口文件
在写测试接口的时候,提示找不到指定的class
文件:
这个问题可以解决,找到app\Providers\RouteServiceProvider.php
文件,然后将其中一行的注释给取消掉就可以了。
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/home';
/**
* The controller namespace for the application.
*
* When present, controller route declarations will automatically be prefixed with this namespace.
*
* @var string|null
*/
// protected $namespace = 'App\\Http\\Controllers'; //这一行默认是被注释的,只要取消注释就可以了,如果没有这一行也可以加上
protected $namespace = 'App\\Http\\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
}
4 Laravel 不同环境加载不同的.env文件
假设有4个.env文件,分别为
.env.local
.env.dev
.env.test
.env.prd
方式一
第一步:[pro_name]\bootstrap\app.php
加入代码
$envs = ['local','dev','test','prd'];
$env = get_cfg_var('env');
if(empty($env) || !in_array($env, $envs)){
exit('no env files');
}
$env = '.env.'.$env;
$app->loadEnvironmentFrom($env);
第二步:php.ini
文件中添加一行
env = local
方式二
假设不同环境域名分别为:
local-domain.com
dev-domain.com
test-domain.com
domain.com
在 [pro_name]\bootstrap\app.php
加入代码
if (!$app->runningInConsole()) {//HTTP形式
if (empty($_SERVER['HTTP_HOST'])) {
die('[error] no host');
}
$app_env = substr($_SERVER['HTTP_HOST'],0,strpos($_SERVER['HTTP_HOST'],'-'));
} else {//其它形式
$app_env = $app->detectEnvironment(function () {
return 'prd';
});
}
if (empty($app_env)) {
die('[error] no environment');
}
//写入环境配置
//Dotenv::setEnvironmentVariable('APP_ENV', $app_env);
$app->loadEnvironmentFrom('.env.' . $app_env);
// ->useEnvironmentPath(base_path('env'));