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

news2025/1/2 22:54:37

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.coloradmin.cn/o/2268129.html

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

相关文章

学习threejs,THREE.RingGeometry 二维平面圆环几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.RingGeometry 圆环几…

【畅购商城】详情页模块之评论

目录 接口 分析 后端实现&#xff1a;JavaBean 后端实现 前端实现 接口 GET http://localhost:10010/web-service/comments/spu/2?current1&size2 { "code": 20000, "message": "查询成功", "data": { "impressions&q…

04.HTTPS的实现原理-HTTPS的混合加密流程

04.HTTPS的实现原理-HTTPS的混合加密流程 简介1. 非对称加密与对称加密2. 非对称加密的工作流程3. 对称加密的工作流程4. HTTPS的加密流程总结 简介 主要讲述了HTTPS的加密流程&#xff0c;包括非对称加密和对称加密两个阶段。首先&#xff0c;客户端向服务器发送请求&#xf…

【每日学点鸿蒙知识】数据迁移、大量图片存放、原生自定义键盘调用、APP包安装到测试机、photoPicker顶部高度

1、迁移&#xff08;克隆&#xff09;手机中经过 ArkData &#xff08;方舟数据管理&#xff09;服务持久化后的数据&#xff1f; 在用户手动迁移&#xff08;克隆&#xff09;手机数据至另一台设备后&#xff0c;使用 ArkData &#xff08;方舟数据管理&#xff09;服务持久化…

Centos 7.6 安装mysql 5.7

卸载mysql 之前服务器上一直是mysql8&#xff0c;因为不经常使用&#xff0c;而且8的内存占用还挺高的&#xff0c;所以想降低到5.7&#xff0c;腾出点运行内存 停止服务 # 查询服务的状态 systemctl status mysqld # 停止服务 systemctl stop mysqld随后再次查询状态 查询…

大数据学习之Redis 缓存数据库二,Scala分布式语言一

一.Redis 缓存数据库二 26.Redis数据安全_AOF持久化机制 27.Redis数据安全_企业中该如何选择持久化机制 28.Redis集群_主从复制概念 29.Redis集群_主从复制搭建 30.Redis集群_主从复制原理剖析 31.Redis集群_哨兵监控概述 32.Redis集群_配置哨兵监控 33.Redis集群_哨兵监控原理…

Elasticsearch:使用 Ollama 和 Go 开发 RAG 应用程序

作者&#xff1a;来自 Elastic Gustavo Llermaly 使用 Ollama 通过 Go 创建 RAG 应用程序来利用本地模型。 关于各种开放模型&#xff0c;有很多话要说。其中一些被称为 Mixtral 系列&#xff0c;各种规模都有&#xff0c;而一种可能不太为人所知的是 openbiollm&#xff0c;这…

【日常开发】Git Stash使用技巧

文章目录 引言一、git stash 基础命令&#xff08;一&#xff09;存储当前工作区的修改&#xff08;二&#xff09;查看存储列表 二、查看存储的内容&#xff08;一&#xff09;查看特定存储的详细内容&#xff08;二&#xff09;查看特定存储修改的文件列表 三、恢复存储的修改…

GXUOJ-算法-第三次作业

1.基础练习 Huffman树 问题描述 GXUOJ | 基础练习 Huffman树 代码解析 #include<bits/stdc.h> using namespace std; int main(){int n;cin>>n;priority_queue<int,vector <int>,greater<int> >pq;for(int i0;i<n;i){int value;cin>>…

04-微服务02

我们将黑马商城拆分为5个微服务&#xff1a; 用户服务 商品服务 购物车服务 交易服务 支付服务 由于每个微服务都有不同的地址或端口&#xff0c;相信大家在与前端联调的时候发现了一些问题&#xff1a; 请求不同数据时要访问不同的入口&#xff0c;需要维护多个入口地址…

vue导入导出excel、设置单元格文字颜色、背景色、合并单元格(使用xlsx-js-style库)

npm i xlsx-js-style <template><button click"download">下载 Excel 表格</button><el-table :data"tableData" style"width: 100%"><el-table-column prop"date" label"日期" width"180…

AI文献阅读ChatDOC 、ChatPDF 哪个好?

作为AI产品的深度使用者&#xff0c;基本每天都在使用AI。AI诞生后仿佛给所有的产品打开了新世界大门。当然AI在文献阅读方面自然也不会缺席。 先来简单对比一下ChatDOC vs ChatPDF 从表格里可以看到ChatDOC与ChatPDF都是基于GPT的产品&#xff0c;但在功能上ChatDOC还是比Chat…

小程序基础 —— 10 如何调试小程序代码

如何调试小程序代码 在进行项目开发的时候&#xff0c;不可避免需要进行调试&#xff0c;那么如何调试小程序呢&#xff1f; 打开微信开发者工具后&#xff0c;有一个模拟器&#xff0c;通过模拟器能够实时预览自己写的页面&#xff0c;如下&#xff1a; 在上部工具栏中有一个…

vue+echarts实现疫情折线图

效果&#xff1a; 代码&#xff1a; <<template><div><div id"left1" style "height:800px;width:100%"></div></div> </template><script> //疫情数据//export default {data() {return {data:{//疫情数据…

使用arduino从零做一辆ROS2Jazzy的阿克曼小车---电机驱动篇

本项目采用 Arduino Mega2560 Pro 作为主控开发板&#xff0c;电机驱动器选用 TB6612FNG&#xff0c;并配备了 12V 电源、两个直流减速电机和一个舵机。未来计划通过嘉立创将各模块集成到一个 PCB 板上&#xff0c;提升系统的集成度和稳定性。 本文将聚焦于电机驱动部分&#x…

基于源码剖析:深度解读JVM底层运行机制

每日禅语 佛说&#xff0c;给你修路的&#xff0c;是你自己&#xff1b;埋葬你的&#xff0c;也是你自己&#xff1b;帮助你的&#xff0c;是你自己&#xff1b;毁灭你的&#xff0c;也是你自己&#xff1b;成就你的&#xff0c;自然还是你自己。所以佛说&#xff1a;自作自受&…

算法进阶:贪心算法

贪心算法是一种简单而直观的算法思想&#xff0c;它在每一步选择中都采取在当前状态下最优的选择&#xff0c;以期望最终得到全局最优解。贪心算法通常适用于一些具有最优子结构的问题&#xff0c;即问题的最优解可以通过一系列局部最优解的选择得到。 贪心算法的基本思路是&a…

Hive刷分区MSCK

一、MSCK刷分区 我们平时通常是通过alter table add partition方式增加Hive的分区的&#xff0c;但有时候会通过HDFS put/cp命令或flink、flum程序往表目录下拷贝分区目录&#xff0c;如果目录多&#xff0c;需要执行多条alter语句&#xff0c;非常麻烦。Hive提供了一个"…

Windows API Set:那些“只存在但不被使用“的DLL

API Set 是什么&#xff1f; 想象一下&#xff0c;Windows就像一个大型图书馆&#xff0c;而API Set就是这个图书馆的索引系统。但这个索引系统非常特别&#xff1a;它是直接内置在Windows加载器中的"虚拟目录"。 // 一个典型的API Set映射示例 api-ms-win-core-mem…

【Java 数据结构】合并两个有序链表

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 题目 2. 解析 3. 代码实现 4. 小结 1. 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示…