如何在 Ubuntu 系统上部署 Laravel 项目 ?

How to Deploy Laravel on Ubuntu

到目前为止,Laravel 是 PHP 开发人员构建 api 和 web 应用程序的首选。如果你是新手的话,将 Laravel 应用程序部署到线上服务器上可能有点棘手。

在本指南中,我们将向您展示在 Ubuntu 系统中部署 Laravel 应用程序的全过程。

Step 1: Update Your Server

首先,确保当前的系统包是最新的。

sudo apt update
sudo apt upgrade -y

Step 2: Install Required Software

Laravel 是用 PHP 编程语言编写的,要在 web 上提供服务,您需要像 Apache 这样的 web 服务器。为了永久存储数据,您需要像 MySQL 这样的数据库。总之,您需要安装一些运行 Laravel 应用程序所需的软件。这包括 Apache、MySQL、PHP 和其他一些工具。

(1) 安装 Apache

sudo apt install apache2 -y

(2) 安装 MySQL

sudo apt install mysql-server -y

(3) 安装PHP和相关扩展

sudo apt install php libapache2-mod-php php-mysql php-xml php-mbstring php-mcrypt php-curl php-zip -y

Step 3: Configuring MySQL

首次安装 MySQL 服务器后,需要执行以下命令启动 MySQL 安装向导

sudo mysql_secure_installation

按照说明来确保安装的安全,然后登录到 MySQL,为您的 Laravel 应用程序创建一个数据库。

sudo mysql -u root -p

在 MySQL shell 中,运行以下命令来创建数据库和用户。

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

Step 4: Set Up Apache Server

我们需要配置 Apache 来服务我们的 Laravel 应用程序。首先,启用 mod 重写模块。

sudo a2enmod rewrite

然后,为您的 Laravel 站点创建一个新的 Apache 配置文件。

sudo nano /etc/apache2/sites-available/laravel.conf

将以下内容添加到创建的配置文件中

<VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot /var/www/laravel/public<Directory /var/www/laravel>Options Indexes FollowSymLinksAllowOverride AllRequire all granted</Directory>ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

保存并关闭该文件。然后,启用新站点并重新启动 Apache

sudo a2ensite laravel.conf
sudo systemctl restart apache2

Step 5: Deploy Your Laravel Application

把 Laravel 项目上传到 /var/www/laravel 目录

切换到项目目录,并安装所需的依赖项。

cd /var/www/laravel
composer install

接下来,为存储和缓存目录设置正确的权限。

sudo chown -R www-data:www-data storage
sudo chown -R www-data:www-data bootstrap/cache

Step 6: Configure Environment Variables

Laravel 使用 .env 文件来存储配置设置,更新其中的数据库相关设置。

DB_DATABASE=laravel_app
DB_USERNAME=laravel_user
DB_PASSWORD=your_password

Step 7: Generate Application Key

最后,为 Laravel 应用程序生成一个应用程序密钥。

php artisan key:generate

Step 8: Set Up SSL Certificate

为了保护您的 Laravel 应用程序,您可以使用 Let ’ s Encrypt 来设置一个免费的 SSL 证书。

安装 Certbot

sudo apt install certbot python3-certbot-apache -y

获取并安装 SSL 证书

sudo certbot --apache

按照屏幕上的说明操作,Certbot 将自动为您的站点配置 SSL,并在需要时更新证书。

测试证书续订过程

sudo certbot renew --dry-run

我的开源项目

酷瓜云课堂-在线教育解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/426921.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++中的二叉搜索树

目录 ​编辑 一概念&#xff1a; 二性能分析&#xff1a; 三实现步骤&#xff1a; 31插入&#xff1a; 32删除&#xff1a; 33查找&#xff1a; 四应用&#xff08;key与key_value): 41key模型&#xff1a; 42key_value模型&#xff1a; 一概念&#xff1a; 静图展示…

Linux(6)--CentOS目录

文章目录 1. 根目录2. cd目录切换命令3. CentOS目录介绍4. pwd命令介绍5. ls命令介绍5.1 ls5.2 ls -a5.3 ls -l 1. 根目录 Windows电脑的根目录是计算机(我的电脑)&#xff0c;然后C盘、D盘。 Linux系统的根目录是/&#xff0c;我们可以使用cd /进入根目录&#xff0c;然后使…

20240919 - 【PYTHON】辞职信

import tkinter as tk # 导入 tkinter 模块&#xff0c;并简写为 tk from tkinter import messagebox # 从 tkinter 导入 messagebox 子模块&#xff0c;用于显示消息框 from random import random # 从 random 模块导入 random 函数&#xff0c;用于生成随机数# 创建窗口对…

一本还没发布的书,能在Github上拿25.6k⭐️,熬夜也要读完的书

重磅&#xff01;从零构建大语言模型教程开源&#xff01; 自从ChatGPT发布以来&#xff0c;大型语言模型&#xff08;LLM&#xff09;大放异彩。 如今市面上关于大模型的书籍和教程可谓琳琅满目&#xff0c;但基本上都只是从原理和参数调优上讲解的&#xff0c;没有一本系统性…

借老系统重构我准备写个OpenAPI3.1版的API管理工具(附录屏演示)

前段时间一直在忙公司老系统重构的方案设计&#xff0c;其中最大的重构点就是前后端分离。为了加快前后端协同开发和对接的工作效率&#xff0c;我决定写一个公司内部使用的OpenAPI3.1版的API管理工具。 文章目录 有现成的工具为啥不用现有成熟方案初步成果展示录屏演示下一步计…

