PHP 语言 Laravel 部署指南

PHP阿木 发布于 17 天前 3 次阅读


Laravel 部署指南:从本地开发到生产环境

Laravel 是一款流行的 PHP 框架,它以其优雅的语法、丰富的功能以及强大的社区支持而受到开发者的喜爱。将 Laravel 应用从本地开发环境部署到生产环境是一个复杂的过程,涉及到多个步骤和配置。本文将详细阐述 Laravel 部署的整个过程,包括环境准备、配置管理、数据库迁移、缓存和队列设置等。

1. 环境准备

在部署 Laravel 应用之前,需要确保服务器环境满足以下要求:

1.1 操作系统

- Linux:推荐使用 Ubuntu 18.04 或 CentOS 7。

- Windows:虽然 Laravel 也支持 Windows,但生产环境通常推荐使用 Linux。

1.2 PHP 版本

- PHP 7.4:Laravel 8 及以上版本推荐使用 PHP 7.4。

- PHP 扩展:确保安装了 `mbstring`, `openssl`, `pdo`, `tokenizer`, `xml`, `ctype`, `json`, `bcmath`, `fileinfo` 和 `tokenizer` 扩展。

1.3 数据库

- MySQL:推荐使用 MySQL 5.7 或更高版本。

- PostgreSQL:Laravel 也支持 PostgreSQL。

1.4 Web 服务器

- Nginx:推荐使用 Nginx 作为 Web 服务器。

- Apache:虽然 Apache 也支持 Laravel,但 Nginx 通常提供更好的性能。

1.5 其他工具

- Git:用于版本控制。

- Composer:用于管理 PHP 依赖。

2. 配置管理

为了方便管理和维护,推荐使用配置管理工具,如 Ansible、Chef 或 Puppet。

2.1 安装配置管理工具

以下以 Ansible 为例,展示如何安装和配置:

bash

安装 Ansible


sudo apt-get install ansible

配置 Ansible


sudo vi /etc/ansible/ansible.cfg


在 `ansible.cfg` 文件中,配置 `inventory` 文件,例如:


[default]


localhost,127.0.0.1,::1


2.2 编写 Ansible Playbook

创建一个名为 `laravel_deploy.yml` 的 playbook,用于部署 Laravel 应用:

yaml

---


- name: Deploy Laravel application


hosts: default


become: yes


tasks:


- name: Install PHP and extensions


apt:


name:


- php7.4


- php7.4-mysql


- php7.4-gd


- php7.4-mbstring


- php7.4-openssl


- php7.4-pdo


- php7.4-tokenizer


- php7.4-xml


- php7.4-ctype


- php7.4-json


- php7.4-bcmath


- php7.4-fileinfo


- php7.4-zip


state: present

- name: Install Nginx


apt:


name: nginx


state: present

- name: Install MySQL


apt:


name: mysql-server


state: present

- name: Install Composer


apt:


name: composer


state: present

- name: Clone Laravel application


git:


repo: git@github.com:your-username/your-repo.git


dest: /var/www/your-app


version: master

- name: Install PHP dependencies


command: composer install --no-dev


dir: /var/www/your-app

- name: Configure Nginx


template:


src: nginx.conf.j2


dest: /etc/nginx/sites-available/your-app


notify:


- restart nginx

- name: Create database


mysql_db:


name: your-app


state: present

- name: Create database user


mysql_user:


name: your-app


password: your-password


priv: 'your-app.:ALL'


state: present

- name: Grant privileges to database user


mysql_grants:


name: your-app


priv: 'ALL PRIVILEGES'


state: present


在 `nginx.conf.j2` 文件中,配置 Nginx:

nginx

server {


listen 80;


server_name your-app.com;

root /var/www/your-app/public;

index index.php index.html index.htm;

location / {


try_files $uri $uri/ /index.php?$query_string;


}

location ~ .php$ {


include snippets/fastcgi-php.conf;


fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;


fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


include fastcgi_params;


}


}


2.3 部署 Laravel 应用

执行以下命令部署 Laravel 应用:

bash

sudo ansible-playbook laravel_deploy.yml


3. 数据库迁移

在部署过程中,需要将数据库迁移到最新版本。以下命令用于执行迁移:

bash

cd /var/www/your-app


php artisan migrate


4. 缓存和队列设置

Laravel 支持多种缓存驱动和队列系统。以下以 Redis 为例,展示如何配置缓存和队列:

4.1 安装 Redis

bash

sudo apt-get install redis-server


4.2 配置缓存

编辑 `.env` 文件,设置缓存驱动为 Redis:

env

CACHE_DRIVER=redis


4.3 配置队列

编辑 `.env` 文件,设置队列驱动为 Redis:

env

QUEUE_CONNECTION=redis


4.4 创建 Redis 队列消费者

bash

cd /var/www/your-app


php artisan queue:work


5. 总结

本文详细介绍了 Laravel 部署的整个过程,包括环境准备、配置管理、数据库迁移、缓存和队列设置等。通过遵循本文的步骤,您可以轻松地将 Laravel 应用从本地开发环境部署到生产环境。希望本文对您有所帮助!