”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Ubuntu 上轻松部署 Laravel:LEMP Stack 初学者指南

在 Ubuntu 上轻松部署 Laravel:LEMP Stack 初学者指南

发布于2024-11-01
浏览:285

Easy Laravel Deployment on Ubuntu: A Beginner

使用 LEMP 堆栈(Linux、Nginx、MySQL、PHP)在 Ubuntu 上部署 Laravel 应用程序似乎令人畏惧,但逐步分解使其易于管理。本指南将引导您完成从服务器设置到部署 Laravel 应用程序的过程。

先决条件:

  • 您应该有一个Ubuntu 服务器(本地或云,例如 AWS、DigitalOcean)。
  • 对终端有基本的熟悉。
  • A 域名(可选,但推荐)。

第 1 部分:设置 LEMP 堆栈

第 1 步:更新系统

首先确保您的服务器是最新的。

sudo apt update && sudo apt upgrade -y

第2步:安装Nginx

Nginx 将为您的应用程序提供服务。

sudo apt install nginx -y

安装后,您可以启动并启用 Nginx 开机运行:

sudo systemctl start nginx
sudo systemctl enable nginx

您可以通过在浏览器中访问服务器的 IP 地址来验证 Nginx 是否正在运行。

第三步:安装MySQL

接下来,我们将安装MySQL数据库服务器。

sudo apt install mysql-server -y

保护 MySQL 安装:

sudo mysql_secure_installation

这将提示您设置 root 密码并删除不安全的默认值。

第四步:安装PHP

Laravel 需要 PHP,所以让我们安装它以及一些必要的扩展:

sudo apt install php-fpm php-mysql php-cli php-xml php-mbstring php-curl php-zip -y

验证 PHP 安装:

php -v

您应该看到类似以下内容:

PHP 7.x.x (cli) (built: ...)

第 2 部分:为 Laravel 配置 MySQL

第1步:登录MySQL

以root用户登录MySQL控制台:

sudo mysql

第 2 步:创建数据库

为 Laravel 应用程序创建新的数据库和用户:

CREATE DATABASE laravel_app;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON laravel_app.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

第 3 步:测试数据库

确保新的数据库用户可以连接:

mysql -u laravel_user -p

系统将提示您输入密码,然后输入:

SHOW DATABASES;

您应该在列表中看到 laravel_app。


第 3 部分:安装 Laravel

第 1 步:安装 Composer

Laravel 使用 Composer 作为其依赖管理器。安装作曲家:

sudo apt install composer -y

第 2 步:创建 Laravel 项目

导航到要安装 Laravel 的目录(例如 /var/www/):

cd /var/www/
composer create-project --prefer-dist laravel/laravel laravel_app

步骤3:设置目录权限

Laravel 要求 Web 服务器可写某些目录:

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

步骤 4:配置 .env 文件

在 Laravel 项目根目录中,打开 .env 文件并配置数据库设置:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_app
DB_USERNAME=laravel_user
DB_PASSWORD=strong_password

第 4 部分:为 Laravel 配置 Nginx

第 1 步:创建新的 Nginx 服务器块

我们将为 Laravel 项目创建一个 Nginx 配置文件。

sudo nano /etc/nginx/sites-available/laravel_app

在文件中添加以下配置:

