【Ubuntu】如何轻松在Apache服务器上部署Laravel博客系统

Laravel 是一个 PHP 框架,和 Angular 以及 Symfony 类似,它能让你快速且高效地搭建出功能强大的网站。在这篇文章里,我将手把手教你如何在 Ubuntu 系统上使用 Apache 和 MySQL 部署 Laravel 应用。

步骤 1:更新系统

首先,咱们得把系统的软件包列表更新一下,并把所有过时的包升级到最新版本。这就好比给你的电脑来一次大扫除,确保一切都能顺畅运行。

$ sudo apt update
$ sudo apt upgrade -y

步骤 2:安装必要的软件包

要让 Laravel 能正常工作,你需要先安装一些基本的软件包,比如 Apache、MySQL、PHP 以及一些 PHP 扩展模块。这些就像为 Laravel 准备的食材,缺一不可。

$ sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-xml php-mbstring php-mcrypt php-curl php-zip

步骤 3:配置 MySQL

现在咱们已经把需要的软件都装好了,接下来就是配置 MySQL 来配合 Laravel 使用。我们会通过运行一个 MySQL 脚本来调整几个安全相关的设置,这个过程就像是给 MySQL 加一把锁,让它更安全。

$ sudo mysql_secure_installation

执行上面的命令后,你会被问到一系列问题,按照下面的回答来:

  • 要不要设置 VALIDATE PASSWORD 组件?N
  • 删除匿名用户?Y
  • 禁止 root 用户远程登录?Y
  • 删除测试数据库及其访问权限?Y
  • 现在重新加载权限表?Y

是时候为 Laravel 创建一个数据库和一个新的用户了。让我们先进入 MySQL 控制台吧。

$ sudo mysql -u root

接着,你可以创建一个名为 laravel_app 的示例数据库和一个名为 laravel_user 的示例用户。当然,你可以根据自己的喜好更改数据库名和用户名,但一定要记得设置一个更安全的密码哦。

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

步骤 4:安装 Composer

到了这一步,我们该安装 Composer 了,它是用来创建 Laravel 应用的好帮手。跟着下面的脚本走就对了。

$ curl -sS https://getcomposer.org/installer | php

之后,我们需要把 “composer.phar” 文件移到 “/bin” 目录下,并赋予它可执行权限,这样就可以直接用 composer 命令啦。

$ sudo mv composer.phar /usr/local/bin/composer
$ sudo chmod +x /usr/local/bin/composer

步骤 5:安装 Laravel

终于可以创建 Laravel 项目了!我们就把它命名为 “laravel_proj” 吧。

$ composer create-project --prefer-dist laravel/laravel laravel_proj

然后进入项目目录并编辑 “.env” 文件,这是 Laravel 的环境配置文件,相当于它的身份证。

$ cd laravel_proj
$ vim .env

在文件中找到以下几行,去掉 # 号以取消注释,并确保它们的值是你刚才设置的数据库名、用户名和密码(如果你用了默认的名字和密码的话)。

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

保存并关闭文件,然后运行下面的命令,利用 “database/migrations” 目录下的迁移文件快速创建数据库表结构,同时实现数据库版本控制。

$ php artisan migrate

步骤 6:本地开发

现在你已经可以在本地系统上访问 Laravel 应用了。只需运行以下命令,应用就会在 localhost 的 80 端口上运行。

$ sudo php artisan serve --host=localhost --port=80

打开浏览器,输入 “http://localhost/” 就能看到你的 Laravel 应用了。

步骤 7:部署 Laravel 应用

为了把应用部署到服务器上,你需要把 Laravel 目录(我们叫它 “laravel_proj”)移动到 “/var/www/html” 目录下。虽然这不是硬性规定,但这是最传统的方法,我们就这么办吧。

$ cd ..
$ sudo mv laravel_proj/ /var/www/html/

接下来,我们递归地把 “www-data” 设置为目录的所有者,并授予 “storage” 目录必要的权限,以便 Laravel 应用能够顺利写入数据。

$ sudo chgrp -R www-data /var/www/html/laravel_proj/
$ sudo chmod -R 775 /var/www/html/laravel_proj/storage/

下一步是为 Laravel 应用创建一个 Apache 配置文件。使用下面的命令创建一个 “laravel.conf” 文件。

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

把下面这段代码粘贴进去:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/laravel_proj/public

<Directory /var/www/html/laravel_proj>  Options Indexes FollowSymLinks  AllowOverride All  Require all granted  
</Directory>  ErrorLog ${APACHE_LOG_DIR}/error.log  
CustomLog ${APACHE_LOG_DIR}/access.log combined  

