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 应用从本地开发环境部署到生产环境。希望本文对您有所帮助!
Comments NOTHING