Laravel框架学习笔记——Laravel环境配置及安装(Ubuntu20.04为例)
目录
- 引言
- 1、安装Nginx
- 2、安装PHP
- 3、安装Composer
- 4、搭建Laravel框架项目
- 5、修改Nginx映射
- 6、安装MySQL
引言
好久没写博客了,因为个人需要, 所以要涉及到Laravel框架的学习,所以会出一系列的关于PHP的Laravel框架学习笔记,希望能够帮助到有需要的人。本系列所有的内容,都以官网中文文档为准进行学习,我使用的系统是Ubuntu20的虚拟系统。
1、安装Nginx
因为我个人是喜欢Nginx作为代理服务器,所以选择Nginx进行安装。如果要选用Apache的可以自行安装,先安装代理再执行其他的步骤。
sudo apt-get update #更新应用源
sudo apt-get upgrade #对系统安装程序进行更新
sudo apt-get nginx #安装nginx
nginx的版本不用追求高,选择稳定版本即可。
2、安装PHP
我服务器使用Nginx,所以安装php-fpm,但是因为框架版本选择的是Laravel9,Laravel9的先决前提是PHP版本>=8.0,如果你是阿里云Ubuntu 20 LTS,就不用升级服务器了,不然需要升级一下才有PHP8;
sudo apt install software-properties-common
sudo apt-add-repository ppa:ondrej/php # 添加php源地址
sudo apt-get update
然后进行php的安装,以及所需的插件安装,如下
sudo apt-get install php8.0-fpm php8.0-mysql php8.0-gd php8.0-mbstring php8.0-bcmath php8.0-xml php8.0-curl php8.0-redis php8.0-opcache php8.0-odbc
在这里我遇到了一个问题
Cannot initiate the connection to ppa.launchpad.net:80 (2620:2d:4000:1::3e). - connect (101: Network is unreachable) [IP: 185.125.190.52 80]
Fetched 4,965 kB in 3min 27s (24.0 kB/s)

这是用使用sudo apt-get update也没用,也是超时

可以通过增加超时和重试来使其工作:
sudo apt-get update --option Acquire::Retries=100 --option Acquire::http::Timeout="120"
然后再执行安装命令就可以安装成功了php -v检查是否安装成功

设置开机自启以及查看状态
systemctl status php8.0-fpm
systemctl enable php8.0-fpm
3、安装Composer
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
这里我们安装composer就完全参照官方文档
安装前一定要先安装好php
下载安装脚本 - composer-setup.php - 到当前目录。
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
执行安装过程。
php composer-setup.php

上述所示就是安装成功了
删除安装脚本。
php -r "unlink('composer-setup.php');"
接下来直接进行全局安装,这样使得在命令窗口中可以直接使用composer
sudo mv composer.phar /usr/local/bin/composer
上述步骤执行完毕后,键入composer -V查看是否已经安装配置成功。
yby@ubuntu:~$ composer -V
Composer version 2.5.4 2023-02-15 13:10:06
最后,因为composer的源默认是国外的,使用国外源安装插件都可能比较慢,参照官方文档,可以换源,但是我换完源后下面安装Laravel安装器失败了,这个,大家慎重吧。如果大家换成国内源安装东西失败了,可以换回来,或者换成阿里云镜像源(真好用,推荐阿里云)。步骤都在下面了。
composer config -g repo.packagist composer https://packagist.phpcomposer.com #国内源
composer config -g repo.packagist composer https://packagist.org #官方国外源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ #阿里云镜像
至此composer安装完成,最后不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本。
4、搭建Laravel框架项目
参照官网给出的文档,我们可以直接使用composer进行搭建,但是每次都要输入一长串指令有些麻烦,所以我们可以先安装Laravel安装器,然后通过Laravel安装器安装。
通过Composer安装laravel安装器
composer global require laravel/installer

安装成功。
但是呢,执行laravel -v时提示laravel not found
看了一下官方文档

晕死,还要自己设置一下环境变量,执行下述命令
export PATH="$HOME/.config/composer/vendor/bin:$PATH";
然后再执行laravel -v可以看到如下提示则成功

OK。接下来进入/var/www/目录下,该目录是安装nginx时自动创建的目录,在该目录下创建新的Laravel项目。
laravel new example-app
产生了如下问题,权限不够,于是该给/var/www/文件夹更改权限

sudo usermod -aG www-data $USER #创建一个www-data用户组,将自己加入用户组中
sudo chown -R www-data:www-data /var/www #给文件夹用户组权限
sudo chown -R $USER:$USER /var/www #给自己操作文件夹的权限
这两句执行完后,再执行下载命令即可laravel new example-app,等待安装即可

然后进入example-app,测试执行即可
cd example-app
php artisan serve
浏览器打开8000端口就行

