在 Ubuntu 20.04 LTS 机器上部署 Laravel Web 应用程序需要知道的一切
Laravel 是一个非常流行的开源 PHP 框架,具有用于设计现代和美观的 Web 应用程序的富有表现力和优雅的语法。 Laravel 旨在消除 Web 开发的痛苦,使其成为一种愉快且富有创造性的体验,将 Web 开发人员转变为 Web 工匠。
在本指南中,您将学习如何在 Ubuntu 20.04 服务器上安装带有 LAMP 堆栈的 Laravel,以启动和运行您的 Web 应用程序。
先决条件
要遵循本指南,您需要一个 Ubuntu 20.04 LTS 服务器并作为 须藤
用户。在我们开始之前,通过运行以下命令更新和升级 Ubuntu 20.04 软件包:
须藤 apt 更新 && 须藤 apt 升级
安装 LAMP 堆栈
LAMP 是首字母缩写词 升 inux 操作系统, 一个 pache 网络服务器, 米 ySQL 数据库和 磷 惠普编程语言。我们已经在 Ubuntu 20.04 上,它在 LAMP 堆栈中勾选了 Linux。因此,我们将安装其余三个包,以完成 Laravel 应用程序的 LAMP 堆栈。
在 Ubuntu 20.04 存储库中没有可用于安装 LAMP 堆栈的元软件包。但是我们可以使用一个简洁的小功能 易于
包管理器称为任务。任务使用可用任务的名称和学员 (^
) 附加到它。
sudo apt 安装灯服务器^
此命令将搜索所有“Task:”字段的包列表文件,并在其任务字段中安装所有带有“lamp-server”的包。因此,由 Apache、MySQL 和 PHP 包及其所有依赖项组成的 LAMP 堆栈将安装在您的 Ubuntu 服务器上。
配置防火墙
安装 LAMP 堆栈后,您还需要配置简单防火墙 (UFW) 并更改其规则,以便您可以从 Internet 访问 Apache 服务器。
UFW 提供简单的应用程序配置文件,可用于更改规则和切换网络端口上的流量。运行以下命令列出所有访问网络端口的应用程序:
sudo ufw 应用程序列表
您将看到如下输出:
可用应用程序:Apache Apache Full Apache Secure OpenSSH
下面列出了这些配置文件在 Ubuntu 20.04 服务器上打开的网络端口:
- Apache:此配置文件只打开端口
80
(允许 HTTP 流量) - Apache Full:此配置文件同时打开
80
&443
端口(允许 HTTP 和 HTTPS 流量) - Apache Secure:此配置文件仅打开端口
443
(允许 HTTPS 流量) - OpenSSH:此配置文件打开端口
22
允许SSH协议
您需要启用“Apache Full”配置文件,这将允许从 Internet 到 Apache Web 服务器的流量。此外,您还需要启用“OpenSSH”配置文件,以允许端口上的流量 22
(SSH) 在您的 Ubuntu 20.04 服务器上。如果您在没有允许“OpenSSH”配置文件的情况下启用 UFW,您将无法使用 SSH 连接到您的服务器。
更改 UFW 规则并允许端口上的流量 80
和 22
, 跑:
须藤 ufw 允许 'Apache Full' 须藤 ufw 允许 'OpenSSH'
然后使用以下命令启用 UFW 防火墙:
须藤 ufw 启用
您可能会收到提示“命令可能会破坏现有的 ssh 连接。继续操作 (y|n)?”。按 是
继续,因为我们已经添加了一个规则来允许 UFW 中的 SSH。
现在,您可以使用 Ubuntu 服务器的 IP 地址从 Internet 访问 Apache 默认网页。为此,请打开浏览器并在 URL 栏中输入 Ubuntu 20.04 服务器的 IP 地址,然后按 Enter。
//Your_ubuntu_server_ip
此页面确认 Apache Web 服务器运行正常并且 UFW 规则设置正确。
为 Laravel 设置 MySQL 数据库
Laravel 7 使得在它支持的各种数据库后端(例如 MySQL 5.6+、PostgreSQL 9.4+、SQLite 3.8.8+ 和 SQL Server 2017+)中与数据库的交互变得非常简单。我们已经安装了最新的 MySQL 包 灯切断器^
任务。所以在本节中,我们将配置 MySQL 服务器,然后看看如何为 Laravel 应用程序设置一个新的 MySQL 用户和数据库。
配置 MySQL
MySQL 数据库预装了一个安全脚本,可用于删除一些不安全的默认设置。建议您在部署 Laravel 应用程序之前运行此脚本。
须藤mysql_secure_installation
上述命令将执行安全脚本,该脚本将提示您配置 MySQL 服务器的一系列问题。
首先,系统会询问您是否要设置 验证密码
插入。此插件会检查您的密码,并根据您即将选择的密码验证策略级别将它们列为安全或不安全。所以按 是 如果你想启用这个插件。
输出: 保护 MySQL 服务器部署。使用空密码连接到 MySQL。 VALIDATE PASSWORD COMPONENT 可用于测试密码和提高安全性。它检查密码的强度,并允许用户只设置那些足够安全的密码。您想设置 VALIDATE PASSWORD 组件吗?按 y|Y 表示是,任何其他键表示否: 是
然后通过输入设置密码验证策略级别 0
, 1
或者 2
取决于您希望为数据库创建密码的强度。
输出: 密码验证策略分为三个级别: LOW Length >= 8 MEDIUM Length >= 8、数字、大小写混合和特殊字符 STRONG Length >= 8、数字、混合大小写、特殊字符和字典文件 请输入 0 = LOW, 1 = 中和 2 = 强: 2
接下来,您将被要求为 MySQL root 用户输入一个新密码。为您的 MySQL 根输入合适的密码。 VALIDATE PASSWORD 插件将根据您的密码验证级别为您提供估计的密码强度。按 是
继续使用您提供的密码。
输出: 请在此处设置 root 的密码。新密码: 重新输入新密码: 估计密码强度:100 您是否希望继续使用提供的密码?(按 y|Y 表示是,任何其他键表示否): 是
按 是
对于其余的提示,他们将删除一些匿名用户和测试数据库,禁用远程 root 登录并重新加载 MySQL 服务器的新设置。完成后,通过运行来测试您的数据库:
须藤mysql
上面的命令将打开 MySQL 控制台,连接到 MySQL 数据库作为 根 用户。您将看到如下输出:
输出: 欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。您的 MySQL 连接 ID 是 10 服务器版本:8.0.20-0ubuntu0.20.04.1 (Ubuntu) 版权所有 (c) 2000, 2020,Oracle 和/或其附属公司。版权所有。 Oracle 是 Oracle Corporation 和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。输入“帮助;”或 '\h' 寻求帮助。键入 '\c' 清除当前输入语句。 mysql>
您可能已经注意到,您不需要输入为 MySQL root 用户设置的密码。那是因为管理 MySQL root 用户的默认身份验证方法是 caching_sha2_authentication
而不是 mysql_native_password
使用密码登录的方法。
所以默认情况下,你只能以 MySQL root 用户身份登录 须藤
启用的用户作为 MySQL 服务器的附加安全性。但是 MySQL PHP 库不支持 caching_sha2_authentication
方法。因此我们需要使用 mysql_native_password
当我们为 Laravel 创建新用户时的方法,因为它使用密码来连接和与数据库交互。
创建一个新的 MySQL 用户和数据库
专门为您的应用程序创建新用户和数据库始终是一个好习惯,而不是使用 MySQL 根用户和测试数据库。所以我们要设置一个名为的新 MySQL 用户 laravel_user
和一个名为的数据库 拉拉维尔
.如果您已经按照教程进行到这里,您应该打开 MySQL 控制台。创建用户称为 laravel_user
在 MySQL 控制台中运行以下查询:
笔记: 更换 测试通过
在下面的 MySQL 查询中使用强密码。
CREATE USER 'laravel_user'@'%' IDENTIFIED WITH mysql_native_password BY 'testpass';
接下来,创建一个名为的数据库 拉拉维尔
对于我们的 Laravel 应用程序,运行以下查询:
创建数据库laravel;
只有 MySQL root 用户才有权限访问新创建的数据库 laravel。授予所有权限 拉拉维尔
数据库到 laravel_user
通过运行:
GRANT ALL ON laravel.* TO 'laravel_user'@'%';
所以,我们现在有了一个新的 MySQL 用户和一个数据库,运行以下命令退出 MySQL 控制台:
出口;
通过使用它登录 MySQL 控制台来测试您的新 MySQL 用户,为此在终端中运行此命令:
mysql -u laravel_user -p
请注意 -p
命令中的标志,它会提示您输入您在创建时使用的密码 laravel_user
(测试通过
在查询中)。在您以身份登录 MySQL 控制台后 laravel_user
, 确认用户有权访问 拉拉维尔
通过运行数据库:
显示数据库;
输出: +--------------------+ |数据库 | +--------------------+ |拉拉维尔 | | information_schema | +--------------------+ 2 行(0.01 秒)
以上输出确认 MySQL 用户 laravel_user
对数据库有权限 拉拉维尔
.使用以下命令退出 MySQL 控制台 出口;
查询,以便我们可以继续创建 DemoApp Laravel 应用程序。
安装 Laravel
Laravel 框架利用 Composer 下载和管理其依赖项。因此,我们需要在 Ubuntu 20.04 机器上安装 Composer,然后才能创建 Laravel 应用程序。
安装作曲家
Composer 是 PHP 的依赖管理器工具,它使安装和更新 PHP 框架和库变得更加容易。我们将在本教程中介绍如何快速安装 Composer,以便我们可以使用它来下载和管理 Laravel 框架。
您需要安装一些 Composer 运行所需的附加包,例如 php-cli
在终端中运行 PHP 脚本和 解压
帮助 Composer 提取软件包。通过运行安装它们:
sudo apt install php-cli 解压
然后要全局安装 Composer,请下载 Composer 安装脚本 卷曲
并使用以下命令安装它:
curl -sS //getcomposer.org/installer |须藤 php -- --install-dir=/usr/local/bin --filename=composer
最后,通过运行以下命令验证 Composer 是否正确安装:
作曲家
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / /_ // /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.10.8 2020-06- 24 21:23:30 用法:命令 [选项] [参数]
此输出确认 Composer 在您的 Ubuntu 20.04 服务器上正常工作,您可以开始使用它来安装和管理 PHP 框架和库。
创建 Laravel 应用程序
除了少数 PHP 扩展之外,我们几乎拥有在 Ubuntu 20.04 服务器上创建 Laravel 应用程序所需的一切。使用以下命令安装这些缺少的扩展:
sudo apt 安装 php-mbstring php-xml php-bcmath php-zip php-json
现在,我们可以在 Composer 的帮助下安装 Laravel 并创建一个新的 Laravel 应用程序。首先,确保您位于用户的主目录中:
光盘~
然后使用 Composer 的创建一个新的 Laravel 项目 创建项目
命令:
composer create-project --prefer-dist laravel/laravel LaravelApp
上面的命令将创建一个名为 LaravelApp 的新项目,它还将为您安装和配置 Laravel 框架。您将看到与此类似的输出:
输出: 在“./LaravelApp”创建“laravel/laravel”项目 安装laravel/laravel (v7.12.0) 安装laravel/laravel (v7.12.0): 下载(100%) 在/home/ath/LaravelApp @php 中创建的项目 - r "file_exists('.env') || copy('.env.example', '.env');"使用包信息加载 Composer 存储库 更新依赖项(包括 require-dev) 包操作:97 次安装,0 次更新,0 次移除 安装 voku/portable-ascii (1.5.2):下载 (100%) 安装 symfony/polyfill-ctype (v1) .17.1): 下载 (100%) 安装 phpoption/phpoption (1.7.4): 下载 (100%) 安装 vlucas/phpdotenv (v4.1.7): 下载 (100%) 安装 symfony/css-selector (v5.1.2) : 下载 (100%) ....
安装完成后,进入应用程序的根目录,然后运行 Laravel 的 工匠
命令以验证所有组件是否已正确安装:
cd LaravelApp/ php artisan
输出: Laravel Framework 7.18.0 用法:command [options] [arguments] 选项:-h, --help 显示此帮助信息 -q, --quiet 不输出任何信息 -V, --version 显示此应用程序版本 --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction 不要问任何交互问题 --env[=ENV] 命令应该运行的环境 -v|vv|vvv, --verbose 增加消息的详细程度:1 表示正常输出,2 表示更详细的输出,3 表示调试 ....
此输出确认安装成功并且所有文件都已就位并且 Laravel 命令行工具正常工作。但是,我们仍然需要配置应用程序来设置数据库和其他一些设置。
配置 Laravel 应用程序
Laravel 配置文件位于名为 配置
在应用程序的根目录中。此外,当我们通过 Composer 安装 Laravel 时,它会在应用程序的根目录中创建一个名为“.env”的环境文件。环境文件包括特定于环境的配置,它优先于位于 config 目录内的常规配置文件中的设置。
注意:环境配置文件包含有关您的服务器的敏感信息,例如数据库密码、Laravel 应用程序密钥等。因此不应公开共享。
我们现在将编辑 .env
文件以更改配置并向其添加数据库凭据。通过运行以下命令使用 nano 编辑器打开文件:
纳米.env
这里面有很多配置变量 .env
文件。我们不需要更改每一项,因为 Composer 已经自动配置了大多数设置。因此,以下是您必须了解的一些主要配置变量的列表:
APP_NAME
:用于通知和消息的应用程序名称,因此我们将其设置为“LaravelApp”。APP_ENV
:这个变量用来表示当前的应用环境。它可以设置为本地、开发、测试或生产环境。我们现在将它设置为开发环境。APP_KEY
:用于为 Web 应用程序创建盐和哈希的唯一应用程序密钥。它是通过 Composer 安装 Laravel 时自动生成的,因此无需更改。APP_DEBUG
:它可以设置为 true 或 false,具体取决于您是否希望在客户端显示错误。移至生产环境时将其设置为 false。APP_URL
: 应用程序的基本 URL 或 IP,如果您的 Laravel 应用程序有域名,请将其更改为您的域名,否则暂时保持不变。数据库_数据库
:您希望与 Laravel 应用程序一起使用的数据库的名称。我们将使用我们在配置 MySQL 时创建的 MySQL 数据库“laravel”。数据库用户名
: 连接数据库的用户名。我们将使用我们创建的 MySQL 用户 ‘laravel_user’。数据库密码
: 连接数据库的密码。
APP_NAME=Laravel 应用程序
APP_ENV=发展
APP_KEY=base64:Application_unique_key
APP_DEBUG=真 APP_URL=//domain_or_IP
LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel_user
DB_PASSWORD=测试通过
对 .env
相应的文件,当您完成编辑后,使用以下命令保存并退出文件 CTRL+X
然后按 是
然后按回车确认。现在,剩下的就是配置 Apache 服务器并为我们的 Laravel 应用程序创建一个虚拟主机。
设置 Apache Web 服务器
我们已经将 Laravel 安装在用户主目录的本地文件夹中。虽然这对于本地开发非常有效,但推荐的做法是将 Web 应用程序目录位于 /var/www
.我们没有安装 Laravel 的原因 /var/www
直接是因为它归root所有,Composer不应该与 须藤
.
所以使用 MV
命令将 Laravel 应用程序文件夹及其内容移动到 /var/www
:
须藤 mv ~/Laravel/ /var/www
LaravelApp 目录归用户所有,因此您仍然可以在不使用 须藤
命令。但是 Apache 网络服务器需要访问应用程序的缓存和存储目录,因为 Laravel 将应用程序生成的文件存储在其中。将这些文件夹的所有者更改为 万维网数据
用户使用 chown
命令:
sudo chown -R www-data.www-data /var/www/LaravelApp/storage sudo chown -R www-data.www-data /var/www/LaravelApp/bootstrap/cache
更改这些目录的所有者后,启用 Apache 的 mod_rewrite
因为 Laravel 需要正确转换 URL 以通过其路由功能通过 .htaccess
文件。
须藤 a2enmod 重写
接下来,我们需要为 Laravel 应用程序设置一个虚拟主机。虚拟主机配置位于 /etc/apache2/sites-available
.我们将编辑默认的虚拟主机文件来部署 Laravel 应用程序。使用 nano 编辑器打开默认的虚拟主机配置文件:
须藤纳米 /etc/apache2/sites-available/000-default.conf
更改文档根目录 /var/www/html
到 /var/www/LaravelApp/public
并在 DocumentRoot 行下方添加以下代码段:
允许覆盖所有
你的 000-default.conf
现在应该看起来像这样,几乎没有评论。
ServerAdmin webmaster@localhost DocumentRoot /var/www/LaravelApp/public AllowOverride All ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log 组合
通过运行以下命令重新启动 Apache Web 服务器:
须藤 systemctl 重启 apache2
现在转到您的浏览器并输入您的 Ubuntu 20.04 服务器的 IP 地址。您将看到 Laravel 开始页面,而不是默认的 Apache 欢迎页面。
假设您到目前为止已经遵循本指南,您应该有一个工作 Laravel 应用程序,其中包含一个名为的 MySQL 数据库 拉拉维尔
为了它。从这点开始,您就可以开始自己开发 Laravel 应用程序了。要了解有关 Laravel 框架及其用法的更多信息,请访问 Laravel 文档页面。