server {
    listen 80;
    server_name your_domain_or_ip;

    root /var/www/laravel_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.x-fpm.sock; # Change this to the correct PHP version.
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

将your_domain_or_ip替换为您的实际域名或服务器IP地址。

第2步:启用Nginx配置

通过创建指向启用站点的符号链接来启用新的 Nginx 配置:

sudo ln -s /etc/nginx/sites-available/laravel_app /etc/nginx/sites-enabled/

第 3 步:测试并重新加载 Nginx

测试 Nginx 配置以确保没有语法错误:

sudo nginx -t

如果一切正常,重启Nginx:

sudo systemctl reload nginx

第 5 部分:最后步骤

第 1 步:运行 Laravel 迁移

运行 Laravel 迁移来设置数据库:

cd /var/www/laravel_app
php artisan migrate

第 2 步:访问应用程序

您现在应该能够通过在浏览器中导航到服务器的 IP 或域来访问 Laravel 应用程序。您将看到默认的 Laravel 欢迎页面。

步骤 3:启用 HTTPS(可选但推荐)

如果您有域名,请使用 Let's Encrypt 保护您的网站:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain

按照说明安装 SSL 证书。 Certbot 将自动配置 Nginx 将 HTTP 流量重定向到 HTTPS。


第 6 部分:可选:设置 Laravel 队列和调度程序

Laravel 队列:

队列处理诸如发送电子邮件或在后台处理作业等任务。

  1. 设置队列驱动程序(例如,Redis 或数据库)。
  2. 运行 Laravel 队列工作程序:
   php artisan queue:work

Laravel 调度程序:

使用 Laravel 的任务调度功能来执行清除缓存、发送每日电子邮件等任务。

  1. 将 Laravel cron 条目添加到您的 crontab 中:
   sudo crontab -e

添加以下行:

   * * * * * php /var/www/laravel_app/artisan schedule:run >> /dev/null 2>&1

结论:

您已使用 LEMP 堆栈在 Ubuntu 服务器上成功部署了 Laravel 应用程序。从这里,您可以继续开发您的应用程序、保护它并监控它的性能。

如果遇到任何问题,请检查位于 /var/log/nginx/error.log 的 Nginx 错误日志或位于 /var/www/laravel_app/storage/logs/laravel.log 的 Laravel 日志。

通过这些步骤,您已经完成了完整的 Laravel 实际部署!

版本声明 本文转载于:https://dev.to/mdarifulhaque/easy-laravel-deployment-on-ubuntu-a-beginners-guide-with-lemp-stack-155a?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • ## 如何有效分析 PHP 内存使用情况:Xdebug 替代方案和最佳实践
    ## 如何有效分析 PHP 内存使用情况:Xdebug 替代方案和最佳实践
    分析 PHP 内存消耗您寻求一种方法来检查 PHP 页面的内存使用情况。具体来说,您的目标是确定数据的内存分配并识别导致大量内存消耗的函数调用。Xdebug 的限制虽然 Xdebug 提供了跟踪功能,提供内存增量信息,其丰富的数据可能令人难以承受。如果细粒度过滤选项可用,问题就可以得到解决。然而,此...
    编程 发布于2024-11-07
  • 如何在虚拟 DOM 中渲染组件以及如何优化重新渲染
    如何在虚拟 DOM 中渲染组件以及如何优化重新渲染
    构建现代 Web 应用程序时,高效更新 UI(用户界面)对于保持应用程序快速响应至关重要。许多框架(如 React)中使用的常见策略是使用 虚拟 DOM 和 组件。本文将解释如何使用 Virtual DOM 渲染组件,以及如何优化重新渲染以使 Web 应用程序不会变慢。 1.什么是虚...
    编程 发布于2024-11-07
  • CRUD 操作:它们是什么以及如何使用它们?
    CRUD 操作:它们是什么以及如何使用它们?
    CRUD 操作:它们是什么以及如何使用它们? CRUD 操作(创建、读取、更新和删除)是任何需要数据管理的应用程序的基础。对于开发人员来说,了解这些操作非常重要,因为它们提供了我们有效与数据库交互所需的基本功能。在这篇博文中,我将通过展示如何将 CRUD 操作集成到我的 Yoga ...
    编程 发布于2024-11-07
  • 推出免费 Java 实用程序包
    推出免费 Java 实用程序包
    面向 Java 后端开发人员的快速且易于使用的编程工具包 在我作为管理员和开发人员的职业生涯中,我多次从无数的免费软件和开源产品中受益。因此,我很自然地也为这个社区做出贡献。 这个 Java 类集合是在各种项目过程中创建的,并将进一步开发。我希望这个工具也能为您服务。 https://java-ut...
    编程 发布于2024-11-07
  • 如何在 PHP Foreach 循环中检索嵌套数组的数组键?
    如何在 PHP Foreach 循环中检索嵌套数组的数组键?
    PHP:在 Foreach 循环中检索数组键在 PHP 中,使用 foreach 循环迭代关联数组可以访问这两个值和钥匙。但是, key() 函数仅返回当前值的键,这在处理嵌套数组时可能是不够的。例如,考虑这样的数组:<?php $samplearr = array( 4722 =&g...
    编程 发布于2024-11-07
  • 如何将 MySQL 表中的 Latin1 字符转换为 UTF-8?
    如何将 MySQL 表中的 Latin1 字符转换为 UTF-8?
    将 UTF8 表上的 Latin1 字符转换为 UTF8您已确定您的 PHP 脚本缺少必要的 mysql_set_charset 函数以确保正确处理UTF-8 字符。尽管实施了此修复,您现在仍面临着纠正包含存储在 UTF8 表中的 Latin1 字符的现有行的挑战。要解决此问题,您可以利用 MySQ...
    编程 发布于2024-11-07
  • 如何使用 Zapcap API(字幕 API)
    如何使用 Zapcap API(字幕 API)
    将 ZapCap 的自动视频处理 API 集成到您现有的系统中是一个简单的过程,旨在最大限度地降低复杂性并最大限度地提高效率。 ZapCap 提供开发人员友好的 API 文档,以确保无缝入门。 分步集成指南 第 1 步:在 ZapCap 获取您的 API 密钥 在开始之前获...
    编程 发布于2024-11-07
  • 探索引导组件
    探索引导组件
    Bootstrap 5 是最流行的前端框架之一,它带来了一系列有用的组件和实用程序,可帮助开发人员快速构建响应灵敏且具有视觉吸引力的网站。 牌 卡片是 Bootstrap 5 中的多功能组件,可让您以干净、有组织的方式显示内容。它们非常适合以美观且实用的方式展示信息。 ...
    编程 发布于2024-11-07
  • 简化 SVG 管理:将路径转换为单个 JS 常量文件
    简化 SVG 管理:将路径转换为单个 JS 常量文件
    构建 React.js 应用程序时,有效管理 SVG 图标至关重要。 SVG 提供了响应式设计所需的可扩展性和灵活性,但在大型项目中处理它们可能会变得很麻烦。这就是 svg-path-constants 的用武之地,它是一个 CLI 工具,旨在通过将 SVG 路径转换为可重用常量来简化 SVG 工作...
    编程 发布于2024-11-07
  • 如何管理 JavaScript 代码结构
    如何管理 JavaScript 代码结构
    出色地!维护干净且有组织的 JavaScript 代码库对于项目的长期成功至关重要。结构良好的代码库可以增强可读性,减少技术债务,并促进更轻松的调试和扩展。无论您正在开发小型项目还是大型应用程序,遵循构建 JavaScript 代码的最佳实践都可以显着改进您的开发过程。以下是如何管理 JavaScr...
    编程 发布于2024-11-07
  • 溢出可以配置为向左流吗?
    溢出可以配置为向左流吗?
    溢出可以配置为向左流动吗?溢出通常通过强制内容向右流动来处理,导致最左边的内容被裁剪。但是,可以通过应用特定的 CSS 样式来扭转此行为。解决方案要启用向左溢出,请按照给定的步骤操作:将溢出设置为隐藏:将溢出:隐藏应用到容器以防止内容超出其边界。文本右对齐:使用text-align: right将容...
    编程 发布于2024-11-07
  • 如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?
    如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?
    在 NumPy 中组合具有多种数据类型的数组将包含不同数据类型的数组连接成单个数组,每列中具有相应的数据类型一个挑战。不幸的是,使用 np.concatenate() 的常见方法会将整个数组转换为字符串数据类型,从而导致内存效率低下。要克服此限制,一个可行的解决方案是使用记录数组或结构化数组。记录数...
    编程 发布于2024-11-07
  • 如何在同一行水平对齐内联块?
    如何在同一行水平对齐内联块?
    在同一行水平对齐内联块问题内联块比浮动元素具有优势,例如基线对齐和自动居中当视口变窄时。然而,在同一行上水平对齐两个内联块可能会带来挑战。内联块对齐的挑战浮动可能会干扰基线对齐并导致不必要的环绕.相对和绝对定位会导致间距问题,类似于浮动。解决方案:使用文本对齐一个有效的解决方案是利用文本对齐: 证明...
    编程 发布于2024-11-07
  • 感到没有动力
    感到没有动力
    感觉自己像个菜鸟,放弃了几次。 我第一次开始考虑编码是在我还是个孩子的时候,但我选择成为一名社交蝴蝶,现在我已经 26 岁了,尝试了很多次学习编码 python、JS、React、DB 等但最终,我感到不知所措并放弃了它。 现在,正因为如此,我感觉自己像个失败的松手,我想解决这个...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3