重学Laravel小记

重学Laravel小记

记一次搭建开发环境阶段修改Bug的经历

笔者已于很早的时候安装过wsl+docker以求在这样的开发环境之下学习开发Laravel。

今天笔者睽违已久打开终端搭载的ubuntu试图使用以下命令(注:该命令也只允许在进驻到开发项目中启动才有卵用)

./vendor/bin/sail up

然而显示的结果却是如是

[+] Running 6/6
 ⠿ Container example-app-redis-1         Running                                                           0.0s
 ⠿ Container example-app-meilisearch-1   Running                                                           0.0s
 ⠿ Container example-app-mysql-1         Created                                                           0.0s
 ⠿ Container example-app-mailhog-1       Running                                                           0.0s
 ⠿ Container example-app-selenium-1      Running                                                           0.0s
 ⠿ Container example-app-laravel.test-1  Recreated                                                         1.6s
Attaching to example-app-laravel.test-1, example-app-mailhog-1, example-app-meilisearch-1, example-app-mysql-1, example-app-redis-1, example-app-selenium-1
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

核心重点自然是最后的一段话,3306端口出了很大的问题。通常情况下,出现这个问题的原因可能有:

  1. 端口冲突: 可能已经有一个进程在使用端口 3306,或者该端口已经被其他容器占用。
  2. 网络策略或防火墙: 系统的网络策略或防火墙可能会限制端口映射,导致 Docker 无法绑定到指定的端口。
  3. Docker 网络问题: Docker 网络可能出现问题,可能需要重启 Docker 守护进程或清理无用的网络。
  4. 其他配置问题: 可能存在其他配置问题,例如 Docker Compose 配置或其他容器相关的配置。

我个人隐隐约约感觉到因为第一个原因出错的可能性很大,于是打开powershell开始排查

PS CC:\> netstat -ano | Select-String ":3306"

  TCP    0.0.0.0:3306           0.0.0.0:0
       LISTENING       5708
  TCP    0.0.0.0:33060          0.0.0.0:0
       LISTENING       5708
  TCP    [::]:3306              [::]:0
       LISTENING       5708
  TCP    [::]:33060             [::]:0
       LISTENING       5708

查出占用3306端口的进程是5708,至此问题已经基本解决大半了。于是进一步调查5708的进程名称是什么

PS C:\> Get-Process -Id 5708 | Select-Object Name, Path

Name   Path
----   ----
mysqld

至此我才想起来,大概在两周以前,我的电脑被一位前辈强行安装了一个mysql8.0,就是这个开机自启动的mysql8.0占用了我的3306。然后我进一步调查mysql服务的名字是什么

PS C:\Users\FredZhu> Get-service
Status   Name               DisplayName
------   ----               -----------
Stopped  AarSvc_91a4f       Agent Activation ...
Stopped  AJRouter           AllJoyn Router Se...
…………
Running  MySQL80            MySQL80

查出服务名称为MySQL80。接下来的操作就很明朗了,终止它之后并且检查

PS C:\Users\FredZhu> Stop-Service -Name MySQL80
PS C:\Users\FredZhu> Get-Service -Name MySQL80

Status   Name               DisplayName

------   ----               -----------

Stopped  MySQL80            MySQL80

另外提一下设置mysql80开机自启


PS C:\> Get-Service -Name MySQL80 | Select-Object DisplayName, StartType

DisplayName StartType
----------- ---------
MySQL80     Automatic

使用此命令查看该服务的开机自启与否状态。

PS C:\> Set-Service -Name MySQL80 -StartupType Disabled
PS C:\> Get-Service -Name MySQL80 | Select-Object DisplayName, StartType

DisplayName StartType

----------- ---------

MySQL80      Disabled

这里我们通过以上命令使得开机自启状态被关闭,并且我们经过再次核验确认,开机自启的选项确实已经被关闭。

OK

让我们再次启动一下看看!

@LAPTOP-DK38CGUO:~/example-app$ ./vendor/bin/sail down
@LAPTOP-DK38CGUO:~/example-app$ ./vendor/bin/sail up

Laravel

大功告成!

点击左下角的shop竟然还有周边商品可以购买,就是价格……
the shop Of Laravel

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 3

哈哈,开头是笔者,后面怎么又变成我了

8个月前 评论

之前没发现这个 welcome 欢迎页, 竟然有个商城呢

8个月前 评论
PaoPaoLfred (楼主) 8个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
1
粉丝
0
喜欢
0
收藏
0
排名:2540
访问:426
私信
所有博文
社区赞助商