GithubHelp home page GithubHelp logo

wi1dcard / laravel-deployment Goto Github PK

View Code? Open in Web Editor NEW
207.0 13.0 29.0 7.18 MB

📗[WIP] 追求质量的 Laravel 应用部署上线课程。

Shell 100.00%
lnmp git nginx composer php php-fpm ubuntu envoy deployer ansible

laravel-deployment's Introduction

轻松部署 Laravel 应用

如何阅读

简介

项目开发完成,如何向世界展示你的作品?必不可少的一步就是 部署

实际上,目前国内大多创业型公司,对于程序员技能树的要求少不了部署。除了编写高效稳定的代码外,你还需要将这份代码快速、安全地部署到线上以供演示和交付等。这对于长期与 Laravel 和 PHP 打交道的开发者来说确实存在一些门槛:

  • 宝塔面板?一键包?手动部署?
  • 一键脚本都做了什么?怎样手动部署?
  • 有没有办法简化上述过程?
  • 出现故障怎么办?如何快速回滚版本?
  • ...

我早期一直从事 PHP 开发工作,对于以上问题曾经也感到困惑;近期转型运维向,在这个「痛苦」的学习过程中,我发现多数 PHP 程序员对部署并不熟悉;就像「隔行如隔山」,原本十分简易的流程,大家还在用着陈旧的工具、读着过时的教程,最终让部署成了一件难事儿。

目的

本课程内,我将尽全力降低对于运维以及 Shell 专业知识的要求,以尽可能贴近国内 PHP 工程师的方式讲述部署过程。读者可跟随课程描述,边学习边操作,快速了解整套流程,一步一步地实现发布上线。

同时,我将尝试多种部署方式。在这个过程中,你将感受到不同方案带来的优势,同时也不可避免地存在一些缺点,希望大家能够结合自身情况和实际需求,记住 适合即最优

知识点

上线 Laravel 项目,在技术层面基本可以分为三大步骤:

  1. 安装运行环境
  2. 配置运行环境
  3. 部署应用代码

以及可选项:

  1. 更新应用
  2. 回滚应用

预期大纲:

  • 常见一键 Web 面板
  • 常见一键配置脚本
  • 手动安装 Git、Nginx、Composer、PHP、PHP-FPM
  • Envoy
  • Deployer
  • Ansible
  • Terraform
  • Lexicon
  • ...

目录结构

.
├── README.md --------- 导语
├── helpers ----------- 辅助脚本目录(无需关注)
│   ├── deploy
│   ├── image
│   └── lint
└── src --------------- 实际课程目录
    ├── *.md ---------- Markdown 格式的文章
    ├── ...
    └── images -------- 图片目录
        ├── *.png ----- 截图、插图等
        └── ...

约定

在本课程中,若代码块的行首字符为 $,表示这是一行需要在命令行内执行的语句,例如:

$ echo "Hello deployment!"

在复制或输入时,请去掉开头的 $

在本课程中,将使用以下命令创建一个示例应用作为演示项目:

$ laravel new hello-deployment

在本课程中,如无特殊说明,将采用 Ubuntu Bionic 18.04 LTS 作为服务器系统。

番外

其它

常见注意事项如下:

  • 更新节奏不固定,业余时间写作。暂时计划 1-2 天每篇。
  • 本课程将不再赘述云服务购买等 基础且具备商业支持 的步骤。
  • 在开始学习前,请先了解一些基本概念,例如「什么是 Linux」、「Nginx 的作用」。
  • 对于 MySQL、Redis、ElasticSearch 等组件的安装与调优不在本课程的大纲范围内。

贡献

如有任何建议或意见请 提交 Issue 指出,感谢您的关注。

laravel-deployment's People

Contributors

ramzeng avatar varroreve avatar wi1dcard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

laravel-deployment's Issues

遗漏的 php-fpm 配置

关于 socket 路径:php-fpm 的 socket 文件是连接 app 和 php-fpm 的接点,通常的位置是 /var/run/php/php7.2-fpm.sock

对于此文件位置,app 的 Nginx 站点配置应和 php-fpm 配置保持一致。
参考
https://xblog.lufficc.com/blog/step-by-step-teach-you-to-deploy-your-laravel-application-to-server
https://laravel.com/docs/master/deployment

06. 手动部署 - 安装 PHP-FPM 里,应该添加这方面的提要:

sudo nano /etc/php/7.2/fpm/pool.d/www.conf

; listen = /run/php/php7.2-fpm.sock # 这是 PHP-FPM 安装之后默认 socket 路径
listen = /var/run/php/php7.2-fpm.sock

重启 sudo service php7.2-fpm restart 。

这样,Nginx 站点配置里的 php-fpm 的 socket 路径就与 php-fpm 配置里的 socket 路径保持一致了

P.S. 值得一提的是,digitalocean 的文档里也遗漏了对 PHP-FPM socket 路径的关注。

关于 nginx 配置文件存放目录的问题

作者您好,关于 nginx 配置文件通过 scp 上传至 sites-enabled 目录下,我觉得应该上传至 sites-available 目录下,然后在 sites-enabled 下创建软连接

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.