这样一个Laravel环境就搭建完成了,可以安装mysql数据库等,进行开发。
5、修改Nginx映射
这里配置映射为了让前端页面能够访问到接口,或者让别人能够访问网页,需要修改Nginx配置,我是Ubuntu20.04的系统,所以Nginx的配置位置在/etc/nginx/sites-available/default,键入命令打开配置文件
没有vim的可以先安装vim,这是一个文件编辑软件
sudo apt-get install vim #安装vim
vim /etc/nginx/sites-available/default #编辑配置文件
键入i,然后删除文件内所有内容,复制官网的配置即可。

直接整个复制到刚才打开的文件里
然后修改 server_name后的内容改成下划线,这样不管是IP还是域名都能访问。root后改成刚才我们在/var/www文件夹下新安装的laravel项目的public位置,public文件内存的就是项目编译后产生的php文件。

按下Esc键,输入:wq保存退出,改了配置后重启nginx服务
service nginx restart
然后进入example-app目录执行上面的启动命令,浏览去输入localhost查看,但是我这里,如果输入:8000也就是laravel默认运行端口,则可以正常打开,但是我用localhost,即80端口映射访问时就不行,报错权限问题如下

发现这里还需要给刚生成的example-app项目文件设置权限,下面操作都用一下,问题不大
sudo chown -R www-data:www-data /var/www/example-app/
sudo chmod -R 775 /var/www/example-app/storage/
sudo chmod -R 775 /var/www/example-app/bootstrap/cache
然后运行,我们在localhost就可以正常打开了

6、安装MySQL
因为我们装的是Laravel9,所以按照官方文档,需要安装的MySQL版本需要在5.7以上

直接安装8.0好了,因为MySQL在Ubuntu20.04操作系统上不再发布MySQL5.7版本的,换源下载麻烦,直接安装8.0版本
sudo apt update
sudo apt-get install mysql-server
安装完后键入mysql -V查看版本,出现版本号就是安装成功

狗屎啊,真的是依托答辩,居然不提示我设置密码,据说是默认密码123456,然是也进不去,就必须要前面键入sudo命令才能进入,如下所示


简直依托答辩,治理直接超级管理员权限进去,键入命令,设置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
然后ctrl+z推出,重新试一下