手语识别系统源码分享

手语识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

计算机专业的就业方向

计算机专业的就业方向 亲爱的新生们&#xff0c;欢迎你们踏上计算机科学的旅程&#xff01;作为一名计算机专业的学生&#xff0c;你们即将进入一个充满无限可能的领域。今天&#xff0c;我将为大家介绍计算机专业的一些主要就业方向&#xff0c;帮助你们了解未来的职业选择。…

Java面试篇基础部分-Java内部类介绍

首先需要了解什么是内部类,内部类就是定义在类的内部的类称为内部类,内部类可以根据不同的定义方式分为静态内部类、成员内部类、局部内部类和匿名内部类。 静态内部类 定义在类体内部的通过static关键字修饰的类,被称为静态内部类。静态内部类可以访问外部类的静态变量和…

深度学习对抗海洋赤潮危机!浙大GIS实验室提出ChloroFormer模型,可提前预警海洋藻类爆发

2014 年 8 月&#xff0c;美国俄亥俄州托莱多市超 50 万名居民突然收到市政府的一则紧急通知——不得擅自饮用自来水&#xff01; 水是人类生存的基本供给&#xff0c;此通告关系重大&#xff0c;发出后也引起了不小的恐慌。究其原因&#xff0c;其实是美国伊利湖爆发了大规模…

OpenCV运动分析和目标跟踪(4)创建汉宁窗函数createHanningWindow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 此函数计算二维的汉宁窗系数。 createHanningWindow是OpenCV中的一个函数&#xff0c;用于创建汉宁窗&#xff08;Hann window&#xff09;。汉宁…

Give azure openai an encyclopedia of information

题意&#xff1a;给 Azure OpenAI 提供一部百科全书式的信息 问题背景&#xff1a; I am currently dabbling in the Azure OpenAI service. I want to take the default model and knowledge base and now add on to it my own unique information. So, for example, for mak…

Vert.x HttpClient调用后端服务时使用Idle Timeout和KeepAlive Timeout的行为分析

其实网上有大量讨论HTTP长连接的文章&#xff0c;而且Idle Timeout和KeepAlive Timeout都是HTTP协议上的事情&#xff0c;跟Vert.x本身没有太大关系&#xff0c;只不过最近在项目上遇到了一些问题&#xff0c;用到了Vert.x的HttpClient&#xff0c;就干脆总结一下&#xff0c;留…

react学习笔记一:react介绍

将view规划成一个个的组件&#xff0c;是一个响应式的声明式的设计。 虚拟dom&#xff0c;减少dom操作。vue的虚拟dom是在react的基础上拓展来的。 单向数据流&#xff1a;是一种数据流动的模式。数据流的方向是有上到下的&#xff0c;在react中主要是从父组件流向子组件。 …

C语言进阶四:(指针和数组笔试题解析1)

一维数组&#xff1a; sizeof是计算内存大小的&#xff0c;strlen是计算字符串的长度。 int main() {//一维数组int a[] {1,2,3,4};printf("%d\n", sizeof(a));printf("%d\n", sizeof(a 0));printf("%d\n", sizeof(*a));printf("%d\n&q…

GitLab邮箱发送邮件:如何实现自动化发信?

gitlab邮箱发送邮件设置教程&#xff1f;Gitlab邮箱配置和使用&#xff1f; GitLab不仅提供了代码版本控制、持续集成/持续部署等功能&#xff0c;还支持通过其内置的邮件功能实现自动化邮件发送。AokSend将深入探讨如何在GitLab中配置和使用邮箱发送邮件功能。 GitLab邮箱发…

ERP进销存管理系统的业务全流程 Axure高保真原型源文件分享

这是一套ERP进销存管理系统的业务全流程Axure高保真原型设计文档。 原型预览地址&#xff1a;https://ppndif.axshare.com 产品意义&#xff1a; 提高工作效率&#xff1a; 电子记账替代手工记账&#xff0c;减少工作负担和人为错误。 实时查看库存情况&#xff0c;减少盘点时…

Tomcat_WebApp

Tomcat的目录的介绍 /bin&#xff1a; 这个目录包含启动和关闭 Tomcat 的脚本。 startup.bat / startup.sh&#xff1a;用于启动 Tomcat&#xff08;.bat 文件是 Windows 系统用的&#xff0c;.sh 文件是 Linux/Unix 系统用的&#xff09;。shutdown.bat / shutdown.sh&#xf…

ICMC 2024 has Arrived, and We’ll See You There

It’s finally time for the International Cryptographic Module Conference this year! ICMC 2024 will perhaps be the most energized ICMC to date, as post-quantum cryptography (PQC) – a topic that’s been weighing on most of our minds – features prominently …

大模型研发全揭秘:带你掌握训练后模型的最佳存储方案

在大模型项目的研发中&#xff0c;模型保存是每个AI从业者都必须掌握的重要技能。保存模型不仅能让我们在未来进行推理和预测&#xff0c;还能帮助我们继续优化和调整模型。因此&#xff0c;掌握如何高效保存模型显得尤为重要。本文将通过详细的技术细节和清晰的步骤&#xff0…

使用密钥文件登陆Linux服务器

假设A服务器为登陆目标,已经运行ssh服务。 B服务器作为登陆发起端。 登陆A服务器,账户S。 运行命令: ssh-keygen -t rsa 此时账户S家目录下会自动创建目录“.ssh”,目录下会有id_rsa和id_rsa.pub两个文件。 id_rsa为私钥,id_rsa.pub为公钥。 id_rsa文件内容下载到B服务…