保存并关闭文件,别忘了禁用默认的 Apache 配置文件。

$ sudo a2dissite 000-default.conf

之后,激活我们为 Laravel 应用创建的配置文件。

$ sudo a2ensite laravel.conf

最后,启用 Apache 的 rewrite 模块并重启 Apache 服务,让所有更改生效。

$ sudo a2enmod rewrite
$ sudo systemctl restart apache2

步骤 8:允许防火墙

UFW(Uncomplicated Firewall)是预装在 Ubuntu 上的防火墙工具,如果你正在用它管理防火墙规则,记得要开启 Apache 所需的端口,这样才能保证外部可以访问你的网站。

$ sudo ufw allow “Apache Full”

结语

好啦,到这里你就完成了 Laravel 应用的部署!你可以通过 IP 地址或域名来访问你的 Laravel 应用了。如果在过程中遇到任何问题,欢迎在评论区留言,我会尽力帮你解决。祝你玩得开心!

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

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

相关文章

阿里云-将旧服务器数据与配置完全迁移至新服务器

文章目录 一&#xff1a;创建镜像二&#xff1a;将创建好的镜像复制到新服务器所在的目标地域&#xff08;如果新服务器与镜像在同一地域就不用进行这一操作&#xff09;三&#xff1a;将镜像配置到新服务器上四&#xff1a;导出安全组&#xff08;如果新服务器与旧服务器使用同…

MYSQL无法被连接问题

如果您在尝试连接到MySQL服务器时遇到问题&#xff0c;以下描述了您可以采取的一些措施来纠正该问题。 确保服务器正在运行。如果没有&#xff0c;则客户端无法连接到它。例如&#xff0c;如果尝试连接到服务器失败并出现以下消息之一&#xff0c;则可能是服务器未运行&#xf…

vue3使用element-plus,解决 el-table 多选框,选中后翻页再回来选中失效问题

问题&#xff1a;勾选的数据分页再回来回消失 1.在el-table中加 :row-key"getRowKey" const getRowKey (row) > { return row.id; // id必须是唯一的 }; 2.给type为selection的el-table-column添加上reserve-selection属性 <el-tableref"multipleTab…

防火墙原理介绍大全

硬件防火墙的原理 软件防火墙只有包过滤的功能&#xff0c;硬件防火墙中可能还有除软件防火墙以外的其他功能&#xff0c;例如CF&#xff08;内容过滤&#xff09;IDS&#xff08;入侵侦测&#xff09;IPS&#xff08;入侵防护&#xff09;以及VPN等等的功能。 也就是说硬件防…

StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成

文章目录 一、项目介绍二、项目部署模型的权重下载提取目标图像的关节点图像&#xff08;这个可以先不看先用官方提供的数据集进行生成&#xff09;提取人脸&#xff08;这个也可以先不看&#xff09;进行图片的生成 三、模型部署报错 一、项目介绍 由复旦、微软、虎牙、CMU的…

JS中的闭包和上下文

变量提升 和 函数提升 这里要提到一个提升的概念&#xff0c;即在JS中&#xff0c;在解析代码之前还有一个预处理的过程&#xff0c;这个过程中会把部分变量和函数声明提前到代码的最顶部&#xff0c; 会在其他所有代码之前执行。虽然当我们按照规范&#xff08;严格模式或者T…

从百度云网盘下载数据到矩池云网盘或者服务器内

本教程教大家如何快速将百度云网盘数据集或者模型代码文件下载到矩池云网盘或者服务器硬盘上。 本教程使用到了一个开源工具 BaiduPCS-Go&#xff0c;官方地址 &#xff1a; https://github.com/qjfoidnh/BaiduPCS-Go 这个工具可以实现“仿 Linux shell 文件处理命令的百度网…

基于Fastapi搭建API服务实践案例

文章目录 前言服务框架结构app.pyrun_app_server.shrouters/upload.pyrouters/query_result.pyutils/utils.pyutils/tasks.py 总结 前言 本文讲述了如何使用fastapi搭建一个属于自己的服务&#xff0c;整个服务使用fastapi框架搭建&#xff0c;celery管理任务队列&#xff0c;…

【每日学点鸿蒙知识】hvigor升级、Dialog动画、LocalStorage无效、页面与子组件的生命周期、cookie设置

