一、简介
二、Composer 安装与使用
- 在安装
Laravel
之前需要先安装Composer
,Composer
是PHP
是PHP5.3
以上的一个依赖管理工具,你可以在自己的项目中声明所依赖的外部工具库(libraries)
,Composer
会安装这些依赖的库文件 Composer
仅仅是一个依赖关系的管理,如同在iOS
开发中使用的CocoaPods
,前端开发中使用的NPM
。- 按 Composer 安装与使用 这篇文章,安装到设置好镜像源,就行了。
三、创建 Laravel
工程
- 先
cd
到一个项目存放文件,在执行创建项目命令。 - 方式一
$ composer create-project --prefer-dist laravel/laravel=5.8.* laravel-test // 新建项目 create-project // 以压缩的方式下载 --prefer-dist // 框架名称和版本号 laravel/laravel=5.8.* // 项目名称 laravel-test
- 方式二,跟上面写法不一样,但意思与结果一样。
$ composer create-project laravel/laravel your-project-name --prefer-dist "5.8.*"
- 如果报错
zsh: no matches found: laravel/laravel=5.8.*
,是因为 zsh 不兼容的问题,解决办法:
1、编辑~/.zshrc
$ vim ~/.zshrc
- 2、添加内容,然后保存
setopt no_nomatch
- 3、重新加载
~/.zshrc
,然后就可以再次运行创建命令了。
$ source ~/.zshrc
$ composer clearcache
- 重点:
如果遇到错误先清理缓存,在试一次,如果不是缓存问题在另找解决方案
。
四、安装 Laravel
开发必备组件
- laravel-ide-helper代码提示及补全工具。1、安装
// 对应 composer.json 中的 require,一般用这个 $ composer require barryvdh/laravel-ide-helper // 如果只想在开发环境安装请加上 --dev,对应 composer.json 中的 require-dev $ composer require barryvdh/laravel-ide-helper --dev
- 如果报错 Installation failed, reverting ./composer.json and ./composer.lock to their original content 点这里,或者上面的方式无法安装都可以点进去看看解决方式。
- 2、初始化
$ php artisan ide-helper:generate
- 如果报错
Method Illuminate\Routing\Route::get does not exist.
解决办法:找到/routes/web.php
文件,调整之后再次运行初始化命令
// 方式一:注销该行代码 // use Illuminate\Routing\Route; // 方式二:导入正确的地址 use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('welcome'); });
- 运行命令后,会输出
A new helper file was written to _ide_helper.php
,表示成功!
- 3、初始化前后比较
- 初始化前:
- 初始化后:
五、Laravel
项目运行(本地
、apache
、nginx
)
- 方式一:命令行启动,运行窗口不能关闭
$ php artisan serve // 或指定端口来运行 $ php artisan serve --port=8000
- 方式二:
apache
启动,注意文件夹的访问权限。
- 找到
httpd-vhosts.conf
新增一个虚拟机
<VirtualHost *:80> # 域名 ServerName www.dzm.com # 错误日志 ErrorLog "/Users/dengzemiao/Sites/laravel-test/logs/error.log" # 成功日志 CustomLog "/Users/dengzemiao/Sites/laravel-test/logs/access.log" combined # 域名根目录,注意:需要链接到 laravel 项目的 public 文件夹下 DocumentRoot "/Users/dengzemiao/Sites/laravel-test/public" # 域名根目录权限,注意:需要链接到 laravel 项目的 public 文件夹下 <Directory "/Users/dengzemiao/Sites/laravel-test/public"> # 运行列出目录(正式服务器需要去掉 Indexes) Options Indexes FollowSymLinks # 运行权限覆盖 AllowOverride All # 运行所有人访问 Require all granted </Directory> </VirtualHost>
- 重启
apache
,运行$ sudo apachectl -k restart
,打开http://www.dzm.com/
(由于我是本地电脑安装的apache
测试,非真服务器环境,本地需要修改hosts
文件,添加上127.0.0.1 www.dzm.com
)。 - 打开链接如果报错
failed to open stream: Permission denied
,说明文件有权限问题,解决办法:直接给整个项目加上访问权限:
// 进入到项目存放目录(这个看自己的存放位置) $ cd /usr/local/var // 直接给整个项目添加权限 $ chmod -R 777 laravel-test // 如果报错 `chmod: Unable to change file mode on laravel-test/storage/framework/views/eef325e700d1864421506922200f7548a0f32fd8.php: Operation not permitted` // 我这里是直接删除了这种文件,一看估计就是个缓存文件,然后重新添加权限
- 然后就访问成功!
- 方式三:
nginx
启动,注意文件夹的访问权限。
- 找到
nginx.conf
新增一个虚拟机,虚拟机模板是直接拷贝官网的
server { # 监听端口 listen 8081; # 主机名称 server_name www.dzm.com; # 域名根目录,注意:需要链接到 laravel 项目的 public 文件夹下 root /usr/local/var/laravel-test/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; # 官方配置 # location ~ \.php$ { # # 本地 php 服务端口 $ sudo php-fpm # # 设置监听端口 # fastcgi_pass 127.0.0.1:9000; # # 设置 nginx 的默认首页文件 # fastcgi_index index.php; # # 参数 # fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; # # 引入配置文件 # include fastcgi_params; # } # 本地配置(Mac) location ~ \.php$ { # 设置监听端口 fastcgi_pass 127.0.0.1:9000; # 设置 nginx 的默认首页文件 fastcgi_index index.php; # 引入 fastcgi 的配置文件 include fastcgi.conf; } location ~ /\.(?!well-known).* { deny all; } # 错误日志 error_log /usr/local/var/laravel-test/logs/error.log; # 成功日志 access_log /usr/local/var/laravel-test/logs/access.log; }
- 刷新
nginx
配置文件,运行$ nginx -s reload
,打开http://www.dzm.com/
或者http://www.dzm.com:8081/
(由于我是本地电脑安装的nginx
测试,非真服务器环境,本地需要修改hosts
文件,添加上127.0.0.1 www.dzm.com
)。 - 打开链接如果报错
failed to open stream: Permission denied
,可以看方式二:apache 启动
尾部的解决方法。 - 然后就访问成功!访问结果跟
方式二:apache 启动
一样。
- 到这里
Laravel
创建项目到服务器(nginx、apache)
运行就OK
了!!
六、目录结构
【重要目录】app 目录
:项目的核心目录,主要用于存放核心代码,所编写的代码绝大多数也会放到这里,如控制器、模型等。
控制器
存放app/Http/Controllers
模型存放
存放app/Models
,系统默认是根目录,文件夹需新建
bootstrap 目录
:Laravel
启动目录,目录包含了框架启动和自动加载设置的文件,autoload.php
文件用于自动载入需要的类文件,该文件夹只用来看一般不用改动,上线此目录要有可写的权限$ chmod -R 777 目录名
【重要目录】config 目录
:项目的配置日录,主要存放配置文件,比如数据库的配置。
app.php
: 项目主要配置文件database.php
: 针对数据库的配置- 文件名都可以见名思意 …
database 目录
:目录包含了数据迁移及填充文件,就是使用文件的方式,来管理数据库,创建一个PHP
文件,在文件中设计表结构,运行该文件,完成表的创建。public 目录
:Laravel
项目的web虚拟主机
指定的目录(也就是网址根目录)
,项目的入口文件和系统的静态资源目录(css, img, js, uploads)
后期使用的外部静态文件(js、 css.图片等)
都需要放到Public
目录下。【重要目录】resources 目录
:存放视图文件,还有就是语言包文件的目录。(注意:Laravel 中的模板引擎为 blade 模板引擎,后缀为 .php,也可以称为双后缀文件 例: welcome.blade.php)
【重要目录】routes 目录
:定义路由的目录,Laravel
中所有的访问请求,都必须事先定义好路由,web.php
定义网页路由,api.php
定义接口路由。storage 目录
:主要是存放缓存文件和日志文件。注意:如果在linux
环境下,该目录需要有可写
权限。vendor 目录
:主要是存放第三方的类库文件和Laravel
框架的源码,composer
下载的类库存放在该目录下面。.env 目录
:主要是设置一些系统相关的环境配置文件信息。config
目录里面的文件配置内容一般都是读取该文件里面的配置信息(config
里面的配置项的值基本都是来自.env
文件)。artisan 目录
:主要用于生成的代码的(自动生成),比如生成控制器,模型文件等。执行命令:$php artisan
,执行命令时,artisan
文件必须存在当前命令路径下,也就是需要cd
到artisan
这个文件目录,才能执行成功。