轻松部署 Laravel 应用 | 《10. 手动部署 - 生产环境的必要优化》
:clap: 本系列持续更新中,欢迎关注:https://github.com/wi1dcard/laravel-deploy...。
由于课程上下文关联比较紧密,在开始前请先阅读 本文。
你的支持是我写作的动力;关注我的客官们,请在右上角点个赞,将会让文章在首页展示,帮助更多人。
感谢 :clap: !
在上一节中,我们成功地以手动的方式完成了部署。不过,在生产环境下,我们还需要针对 Laravel 进行一些必要的优化。
本篇内容部分摘选自 Laravel 5.8 部署文档,你可以阅读该文档获取更多信息。
Nginx 配置
对于 Laravel 应用来说,优化 Nginx 配置所带来的性能提升可谓微不足道。因此不建议在中小型项目中花费较多精力调优 Nginx。
不过,有一点值得注意:
server {
# ...
location ~* \.(js|css)$ {
expires 24h;
}
#...
}
通过以上配置,可使 Nginx 匹配请求 URI,若以 js
或 css
结尾,则将响应头 Expires
的值设置为 24h
返回。客户端浏览器将根据该值建立资源缓存,并在指定时间后过期,因此可节省部分服务器静态资源流量。24h
可根据需要调整,若使用 CDN 服务分发静态资源,则不必配置此项。
Laravel 的配置缓存与路由缓存
开启 配置缓存 和 路由缓存 能够在一定程度上提升 Laravel 的性能。
$ php artisan config:cache # 生成配置缓存
注意:当开启配置缓存后,
env()
函数将会失效;它将会永远返回null
;因此务必确保在非配置文件内,未直接调用该函数。
$ php artisan route:cache # 生成路由缓存
注意:路由缓存仅支持控制器风格;若路由注册时存在闭包(Closures),则无法使用该功能。
注意:生成缓存后,对配置和路由的修改将不会生效,需再次执行缓存命令,或使用
php artisan cache:clear
命令清除它们。
Composer
在安装依赖时,建议使用以下命令:
$ composer install --optimize-autoloader --no-dev
其中,--optimize-autoloader
表示生成优化后的自动加载器,虽然生成过程可能较慢,但换来的是提高运行时的效率。--no-dev
表示不安装 composer.json 中 require-dev
声明的扩展包,在生产环境中我们不需要这些开发依赖。
再谈文件权限
文件权限直接关系到服务器安全与否。通常情况下,我们应当遵循「最小权限原则」,即权限越小越好。对于 Laravel 来说,我个人比较倾向的权限配置为 750
:
$ chmod -R 750 /var/www/deployment
你可以通过在线工具 Chmod Calculator 来解析八进制权限数字:
以上是 750
所代表的权限,即文件所有者可 读、写、执行,文件所有组可 读、执行,其余用户 均不可。
也就是说,运行 Nginx 和 PHP-FPM 的 www-data
用户,可读、写、执行;www-data
用户组内的用户可读、执行。
更加严格安全的另一个权限推荐是 640
,不过务必确保 www-data
用户具备 bootstrap/cache
和 storage
目录的 读、写 权限,在 Laravel 应用运行过程中是需要读写它们的。
杂项
根据应用本身的逻辑不同,涉及的 Laravel 功能也不一样。针对部分项目,你有可能还需要执行以下 Artisan 命令:
$ php artisan storage:link # 软链接 app/storage 到 public 目录,以便公开访问
$ php artisan migrate # 执行迁移
$ php artisan db:seed # 执行数据填充
本作品采用《CC 协议》,转载必须注明作者和本文链接
感觉这些东西很有用,收藏了~
请问老师,在手动部署04-10的系列文章里面,怎么没看到安装MYSQL数据库这一过程?