1、HarmonyOS 编译工具hvigor如何升级到"hvigorVersion": "4.2.0"版本&#xff1f; 可以手动更新到指定版本&#xff0c;参考链接如下&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-plugin-V5 2、HarmonyOS…

【AI学习】DeepSeek-V3 技术报告学习:总体架构

翻了一下DeepSeek-V3 技术报告学习&#xff0c;太长&#xff0c;只是大概翻了一下&#xff0c;其中Multi-Token Prediction的技术就很亮眼。 摘要 本文介绍了DeepSeek-V3&#xff0c;这是一个拥有671B总参数的强大混合专家&#xff08;MoE&#xff09;语言模型&#xff0c;每…

总结-常见缓存替换算法

缓存替换算法 1. 总结 1. 总结 常见的缓存替换算法除了FIFO、LRU和LFU还有下面几种&#xff1a; 算法优点缺点适用场景FIFO简单实现可能移除重要数据嵌入式系统&#xff0c;简单场景LRU局部性原理良好维护成本高&#xff0c;占用更多存储空间内存管理&#xff0c;浏览器缓存L…

手机联系人 查询 添加操作

Android——添加联系人_android 添加联系人-CSDN博客 上面连接添加联系人已测试 是可以 Android : 获取、添加、手机联系人-ContentResolver简单应用_contentresolver 添加联系人-CSDN博客

【黑马头条训练营】day01-黑马头条整体构成与App登录

目录 描述app端从登录请求到首页显示的全部流程 描述用户微服务的组成及登录业务及实现逻辑 自己编写用户微服务登录关键逻辑 描述app端从登录请求到首页显示的全部流程 从浏览器发起请求访问app前端 通过nginx请求到我们app前端 在app端我们输入手机号及密码登录 发起请求…

一文大白话讲清楚javascript浮点数精度丢失和解决策略

文章目录 一文大白话讲清楚javascript浮点数精度丢失和解决策略1.问题的来源北京2. 浮点数的存储二进制存储3.精度丢失解决方案 一文大白话讲清楚javascript浮点数精度丢失和解决策略 1.问题的来源北京 我们先看一个经典javascript问题&#xff0c;关于等值判断 let num0.10…

C语言-数据结构-图

目录 一,图的概念 1,图的定义 2,图的基本术语 二,图的存储结构 1,邻接矩阵 2,邻接表 三,图的遍历 1,深度优先搜索 2,广度优先搜素 四,生成树和最小生成树 1,生成树的特点: 2,最小生成树 (1)普利姆算法Prim (2)普里姆算法思路 五,最短路径 1,Dijkstra算法 2,Fl…

C语言-数据结构-查找

目录 一,查找的概念 二,线性查找 1,顺序查找 2,折半查找 3,分块查找 三,树表的查找 1,二叉排序树 (1)查找方式: (2)、二叉排序树的插入和生成 (3)、二叉排序树的删除 2,平衡二叉树 (1)、什么是平衡二叉树 (2)、平衡二叉树的插入调整 &#xff08;1&#xff09;L…

【微信小程序】4plus|搜索框-历史搜索 | 我的咖啡店-综合实训

升级版1-清空全部的再次确认 实现功能: 历史搜索记录展示-历史搜索记录展示10条点击跳转-点击历史搜索记录可同步到搜索框并自动搜索全部删除-可一次性全部删除历史搜索记录全部删除-有再次确认操作展示 进行搜索后留下搜索记录 点击垃圾桶图标,显示【清空全部】 点击【清…

线程池基础知识

线程池&#xff1a; 顾名思义就是管理一系列线程的资源池。当有任务要处理时&#xff0c;直接从线程池中获取线程来处理&#xff0c;处理完之后线程并不会立即被销毁&#xff0c;而是等待下一个任务。 使用线程池的好处 降低资源消耗&#xff1a;通过重复利用已创建的线程降…

ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器

目录 一?ARM 架构中的寄存器 ARM 架构中的寄存器 通用寄存器 状态寄存器 控制寄存器 特殊用途寄存器 总结 二 通用寄存器 ARM 架构中的通用寄存器 ARMv7 架构 ARMv8 架构 实例 ARMv7 架构 ARMv8 架构 三 状态寄存器 ARM 架构中的状态寄存器 状态寄存器 详细…

macrodroid通过http请求控制手机运行宏

macrodroid adb命令 adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS例:http请求手机播放指定MP3文件 声音素材_电量过低提醒 新建一个宏 添加触发器-连接-http服务器请求 路径随意填,最好不要有特殊符号,不然浏览器识别链接会出错,…