hero image

An5dy

Laravel
Laravel
Laravel 是优雅的 PHP Web 开发框架。
Laravel China
Laravel China
Laravel China 中文社区。
laravel-admin
laravel-admin
在十分钟内构建一个功能齐全的管理后台。
Go
Go
Go 语言官方文档。
Gin
Gin
Go 语言编写的 Web 框架。
Vue.js
Vue.js
渐进式 JavaScript 框架。
部署 Laravel 和 Vue 前后端分离项目

Nginx 配置

主要利用 Nginx 的反向代理功能,前后端项目通过代理到不同的端口号,来区分 Laravel 和 Vue 单页面项目。

Nginx 配置文件

server {
  listen 8282;# 后端端口号
  root /www/laravel/public;
  index index.php;
  server_name localhost;
  charset utf-8;

  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-Content-Type-Options "nosniff";

  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; }

  # access_log  /var/log/nginx/nginx.laravel.access.log  main;
  error_log  /var/log/nginx/nginx.laravel.error.log warn;

  error_page 404 /index.php;

  location ~ \.php$ {
    fastcgi_pass        127.0.0.1:9000;
    fastcgi_buffers     16 16k;
    fastcgi_buffer_size 32k;
    include             fastcgi-php.conf;
    include             fastcgi_params;
  }
}

An5dyNginxNginx大约 1 分钟
隐藏 Nginx 和 PHP 版本号

当访问以 Nginx 为 web 服务器,PHP 为脚本的网站时,默认会在 header 头中显示 NginxPHP 的版本号,这些暴露出来的信息在一定程度上存在安全隐患(当黑客攻击服务器时,会收集服务器相关信息,比如软件的版本等,然后利用这些信息,挖掘相关漏洞来对服务进行攻击),所以在一定程度上隐藏这些信息是十分有必要的。

通过请求可以获取如下信息:

curl -i http://test.it

HTTP/1.1 200 OK
Server: nginx/1.15.8
...
X-Powered-By: PHP/7.2.19

An5dyNginxNginx小于 1 分钟
laravel-admin 按模块拆分后台业务组件 laravel-admin-modules

场景

laravel-admin 是一个可以快速帮你构建后台管理的工具,它提供的页面组件和表单元素等功能,能帮助你使用很少的代码就实现功能完善的后台管理功能。但是当后台功能不断迭代,导致原本的 Admin 目录过于庞大,不同功能模块之间如果使用相同的 Model 会导致出现一些不必要的 bug(比如访问器、修改器等对字段的修改,导致不同模块之间数据不一致),基于以上问题,利用学习《LX2 PHP 扩展包实战教程 - 从入门到发布》期间写了 an5dy/laravel-admin-modules 这个 laravel-admin 扩展包,能够实现简单地基于业务对后台进行模块拆分。


An5dyPHPLaravelLaravel-admin大约 3 分钟
使用 Docker 部署 Nuxt.js 项目

Nuxt.js

Nuxt.jsVue.js 的通用应用框架,采用服务器端渲染(SSR 渲染),使得基于 Vue 的单页 Web 应用 (single page web application,SPA) 也能够拥有良好的 SEO (Search Engine Optimization)支持。


An5dyDockerDuckerNext.js大约 2 分钟
SQL练习(一)

一直想提高自己对 SQL 的认知水平,最近终于下决心好好学习下,首先做了《超经典SQL练习题,做完这些你的 SQL 就过关了》这篇文章中的50道 SQL 题目,确实蛮有意思的,写 SQL 重要的是在于思路,不同的思路有不同的解法,当然 SQL 的性能问题暂时还未考虑,后面将会不断的补充和完善。练习使用的数据库为 MySQL8。

数据

学生表(Student)


An5dyDatabaseMySQL大约 13 分钟
Laravel6 修改 User 模型命名空间

Laravel6 默认 User 模型在 App\User 命名空间下,为了利于项目管理,故将 User 模型移动到 Models 目录下,需修改模型命名空间,即 App\Models\User 命名空间,移动 User 模型后,同时需要修改几处引用到原模型的文件。

修改 User 模型命名空间

修改 app/Models/User.php 文件

<?php

// namespace App;
namespace App\Models;

An5dyPHPLaravelLaravel6小于 1 分钟
TNTSearch + SCWS 实现中文全文搜索

前段时间,我一直想给自己的博客加个全文搜索功能,用 ElasticSearch、Sphinx 等功能强大的全文搜索引擎总有种杀鸡焉用牛刀的感觉,正好在逛 Laravel-China 社区时,有大神推荐 TNTSearch 这个纯 PHP 编写的轻量级全文检索引擎,性能不错且安装便捷,非常符合我的需求。参考了 《TNTSearch - PHP 实现的全文索引引擎》《轻量级全文检索引擎 TNTSearch 和中文分词》等文章后,利用 Lumen + TNTSearch 实现了全文搜索功能。


An5dyPHPLumenSCWS大约 5 分钟