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…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...