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…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
