第2节课中我们安装了官方的一个简易blog项目,该项目中已搭建了一个基本应用的结构,但在实际开发中,往往项目的结构并不是这样,今天这堂课我们从0开始新建一个项目,一切都是空白,真正从0开始
一: 安装laravel框架
1. 新建项目文件夹tutorial
2. 虚拟主机配置
建入口文件夹public和文件 index.php
修改homestead.yaml和host文件,工作环境为home,域名tutorial.app
3. putty登录虚拟机生成并配置composer.json 和 package.json文件
composer.json, php包配置文件
{
"name": "advance100/tutorial",
"description": "有声有色出品laravel系列教程",
"keywords": [
"framework",
"laravel",
"advance100",
"tutorial",
"laravel学习教程"
],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.0.0",
"advance100/helper": "^2.0",
"fideloper/proxy": "~3.3",
"laravel/framework": "5.5.*"
},
"require-dev": {
},
"autoload": {
"psr-4": {
}
},
"autoload-dev": {
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"scripts": {
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
},
"repositories": {
"hooks": {
"type": "composer",
"url": "https://larapack.io"
}
}
}
package.json, node包配置文件
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.16.2",
"bootstrap-sass": "^3.3.7",
"cross-env": "^5.0.1",
"jquery": "^3.1.1",
"laravel-mix": "^1.0",
"lodash": "^4.17.4",
"vue": "^2.1.10"
}
}
4. 安装laravel和laravel-mix
后台(安装在vendor下)
vagrant@homestead:~/abcde/study/tutorial$ composer config -g repo.packagist composer https://packagist.phpcomposer.com
vagrant@homestead:~/abcde/study/tutorial$ composer install
安装后的包有
包名 | 说明 |
---|---|
advance100 | 调试会用到 |
doctrine | 数据库中会用到 |
laravel | 重点 |
mtdowling | mtdowling/cron-expression,用这个来解析cron表达式 |
psr | – |
symfony | laravel请求,响应,Cookie等继承自它 |
egulias | egulias/email-validator邮箱校验封装,Yii2也用的是它 |
nesbot | nesbot/carbon,PHP 日期、时间和时区处理 API 及组件,参考 |
ramsey | ramsey/uuid用来生成唯一识别码,参考 |
tijsverkoyen | tijsverkoyen/css-to-inline-styles转为页面内的style,在发邮件时特有用 |
composer | 自动加载管理 |
erusev | erusev/parsedown用来解析markdown文件,参考 |
monolog | 错误日志处理 |
paragonie | paragonie包中的random_compat用来生成随机数 |
swiftmailer | 电子邮件 |
vlucas | 环境变量处理,为配置文件服务 |
autoload.php | 自动加载对外文件 |
前端(安装在node_modules下)
vagrant@homestead:~/abcde/study/tutorial$ sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
vagrant@homestead:~/abcde/study/tutorial$ sudo cnpm i
说明:在虚拟机使用npm安装包时,如果是非administrator用户执行vagrant up的话,此处会报Install fail! Error: EPROTO: protocol error, symlink '_axios@0.16.2@axios' -> '/home/vagrant/abcde/study/tutorial/node_modules/axios'
,有两个办法解决,一是直接在windows主机安装,这个办法最为简单,二是以管理员的身份执行 vagrant up,这也可以,但有个小问题,会另开一个虚拟机,关闭虚拟机,退出,另再以另外身份登录后启动 vagrant up.
我是直接在win10的dos下安装
D:\03www2018\study\tutorial>npm install -g cnpm --registry=https://registry.npm.taobao.org
D:\03www2018\study\tutorial>cnpm i
在D:\03www2018\study\tutorial\node_modules有1900个项目(windows安装是1894个)
二:建数据库tutorial
字符集utf8mb4 — UTF-8 Unicode,排序规则 utf8mb4_general_cigrant all privileges on tutorial.* to daqi@localhost identified by "daqi168" WITH GRANT OPTION;
这里的用户名daqi和密码daqi168等会在下面的配置文件.env.home中会用到
三:新建项目tutorial
打开PhpStorm, Create New Project From Existing Files,指定下面三个项
Project Root项目根目录,指的是工程目录
Resource Root资源根目录 指的是资源目录 比如图片外部资源的存放目录
Excluded 一定要将node_modules排除掉,否则太大了,建项目会卡
创建下面文件夹及文件
项目根目录
│ composer.json
│ composer.lock
│ package.json
│ artisan//console入口文件
├───public
│ └╌╌╌╌ index.php // web入口文件
├───node_modules(下面略)
├───vendor
│ ├╌╌ composer
│ ├╌╌ doctrine
│ ├╌╌ egulias
│ ├╌╌ erusev
│ ├╌╌ laravel
│ ├╌╌ league
│ ├╌╌ monolog
│ ├╌╌ mtdowling
│ ├╌╌ nesbot
│ ├╌╌ paragonie
│ ├╌╌ psr
│ ├╌╌ ramsey
│ ├╌╌ swiftmailer
│ ├╌╌ symfony
│ ├╌╌ tijsverkoyen
│ ├╌╌ vlucas
│ ├╌╌ autoload.php
│ └╌╌ advance100
│ ├╌╌ helper
│ ├╌╌ laravel-ext //此处放laravel框架扩展,不建议项目直接继承laravel框架
│ └╌╌ laravel-tutorials
│ └╌╌src
│ ├╌╌lesson01
│ ├╌╌lesson02
│ ├╌╌lesson03
│ ├╌╌lesson04 //本节课文件夹,每一课是一个独立的项目
│ └╌╌lesson05
lesson04项目下文件结构
//将第2课中相应的文件夹拷贝过来就行
┌───app
├───bootstrap
├───config
├───database
├───resources
├───routes
├───storage
composer.json中加上
"autoload": {
"psr-4": {
"App\\":"./vendor/advance100/laravel-tutorials/src/lesson04/app",
"Advance100\\Laraext\\":"./vendor/advance100/laravel-ext",
"Advance100\\Tutorial\\":"./vendor/advance100/laravel-tutorials/src/lesson04"
}
},
检查是否有语法错误 vagrant@homestead:~/abcde/study/tutorial$ composer validate
更新自动加载文件 vagrant@homestead:~/abcde/study/tutorial$ composer dumpautoload
四: 部分重要文件
1.指定环境配置文件.env.home
放在D:\03www2018\study\tutorial\vendor\advance100\laravel-tutorials\src\lesson04下面
2. console入口文件 artisan
此入口文件可以为任意名字,我改为a,少写几个字母
3. web入口文件 index.php
4. 生成项目的key
参考源代码IlluminateFoundationConsoleKeyGenerateCommand::handle里面讲了如何生成这个key的
,它会用到配置文件中的cipher配置加密算法为AES-256-CBCvagrant@homestead:~/abcde/study/tutorial$ php a key:generate
自动会修改.env.home中的APP_KEY配置