【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;如果新服务器与旧服务器使用同…

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…

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 文件处理命令的百度网…

【每日学点鸿蒙知识】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;每…

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条点击跳转-点击历史搜索记录可同步到搜索框并自动搜索全部删除-可一次性全部删除历史搜索记录全部删除-有再次确认操作展示 进行搜索后留下搜索记录 点击垃圾桶图标,显示【清空全部】 点击【清…

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

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

【CSS in Depth 2 精译_098】17.3:CSS 动画延迟技术与填充模式设置 + 17.4:通过 CSS 动画传递意图的秘诀

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 17 章 动画】 ✔️ 17.1 关键帧17.2 3D 变换下的动画设置 17.2.1 添加动画前页面布局的构建17.2.2 为布局添加动画 17.3 动画延迟与填充模式 ✔️17.4 通过动画传递意图…

慧集通客户案例:致远OA与熵基考勤机集成方案

本原型公司是一家专注大健康产业的综合性高新科技形实体企业&#xff0c;按照单位的战略业务布局&#xff0c;围绕“做强做优、世界一流”的目标&#xff0c;加快内外部资源整合、加强业务协同、优化资源配置&#xff0c;有序推进大健康及相关产业的有机融合&#xff0c;加快构…

深度学习笔记(6)——循环神经网络RNN

循环神经网络 RNN 核心思想:RNN内部有一个“内部状态”,随着序列处理而更新 h t f W ( h t − 1 , x t ) h_tf_W(h_{t-1},x_t) ht​fW​(ht−1​,xt​) h t h_t ht​是new state, h t − 1 h_{t-1} ht−1​是old state, x t x_t xt​是当前时间步的输入,所有时间步共享 f W…

电脑卡顿救星,Mem Reduct 智能清理 10%以上内存

作为一款专业的内存优化工具&#xff0c;Mem Reduct凭借其强大的功能和极致的性能表现&#xff0c;成为众多用户管理系统内存的首选软件。它采用先进的内存管理算法&#xff0c;通过调用系统底层API接口&#xff0c;能够智能识别并清理各类内存占用&#xff0c;包括但不限于系统…

kibana启动报错:Invalid character in header content [“kbn-name“]

启动时候kibana报错&#xff1a; 打开 kibana配置文件&#xff0c;config/kibana.yml&#xff0c;配置上server.name即可&#xff0c;如下&#xff1a;

短视频矩阵系统后端源码搭建实战与技术详解,支持OEM

一、引言 随着短视频行业的蓬勃发展&#xff0c;短视频矩阵系统成为了众多企业和创作者进行多平台内容运营的有力工具。后端作为整个系统的核心支撑&#xff0c;负责处理复杂的业务逻辑、数据存储与交互&#xff0c;其搭建的质量直接影响着系统的性能、稳定性和可扩展性。本文将…

sql group by 多个字段例子

有表如下&#xff1b; 获取某年份、某地区、某产品的销售总额&#xff0c; 或者根据需要把字段顺序换一下&#xff1b; insert into sales (product, year, region, amount) values (飞机,2000,东部,5); insert into sales (product, year, region, amount) values (飞机,2001,…

RBAC权限控制

1、Spring Security 是一个功能强大的Java安全框架&#xff0c;它提供了全面的安全认证和授权的支持。 2 SpringSecurity配置类&#xff08;源码逐行解析&#xff09; Spring Security的配置类是实现安全控制的核心部分 开启Spring Security各种功能&#xff0c;以确保Web应…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图&#xff0c;如下&#xff1a; 图片可点击放大 接下来我们来介绍一下 推荐学习&#xff1a;GIS入门模型构建器Arcpy批量…