{"id":15630752,"url":"https://github.com/wi1dcard/laravel-deployment","last_synced_at":"2025-08-21T11:33:31.959Z","repository":{"id":39816085,"uuid":"173139865","full_name":"wi1dcard/laravel-deployment","owner":"wi1dcard","description":"📗[WIP] 追求质量的 Laravel 应用部署上线课程。","archived":false,"fork":false,"pushed_at":"2019-07-04T02:10:44.000Z","size":7353,"stargazers_count":209,"open_issues_count":1,"forks_count":28,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-12-10T08:51:22.537Z","etag":null,"topics":["ansible","composer","deployer","envoy","git","lexicon","lnmp","nginx","php","php-fpm","terraform","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wi1dcard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-28T15:44:50.000Z","updated_at":"2024-07-16T08:54:06.000Z","dependencies_parsed_at":"2022-08-31T00:02:19.285Z","dependency_job_id":null,"html_url":"https://github.com/wi1dcard/laravel-deployment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wi1dcard%2Flaravel-deployment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wi1dcard%2Flaravel-deployment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wi1dcard%2Flaravel-deployment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wi1dcard%2Flaravel-deployment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wi1dcard","download_url":"https://codeload.github.com/wi1dcard/laravel-deployment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230511479,"owners_count":18237657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","composer","deployer","envoy","git","lexicon","lnmp","nginx","php","php-fpm","terraform","ubuntu"],"created_at":"2024-10-03T10:36:16.534Z","updated_at":"2024-12-19T23:14:07.976Z","avatar_url":"https://github.com/wi1dcard.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 轻松部署 Laravel 应用\n\n[![](https://travis-ci.com/wi1dcard/laravel-deployment.svg?branch=master)](https://travis-ci.com/wi1dcard/laravel-deployment)\n[![](https://img.shields.io/github/stars/wi1dcard/laravel-deployment.svg)](https://github.com/wi1dcard/laravel-deployment)\n\n## 如何阅读\n\n- [LearnKu](https://learnku.com/blog/Wi1dcard/tags/easy-deployment-of-laravel-applications_50034)\n- [GitHub](https://github.com/wi1dcard/laravel-deployment/tree/master/src)，配合 [Octotree](https://github.com/ovity/octotree) 插件能够显示目录，获得较好的阅读体验：\n    ![](https://github.com/wi1dcard/laravel-deployment/raw/master/src/images/1a8dc8c46498f35e52a46553ed1ea342.png)\n\n## 简介\n\n项目开发完成，如何向世界展示你的作品？必不可少的一步就是 **部署**。\n\n实际上，目前国内大多创业型公司，对于程序员技能树的要求少不了部署。除了编写高效稳定的代码外，你还需要将这份代码快速、安全地部署到线上以供演示和交付等。这对于长期与 Laravel 和 PHP 打交道的开发者来说确实存在一些门槛：\n\n- 宝塔面板？一键包？手动部署？\n- 一键脚本都做了什么？怎样手动部署？\n- 有没有办法简化上述过程？\n- 出现故障怎么办？如何快速回滚版本？\n- ...\n\n我早期一直从事 PHP 开发工作，对于以上问题曾经也感到困惑；近期转型运维向，在这个「痛苦」的学习过程中，我发现多数 PHP 程序员对部署并不熟悉；就像「隔行如隔山」，原本十分简易的流程，大家还在用着陈旧的工具、读着过时的教程，最终让部署成了一件难事儿。\n\n## 目的\n\n本课程内，我将尽全力降低对于运维以及 Shell 专业知识的要求，以尽可能贴近国内 PHP 工程师的方式讲述部署过程。读者可跟随课程描述，边学习边操作，快速了解整套流程，一步一步地实现发布上线。\n\n同时，我将尝试多种部署方式。在这个过程中，你将感受到不同方案带来的优势，同时也不可避免地存在一些缺点，希望大家能够结合自身情况和实际需求，记住 **适合即最优**。\n\n## 知识点\n\n上线 Laravel 项目，在技术层面基本可以分为三大步骤：\n\n1. 安装运行环境\n2. 配置运行环境\n3. 部署应用代码\n\n以及可选项：\n\n4. 更新应用\n5. 回滚应用\n\n预期大纲：\n\n- [x] 常见一键 Web 面板\n- [x] 常见一键配置脚本\n- [x] 手动安装 Git、Nginx、Composer、PHP、PHP-FPM\n- [ ] Envoy\n- [ ] Deployer\n- [ ] Ansible\n- [ ] Terraform\n- [ ] Lexicon\n- ...\n\n## 目录结构\n\n```\n.\n├── README.md --------- 导语\n├── helpers ----------- 辅助脚本目录（无需关注）\n│   ├── deploy\n│   ├── image\n│   └── lint\n└── src --------------- 实际课程目录\n    ├── *.md ---------- Markdown 格式的文章\n    ├── ...\n    └── images -------- 图片目录\n        ├── *.png ----- 截图、插图等\n        └── ...\n```\n\n## 约定\n\n在本课程中，若代码块的行首字符为 `$`，表示这是一行需要在命令行内执行的语句，例如：\n\n```bash\n$ echo \"Hello deployment!\"\n```\n\n在复制或输入时，请去掉开头的 `$`。\n\n在本课程中，将使用以下命令创建一个示例应用作为演示项目：\n\n```bash\n$ laravel new hello-deployment\n```\n\n在本课程中，如无特殊说明，将采用 `Ubuntu Bionic 18.04 LTS` 作为服务器系统。\n\n## 番外\n\n- [你需要哪些云服务基础设施？](https://wi1dcard.cn/posts/cloud-infrastructures/)\n- [浅析 Laravel 文档推荐的 Nginx 配置](https://wi1dcard.cn/posts/laravel-recommended-nginx-conf-analysis/)\n- [我如何实现 Laravel-China 全自动系列文章发布](https://wi1dcard.cn/posts/automatic-learnku-deploy-bot/)\n- 配置 Sudoer（待编写）\n- 为 Nginx 站点部署 HTTPS（待编写）\n- CI/CD 集成（待编写）\n\n## 其它\n\n常见注意事项如下：\n\n- 更新节奏不固定，业余时间写作。暂时计划 1-2 天每篇。\n- 本课程将不再赘述云服务购买等 **基础且具备商业支持** 的步骤。\n- 在开始学习前，请先了解一些基本概念，例如「什么是 Linux」、「Nginx 的作用」。\n- 对于 MySQL、Redis、ElasticSearch 等组件的安装与调优不在本课程的大纲范围内。\n\n## 贡献\n\n如有任何建议或意见请 [提交 Issue](https://github.com/wi1dcard/laravel-deployment/issues/new) 指出，感谢您的关注。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwi1dcard%2Flaravel-deployment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwi1dcard%2Flaravel-deployment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwi1dcard%2Flaravel-deployment/lists"}