跳到主要内容

Laravel

Laravel 是一个 Web 应用框架, 有着表现力强、语法优雅的特点。Laravel 致力于提供出色的开发体验,同时提供强大的特性,例如完全的依赖注入,富有表现力的数据库抽象层,队列和计划任务,单元和集成测试等等。

本指南介绍如何通过多种方式在腾讯云托管上部署 Laravel 应用程序:

  • 1、从 Dockerfile 部署(#从 Dockerfile 部署)

创建一个 Laravel 应用

Note: 如果你已经有一个 Laravel 应用,且确保 Dockerfile 文件在根目录下,可跳过这个步骤。

创建一个 Laravel 应用,请确保本地已安装 PHP 和 Composer

安装好 PHP 和 Composer 后,可以通过 Composer 的 create-project 命令创建一个新的 Laravel 项目:

composer create-project laravel/laravel cloudrun-laravel

启动 php 服务

执行 php-fpm 启动 php cgi 服务, 服务访问地址为 127.0.0.1:9000

配置 Nginx default.conf

server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/html/public;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

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

将 default.conf 放到 nginc conf.d 目录下,执行 nginx -s reload, 启动 nginx 服务,即可通过 http://127.0.0.1 访问 php 服务。

从 Dockerfile 部署

1、在 cloudrun-laravel 项目下创建 nginx 目录,在 nginx 目录下分别添加 default.confsupervisord.conf 文件,内容如下:

default.conf

server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/html/public;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

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

supervisord.conf

[supervisord]
nodaemon=true

[program:php-fpm]
command=/usr/local/sbin/php-fpm

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"

2、在 cloudrun-laravel 项目下创建 Dockerfile, 内容如下:

# 1. 构建阶段,安装依赖,composer install
FROM php:8.2-fpm-alpine AS build

# 安装系统依赖和 PHP 扩展
RUN apk add --no-cache \
bash \
git \
unzip \
libzip-dev \
oniguruma-dev \
curl \
&& docker-php-ext-install pdo_mysql mbstring zip bcmath

# 安装 composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

# 复制项目代码
COPY . .

RUN composer install --no-dev --optimize-autoloader --no-interaction


# 生成优化的自动加载文件
RUN composer dump-autoload -o

# 2. 运行阶段,PHP-FPM 镜像
FROM php:8.2-fpm-alpine

# 安装 PHP 扩展
RUN apk add --no-cache libzip oniguruma-dev libpng libjpeg-turbo libwebp freetype \
&& apk add --no-cache --virtual .build-deps $PHPIZE_DEPS libzip-dev oniguruma-dev \
&& docker-php-ext-configure zip \
&& docker-php-ext-install pdo_mysql mbstring zip bcmath gd \
&& apk del .build-deps

WORKDIR /var/www/html

# 复制 build 阶段的代码和依赖
COPY --from=build /var/www/html /var/www/html

# 设置权限(根据需要调整)
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache

# 3. 安装并配置 supervisord 以同时启动 php-fpm 和 nginx
RUN apk add --no-cache supervisor nginx

# 复制 nginx 配置
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

# 复制 supervisord 配置
COPY nginx/supervisord.conf /etc/supervisord.conf

# 暴露端口
EXPOSE 80

# 启动 supervisord,管理 php-fpm 和 nginx
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]

3、部署代码

打开腾讯云托管, 点击新建按钮 -> 选择从空白创建 -> 填写服务名称 -> 部署方式选择上传代码包 -> 代码包类型选择文件夹 -> 选择 cloudrun-laravel 目录进行上传 -> 端口填写 80 -> 点击>创建并等待创建完成即可。