This Is A Web System Manage
php7.3 mysql5.7 nginx1.16
php扩展:
--PHP OpenSSL
--PHP PDO
--PHP Mbstring
--PHP Tokenizer
--PHP XML
--PHP Fileinfo
php安全函数
--proc_open
--proc_get_status
--exec
--putenv
--pcntl_signal
--pcntl_alarm
重命名.env.example为.env
配置Db、Redis
配置菜单权限`MENU_AUTH`为false
其他配置按需求设置
composer install --optimize-autoloader --no-dev
--optimize-autoloader 可优化20%~25%的性能
php artisan key:generate
php artisan migrate
php artisan db:seed
.env开启菜单权限`MENU_AUTH`为true
php artisan down
git pull origin master
php artisan migrate
php artisan clear-compiled
php artisan route:clear
php artisan cache:clear
php artisan config:clear
php artisan optimize
composer dump-autoload --optimize
--optimize 可优化20%~25%的性能
php artisan up
php artisan migrate 错误
Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
原因是最大长度是1000字节 给定的是1071
laravel 5.4以上用的是utf8mb4编码【每字符4字节】
解决方案 在AppServiceProvider.php中的boot方法加入下面一行
Schema::defaultStringLength(250); 1000/4
Call to undefined function App\Observers\prettyPrint()
原因是更新composer.json之后 没有在autoload/files加上 "app/Helpers/Helpers.php"
composer require --dev barryvdh/laravel-ide-helper
在config/app.php add service provider
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class
门面的自动PHPDOC生成 === 每次使用composer都要重新运行改命令
php artisan ide-helper:generate
php artisan ide-helper:meta
php artisan ide-helper:models
也可以添加执行脚本至composer.json
"scripts":{
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"@php artisan ide-helper:generate",
"@php artisan ide-helper:models",
"@php artisan ide-helper:meta"
]
},
composer require --dev barryvdh/laravel-debugbar
在config/app.php add service provider
Barryvdh\Debugbar\ServiceProvider::class,
生成配置
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
.env DEBUGBAR_ENABLED=true/false
composer require overtrue/laravel-ueditor
在config/app.php add service provider
Overtrue\LaravelUEditor\UEditorServiceProvider::class
生成静态资源
php artisan vendor:publish --provider='Overtrue\LaravelUEditor\UEditorServiceProvider'
blade引入资源
<!--引入资源-->
@include('vendor.ueditor.assets')
<!-- 编辑器容器 -->
<script id="container" name="content" type="text/plain"></script>
<!-- 实例化编辑器 -->
<script type="text/javascript">
var ue = UE.getEditor('container');
ue.ready(function() {
ue.execCommand('serverparam', '_token', '{{ csrf_token() }}'); // 设置 CSRF token.
});
</script>
开启storage资源软连接
php artisan storage:link
composer require mews/captcha
在config/app.php add service provider
Mews\Captcha\CaptchaServiceProvider::class
生成配置文件
php artisan vendor:publish --provider="Mews\Captcha\CaptchaServiceProvider" --tag=config
composer require overtrue/laravel-lang
在config/app.php add service provider and edit locale 'zh-CN'
Illuminate\Translation\TranslationServiceProvider::class,
locale => zh-CN
在resources/lang add zh-CN
php artisan lang:publish zh-CN
生产环境需要使用进程管理器 Supervisor 来确保队列处理器不会停止运行
队列存储需要的数据表
php artisan queue:table
php artisan migrate
创建任务UpdateAdminUserLoginInfo (用于后台用户登录后更新登录的信息)
php artisan make:job UpdateAdminUserLoginInfo
推送任务
public function handle()
{
//TODO
}
dispatch(new UpdateAdminUserLoginInfo());
启动队列 在配置文件开启对应的队列驱动模式
// --queue 被监听的队列
// --daemon 在后台模式运行
// --delay 给执行失败的任务设置延时时间 (默认为零: 0)
// --force 强制在「维护模式下」运行
// --memory 内存限制大小,单位为 MB (默认为: 128)
// --sleep 当没有任务处于有效状态时, 设置其进入休眠的秒数 (默认为: 3)
// --tries 任务记录失败重试次数 (默认为: 0)
php artisan queue:work --daemon [--queue[="..."]] [--delay[="..."]] [--force[="..."]] [--memory[="..."]] [--sleep[="..."]] [--tries[="..."]]
#laravel事件 监听 观察者 服务 创建一个系统操作事件
php artisan artisan make:event SystemOperation
监听这个事件
php artisan artisan make:listener SystemLogs
观察者 模型的操作观察 Laravel事先已经定义好了 10 个模型事件以供我们使用
// creating 监听数据即将创建的事件。
// created 监听数据创建后的事件。
// updating 监听数据即将更新的事件。
// updated 监听数据更新后的事件。
// saving 监听数据即将保存的事件。
// saved 监听数据保存后的事件。
// deleting 监听数据即将删除的事件。
// deleted 监听数据删除后的事件。
// restoring 监听数据即将从软删除状态恢复的事件。
// restored 监听数据从软删除状态恢复后的事件。
php artisan artisan make:observer ModelObserver
在app\config 新建一个配置 内容如下
'event' => [
'listeners' => [
'App\Events\SystemOperation' => [
'App\Listeners\SystemLogs',
],
],
'observers' => [
\App\Model\Admin\AdminMenu::class
...
],
],
注册一个服务
artisan make:provider SystemOperationProvuder
//boot内容
$allListeners = config('blog.event.listeners');
foreach ($allListeners as $event => $listeners) {
foreach ($listeners as $listener) {
Event::listen($event, $listener);
}
}
$observers = config('blog.event.observers');
foreach ($observers as $observer) {
$observer::observe(ModelObserver::class);
}