2018-09-16: 感觉docker是更好的选择,找机会实验一下。
7/30
[推荐]使用Mac安装virtualbox+homestead配置laravel环境
注:(一开始没注意到,虽然没有尝试过,但是目前感觉这个更适用)Valet只支持Mac,并且要求本地安装了PHP和数据库服务器,这可以通过使用Homebrew命令轻松实现
核心思想:在virtualbox里运行homestead虚拟机,并且使得虚拟机和主机共享一个文件夹,把laravel安装在这个文件夹里,使得配置和运行时在虚拟机里操作这个文件夹,在本机使用编辑器操作laravel里的文件。
- 安装homestead
-
用户名/密码:vagrant/vagrant
- vagrant命令
vagrant和homestead的理解:vagrant是一个管理虚拟机的工具。对于Mac的laravel/homestead官方文档来说,首先在根目录下安装homestead,相当于有一个总的虚拟机。每次新建项目时,现在总的虚拟机里对应文件夹下(如~/Code)新建laravel项目,然后composer require laravel/homestead –dev安装分别的虚拟机,实现每个项目单独一个环境。之后修改homestead.yaml文件以及hosts文件,完成整个新建项目的任务。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1. 找到根目录下的homestead,vagrant up启动虚拟机。
2. 在Code文件夹下laravel new blog新建一个项目
3. composer require laravel/homestead --dev 安装项目自己的homestead
4. 实现每个项目有单独的虚拟机启动 --------
* vagrant up [vm-name] 启动单虚拟机[特定虚拟机]
* vagrant box add [box-name] 增加镜像
* vagrant box remove [box-name] 删除镜像
* vagrant reload 重启
* vagrant halt 关闭
* vagrant destroy 销毁
* vagrant snapshot save shot1 快照
* vagrant reload --provision 修改Homestead.yaml后重启并读取配置文件
* 给每个项目安装不同的 Homestead 配置文件,直接安装至项目中*(每个项目分别有一个homestead)*
* 新建项目: laravel new app
* app路径下,虚拟机输入命令:composer require laravel/homestead --dev
* 虚拟机:php vendor/bin/homestead make
* /etc/hosts文件增加对应的IP地址和路由
* 转换项目则在总的Homestead文件夹里homestead.yaml配置文件修改ip地址为对应的ip地址
* 重启虚拟机:vagrant reload --provision
* mysql端口、用户名密码:3306(33060)/homestead/secret
* *注意:root用户的密码也是secret*
* SSH: 2222 → Forwards To 22
* HTTP: 8000 → Forwards To 80
* HTTPS: 44300 → Forwards To 443
* MySQL: 33060 → Forwards To 3306
* Postgres: 54320 → Forwards To 5432
-
nginx使用 nginx应该是安装在homestead虚拟机里的,本机不需要安装。
- 查看是否启动:
ps -ef|grep nginx
- 查看端口占有情况:netstat -ntpl
- 查看laravel版本(laravel文件目录下):php artisan –version
- 查看是否启动:
-
正常操作
- vagrant up
- vagrant ssh
- vagrant halt
- 生成auth模块:php artisan make:auth
7/31
- 新建laravel项目 composer 或者 laravel new blog
- 启动laravel服务器:php artisan serve
-
laravel文件夹结构
- routes:路由情况
- resources/views:界面
-
技巧
- sublime:cmd+P–rweb->routes/web.php
- 一键建立表:php artisan migrate
8/1
- composer dumpautoload 优化自动加载、提高效率
-
RESTFUL
- create => post
- read => get
- update => put/patch
- delete => delete
- 新建restful对象:php artisan make:controller UsersController
- php artisan list make
疑惑
- composer create-project和laravel new的区别
- 在不同的项目里分别安装homestead,遇到部分配置按照总Homestead的,部分是独自的Homestead配置的情况,不太理解。
- [已解决]php artisan miagre:refresh报错table exist;mysql数据库的migration表中没有对应新建的create_xxx_table项。不执行对应操作
8/2
- 新建项目:
- laravel new app
- laravel new blog –dev(获取dev版)
- composer create-project –prefer-dist laravel/laravel blog
- rm -rf app (删除项目)
- routes文件夹:web.php存储路径
- 新建mysql用户(权限似乎有点问题,无法修改mysql.user表)
- create database blog;
- grant all privileges on . to root@’%’ identified by ‘’;
- insert into user(Host,User,authentication_string) values(‘localhost’,’root’,password(‘’));
- grant usage on . to ‘root’@’%’ identified by ‘’ with grant option;
- php artisan migrate将数据库的表格转移到新的数据库中
-
给予新的URI参数web.php:
1 2 3 4 5
Route::get('/', function () { return view('welcome', [ 'name' => 'world' #return view('welcome')->with('name', 'worlld!');功能一致 ]); });
-
blade文件中可以直接使用@而不是<?php ?>在html中插入PHP代码
1 2 3 4 5
<ul> @foreach ($tasks as $task) <li>\{\{\$task\}\}</li> @endforeach </ul>
-
新建数据库表 php artisan查看所有指令
- php artisan make:migration create_tasks_table #新建在/database/migrations
- 修改生成的文件,使得数据库的表的要求适合自己的项目。注意要设置主键,或者用自带的id作为主键。
- 若删除了文件,可以使用composer dumpautoload重新配置,再使用第一步的命令继续。
- 编辑完输入php artisan migrate实现把命令对应到数据库中。
- 如果写错了 使用php artisan migrate:refresh回滚重新配置。
- mysql使用当前时间 \func now(),之间输入now()报错。
- dd($id) dying dump 终止并输出;
- print_r()
- var_dump();die();
-
//删除文件夹下的所有 .git 文件
find . -name ".git" | xargs rm -Rf
- mysql5.7.19新建用户
- create user ‘test’@’%’ identified by ‘password’; #新建用户
- grant all on test.* to ‘test’@’%’; #获得权利
- Delete FROM user Where User=’test’ and Host=’localhost’; #删除用户
- flush privileges;
8/3
- 新建类:php artisan make:model Student
- php artisan tinker 用来交互检查指令搜索数据库内容的测试shell
8/4
-
seeder自动填充数据到mysql数据库
- php artisan make:seeder StudentTableSeeder #新建文件在databases/seeds/路径下
- composer dumpautoload
-
修改StudentTableSeeder文件
1 2 3 4 5 6 7 8 9 10
for ($i=0; $i < 10; $i++) { DB::table('students')->insert([ // 'title' => 'Title '.$i, // 'slug' => 'first-page', // 'body' => 'Body '.$i, // 'user_id' => 1, 'student_id' => 'studnet'.$i, 'student_name' => 'student_name'.$i, 'class' => 'class'.$i, ]);
- php artisan db:seed
-
设置api路径,访问时为IP/api/info
1 2 3 4
Route::get('info',function () { $students = DB::table('students')->get(); return $students; });
-
遇到Vue通过axios访问laravel时Access-Control-Allow-Origin的问题,通过在后端增加插件laravel-cors解决(此问题针对laravel5.5版本)。具体问题可以深究一下。
9/11
- 注意修改阿里云控制台的安全组,让外网可以请求服务器。
- 完成ballot项目,配置服务器遇到问题。根据教程遇到问题502 NO Gateway。研究出新的方法:在ubunut中若服务器遇到问题,查看/var/log/nginx/error.log,看到具体报错问题。这次是/etc/nginx/sites-available/default配置文件中的
fastcgi://unix:/var/run/php7.1-fpm.sock:
位置错误,修改为fastcgi://unix:/var/run/php/php7.1-fpm.sock:
解决问题。 - If a new extension is needed to be used, do not forget to add the path in /config/app.php.
- Use a laravel extension to optimize the picture
- Minimize the font package size, Using the tools