哎嗨,进来了,搞定搞定,设置一下开机自启就可以了,环境差不多结束。
systemctl enable mysql
搞定,下期再见。
相关文章:
Laravel框架学习笔记——Laravel环境配置及安装(Ubuntu20.04为例)
目录引言1、安装Nginx2、安装PHP3、安装Composer4、搭建Laravel框架项目5、修改Nginx映射6、安装MySQL引言 好久没写博客了,因为个人需要, 所以要涉及到Laravel框架的学习,所以会出一系列的关于PHP的Laravel框架学习笔记,希望能够…...
模拟百度翻译-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)
【案例6-5】 模拟百度翻译 【案例介绍】 1.任务描述 大家对百度翻译并不陌生,本案例要求编写一个程序模拟百度翻译。用户输入英文之后搜索程序中对应的中文,如果搜索到对应的中文就输出搜索结果,反之给出提示。本案例要求使用Map集合实现英…...
自然语言处理(NLP)之求近义词和类比词<MXNet中GloVe和FastText的模型使用>
这节主要就是熟悉MXNet框架中的两种模型:GloVe和FastText的模型(词嵌入名称),每个模型下面有很多不同的词向量,这些基本都来自wiki维基百科和twitter推特这些子集预训练得到的。我们只需要导入mxnet.contrib中的text模块即可,这里…...
2023年CDGA考试-第13章-数据质量(含答案)
2023年CDGA考试-第13章-数据质量(含答案) 单选题 1.在导致数据质量问题的常见原因中关于数据输入问题以下描述正确的是: A.数据采集端缺乏数据质量管控 B.相同字段重复设计导致数据不一致 C.缺乏数据采集规范的制定 D.所有描述都正确 答案 D 2.数据质量计划应将其范围限…...
ASEMI高压MOS管ASE65R330参数,ASE65R330图片
编辑-Z ASEMI高压MOS管ASE65R330参数: 型号:ASE65R330 漏极-源极电压(VDS):650V 栅源电压(VGS):20V 漏极电流(ID):12.5A 功耗(P…...
LeetCode动态规划经典题目(九):子序列、子数组问题
目录 31. LeetCode674. 最长连续递增序列 32. LeetCode18. 最长重复子数组 33. LeetCode1143. 最长公共子序列 34. LeetCode1035. 不相交的线 35. LeetCode53. 最大子数组和 36. LeetCode392.判断子序列 37. LeetCode115. 不同的子序列 38. LeetCode583. 两个字符串的删…...
如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响
SCI的写作和发表是科研人提升自身实力和实现自己价值的必要途径。“如何利用有限的数据发表更多的SCI论文?”是我们需要解决的关键问题。软件应用只是过程和手段,理解事件之间的内在逻辑和寻找事物之间的内在规律才是目的。如何利用有限的数据发表更多的…...
六【 SpringMVC框架】
一 SpringMVC框架 目录一 SpringMVC框架1.什么是MVC2.SpringMVC概述3.SpringMVC常见开发方式4.SpringMVC执行流程5.SpringMVC核心组件介绍6.快速构建Spring MVC程序✅作者简介:Java-小白后端开发者 🥭公认外号:球场上的黑曼巴 🍎个…...
【BBuf的CUDA笔记】八,对比学习OneFlow 和 FasterTransformer 的 Softmax Cuda实现
0x1. OneFlow/FasterTransformer SoftMax CUDA Kernel 实现学习 这篇文章主要学习了oneflow的softmax kernel实现以及Faster Transformer softmax kernel的实现,并以个人的角度分别解析了原理和代码实现,最后对性能做一个对比方便大家直观的感受到onefl…...
python 类对象的析构释放代码演示
文章目录一、类的构造函数与析构函数二、代码演示1. 引用的更迭2. 只在函数内部的类对象三、函数内部返回的类对象1. 使用全局变量 引用 函数内部的类对象一、类的构造函数与析构函数 init 函数是python 类的构造函数,在创建一个类对象的时候,就会自动调…...
Hadoop Shell常用命令
Hadoop Shell命令在管理HDFS的时候还是比较常用的,Hadoop Shell命令与shell命令极为相似,但是方便查询,在这里总结分享,大家enjoy~~ 1,cat 语法格式:hadoop fs -cat URI [URI …] 含义:将路径…...
Android中级——色彩处理和图像处理
色彩处理 通过色彩矩阵处理 色彩矩阵介绍 图像的RGBA可拆分为一个4行5列的矩阵和5行1列矩阵相乘 其中4行5列矩阵即为ColorMatrix,可通过调整ColorMatrix间接调整RGBA 第一行 abcde 决定新的 R第二行 fghij 决定新的 G第三行 klmno 决定新的 G第四行 pqrst 决定新…...
C++类和对象:类的定义、类对象的存储、this指针
目录 一. 对于面向过程和面向对象的认识 二. 类 2.1 struct关键字定义类 2.1.1 C语言中的struct关键字 2.1.2 C中的struct关键字 2.2 class关键字 2.1 使用class关键字定义类 三. 类的访问限定及封装 3.1 类的访问权限及访问限定符 3.1.1 访问权限 3.1.2 访问限定…...
代码随想录算法训练营第三十九天 | 62.不同路径,63. 不同路径 II
一、参考资料不同路径https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.html 视频讲解:https://www.bilibili.com/video/BV1ve4y1x7Eu不同路径 IIhttps://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.htmlhttps://progr…...
数据库复习3
一. 简答题(共1题,100分) 1. (简答题) 存在数据库test,数据库中有如下表: 1.学生表 Student(Sno,Sname,Sage,Ssex) --Sno 学号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 主键Sno 2.教师表 Teacher(Tno,Tname) --T…...
顺序表的增删查改
数据结构 是数据存储的方式,对于不同的数据我们要采用不同的数据结构。就像交通运输,选用什么交通工具取决于你要运输的是人还是货物,以及它们的数量。 顺序存储结构 包括顺序表、链表、栈和队列等。 例如腾讯QQ中的好友列表,…...
jupyter matplotlib中文乱码解决
中文乱码可能有两种情况 1. matplotlib里面有中文字体 2. 没有中文字体 查看是否有中文字体: # 查询当前系统所有字体 from matplotlib.font_manager import FontManager import subprocessmpl_fonts = set(f.name for f in FontManager().ttflist)print(all font list get f…...
Smtplib之发邮件模块
目录 创建Smtp对象 Smtp类中的方法 MIME MIMEBase MIMEBase MIMEMultipart MIMEApplication MIMEAudio MIMEImage MIMEText 实例 texthtml格式 发送带图片附件的邮件 发送带附件的邮件 含多种格式 SMTP模块 SMTP 简单传输协议,它是一组用于由源…...
Android 适配手机和平板
一、屏幕适配限定符Android 系统加载应用资源时 , 会根据当前运行应用的设备的相关属性 , 如 : 屏幕尺寸 / 屏幕像素密度 / 宽高比 / 屏幕方向 等属性 , 加载不同的屏幕适配限定符目录下的资源 ;如 : 横竖屏切换时 , res/layout-land 目录中 , 存放的是横屏布局 , res/layout-p…...
时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测
时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测 目录时序预测 | MATLAB实现LSTM-SVR(长短期记忆神经网络-支持向量机)时间序列预测效果一览基本介绍模型介绍LSTM模型SVR模型LSTM-SVR模型程序设计参考资料致谢效果一览 基本介绍 本次运行测试环境MA…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
