PHP和Laravel(2):Laravel部署与环境配置

PHP和Laravel:Laravel部署与环境配置

在这里插入图片描述

环境准备

1. 安装必要的软件

在部署Laravel应用之前,确保你的服务器或本地开发环境安装了以下软件:

  • PHP: Laravel推荐使用PHP 8.0或更高版本。
  • Composer: 用于管理PHP依赖。
  • Web服务器: 如Apache或Nginx。
  • 数据库: 如MySQL, PostgreSQL, 或SQLite。
  • Node.js和npm: 用于前端资源的编译和优化。

1.1 安装PHP

在Ubuntu系统中,可以通过以下命令安装PHP 8.0:

sudo apt update
sudo apt install php8.0

1.2 安装Composer

Composer可以通过以下命令在Linux系统上安装:

sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

1.3 配置Web服务器

Apache

在Apache中,确保mod_rewrite模块被启用,以支持Laravel的URL重写:

sudo a2enmod rewrite
sudo systemctl restart apache2
Nginx

在Nginx中,配置一个站点来运行Laravel应用:

server {
    listen 80;
    server_name example.com;

    root /var/www/html/laravel/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/php8.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

1.4 安装数据库

以MySQL为例,安装过程如下:

sudo apt install mysql-server
sudo mysql_secure_installation

1.5 安装Node.js和npm

在Ubuntu上,可以通过以下命令安装Node.js和npm:

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

2. 配置服务器环境

2.1 创建Laravel项目

使用Composer在服务器上创建一个新的Laravel项目:

cd /var/www/html
sudo composer create-project --prefer-dist laravel/laravel myproject

2.2 配置环境变量

编辑.env文件,设置数据库连接信息:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=your_password

2.3 生成密钥

在部署Laravel应用时,需要生成一个应用密钥:

cd /var/www/html/myproject
php artisan key:generate

2.4 安装前端依赖

Laravel项目通常包含前端资源,需要通过npm安装依赖:

cd /var/www/html/myproject
npm install

2.5 编译前端资源

使用Laravel Mix或Vite编译前端资源:

npm run dev

2.6 设置文件权限

确保Laravel应用的storagebootstrap/cache目录具有正确的权限:

sudo chown -R www-data:www-data /var/www/html/myproject
sudo chmod -R 775 /var/www/html/myproject/storage /var/www/html/myproject/bootstrap/cache

2.7 配置缓存

Laravel支持多种缓存驱动,如file, redis, memcached等。在.env文件中设置缓存驱动:

CACHE_DRIVER=redis

2.8 配置队列

如果应用使用队列处理任务,需要在.env文件中设置队列驱动:

QUEUE_CONNECTION=redis

2.9 运行数据库迁移

确保数据库结构与应用匹配:

php artisan migrate

2.10 清除缓存

在部署新版本应用时,清除缓存以确保应用使用最新的配置:

php artisan config:clear
php artisan cache:clear

2.11 设置环境

在部署时,根据服务器环境设置Laravel的环境:

APP_ENV=production

2.12 优化应用

在生产环境中,使用optimize命令优化应用:

php artisan optimize

通过以上步骤,你可以为Laravel应用的部署和运行准备好一个稳定的环境。

Laravel项目构建

3. 创建Laravel项目

在开始构建Laravel项目之前,确保你的开发环境中已经安装了以下软件:

  • PHP (版本7.4或更高)
  • Composer
  • Laravel安装器(可选,但推荐)

3.1 使用Composer创建项目

# 在命令行中运行以下命令来创建一个新的Laravel项目
composer create-project --prefer-dist laravel/laravel <项目名称>

3.2 使用Laravel安装器创建项目

首先,通过Composer全局安装Laravel安装器:

composer global require laravel/installer

然后,使用Laravel安装器创建项目:

laravel new <项目名称>

3.3 创建项目后的目录结构

创建项目后,Laravel会生成以下主要目录结构:

  • app/: 包含所有核心的Laravel类。
  • bootstrap/: 包含加载框架和服务提供者的文件。
  • config/: 包含配置文件。
  • database/: 包含数据库迁移、模型工厂、种子数据和数据库配置。
  • public/: 包含应用程序的入口文件和前端资源。
  • resources/: 包含视图、语言文件、静态资源等。
  • routes/: 包含路由定义。
  • tests/: 包含单元测试和功能测试。

4. 项目结构介绍

4.1 app/ 目录

  • Http: 包含控制器、中间件、请求类和视图模型。
  • Models: 包含Eloquent模型。
  • Providers: 包含服务提供者,用于注册和绑定类到服务容器。

4.2 bootstrap/ 目录

  • app.php: 应用程序的引导文件。
  • autoload.php: Composer的自动加载文件。
  • **cache/`: 缓存编译后的类和配置文件。
  • **routes.php`: 路由文件的加载入口。

4.3 config/ 目录

  • app.php: 应用程序的基本配置。
  • **database.php`: 数据库配置。
  • **services.php`: 第三方服务的API密钥和端点。

4.4 database/ 目录

  • factories: 包含模型工厂定义。
  • **migrations`: 包含数据库迁移文件。
  • **seeds`: 包含数据库种子文件。

4.5 public/ 目录

  • **index.php`: 应用程序的入口文件。
  • **css, js, img`: 包含前端资源。

4.6 resources/ 目录

  • **views`: 包含Blade视图文件。
  • **lang`: 包含语言文件。
  • **assets`: 包含应用程序的原始前端资源。

4.7 routes/ 目录

  • **web.php`: 包含Web应用程序的路由。
  • **api.php`: 包含API的路由。

4.8 tests/ 目录

  • **Feature`: 包含功能测试。
  • **Unit`: 包含单元测试。

4.9 示例:创建一个简单的控制器

app/Http/Controllers/目录下创建一个名为HelloController.php的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
   
    /**
     * 显示欢迎页面。
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
   
        return view('welcome');
    }
}

然后,在routes/web.php文件中定义一个路由来指向这个控制器:

<?php

use App\Http\Controllers\HelloController;

Route::get('/', [HelloController::class, 'index']);

4.10 注册服务提供者

app/Providers/目录下,你可以创建自定义的服务提供者。例如,创建一个名为CustomServiceProvider.php的服务提供者:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class CustomServiceProvider extends ServiceProvider
{
   
    /**
     * 注册任何应用服务。
     *
     * @return void
     */
    public function register()
    {
   
        //
    }
}

要注册这个服务提供者,需要在config/app.php文件的providers数组中添加它的类名:

'providers' => [
    // ...
    App\Providers\CustomServiceProvider::class,
],

4.11 结论

通过以上步骤,你已经了解了如何创建一个Laravel项目以及项目的基本目录结构。这将帮助你更好地组织代码和资源,以及理解Laravel框架的工作原理。接下来,你可以开始添加功能、配置数据库、编写路由和控制器,以及创建视图和模型。

环境变量配置

5. 理解 .env 文件

在Laravel项目中,.env 文件是一个非常重要的配置文件,它用于存储应用程序的环境变量。这些变量可以包括数据库连接信息、应用程序密钥、缓存配置等,它们在不同的部署环境中(如开发、测试、生产)可能会有所不同。.env 文件通常位于项目根目录下,被.gitignore 文件排除,以防止敏感信息泄露到版本控制系统中。

5.1 .env 文件的结构

.env 文件的结构非常简单,每一行都是一个键值对,格式如下:

KEY_NAME=VALUE

例如,数据库连接的配置可能如下所示:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password

5.2 如何读取 .env 文件中的变量

在Laravel中,你可以使用env() 函数来读取.env 文件中的环境变量。如果变量在.env 文件中未设置,你可以提供一个默认值。

// 读取 DB_CONNECTION 环境变量,如果没有设置,则使用 'sqlite' 作为默认值
$connection = env('DB_CONNECTION', 
  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkchenjj

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值