Vagrant配置Laravel环境:CentOS7.4 + Apache2.4 + Mysql5.7 + PHP7.2

第一次尝试virtualbox + vagrant搭建环境,laravel官方提供的homestead非常的方便,一次就成功了,配置上也基本上是傻瓜式的。
一方面是想尝试下自己配置环境,另一方面是homestead本身提供的是Ubuntu系统,但是因为公司正式环境是CentOS,,虽然Ubuntu和CentOS的命令相差不大,还是保持一直比较好,并且对于初学者的我来说,担心它们在细节上的不一致给我带来困惑,等等等等这些原因吧,自己动手试下。

开始跳坑吧

安装过程就不具体说了,都是一个个的百度出来的安装方法,安装的软件有这些

CentOS     7.4
Apache     2.4
Mysq       5.6
PHP        7.2
Redis
Git
Vim
Composer
Node     6.10
npm      3.10
cnpm
Supervisor

也都是laravel环境必须的东西。
先从 vagrant官网 找到centos7的box作为基础,自己往里边添加软件,然后再打包成box,供之后使用。

遇到的问题

整个安装下来略累,有的问题都给忘了。软件安装的问题好像就一个mysql的。其余就是virtualbox的配置问题了

首先是mysql启动是报错

Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

发现是mysql目录所属用户是root,而mysql是没有任何权限的,递归更改MySQL目录用户和用户组为mysql,然后可以正常启动

Vagrant共享目录配置


### 配置共享目录
config.vm.synced_folder    "D:/box/Code/", "/var/www/"

启动 vagrant up时报错

unknown filesystem type 'vboxsf'

不能识别vboxsf是由于未安装VirtualBox增强功能软件。
然后需要在virtualbox软件的“设置”->“存储”里,为box添加虚拟光驱,然后启动,在virtualbox里启动后的gui(是这么个叫法?)界面里,顶部栏里有“安装增强功能”的按钮,直接安装即可。但是又又报错了

virtual box安装增强功能 ... 未能加载光驱 ...

网上遇到这个问题的还挺多。但是我这里挂载、卸载多次都没用,都是报如上错误。
最终通过命令行解决的。解决方式的链接在下面,里边有好几个解决方法,可以尝试。
Unable to mount VirtualBox Guest Additions as a guest

1. Devices -> Install Guest Additions...(it's like insert a cd to cdrom drive)
2. Open a terminal to login the guest machine
3. Type below
    sudo mkdir --p /media/cdrom
    sudo mount -t auto /dev/cdrom /media/cdrom/
    cd /media/cdrom/
    sudo sh VBoxLinuxAdditions.run
4. You now can do full screen, shared folder, clipboard sharing, etc

成功啦,可以启动啦。

当然,人生怎么可能一帆风顺呢
启动时报错

/sbin/mount.vboxsf: mounting failed with the error: No such device

最终在这里解决
VirtualBox: mount.vboxsf: mounting failed with the error: No such device

cd /opt/VBoxGuestAdditions-*/init  
sudo ./vboxadd setup

共享目录可以用啦

之后就是测试啦,看下怎么在虚拟机中运行代码,在win中写代码

在win中create laravel项目后,在linux中cnpm install时报错。

Install fail! Error: EPROTO: protocol error, symlink '../../_is-windows@1.0.2@is-windows' -> '/var/www/laravel/node_modules/_cross-env@5.1.4@cross-env/node_modules/is-windows'
Error: EPROTO: protocol error, symlink '../../_is-windows@1.0.2@is-windows' -> '/var/www/laravel/node_modules/_cross-env@5.1.4@cross-env/node_modules/is-windows'at Error (native)

在win中和虚拟机中install的时候,需要

cnpm install --no-bin-links

但其实还是报错。
发现好像是cnpm配置问题,npm install 不会报错
还没完全弄好。
今天就这吧。再试试看


更换cnpm的生效方式

# 在~/.barshrc中添加
alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"

#在运行  source ~/.barshrc 使命令生效

cnpm不再报上面的错误【记得加 –no-bin-links】,而是其他错

Maximum call stack size exceeded

找到有地方说是版本的问题,更换了几次后依然不行。直到有人说多装几次就行了,然后就多运行了几次命令,也真就装上了

发表评论

电子邮件地址不会被公开。 必填项已用*标注