Windows + Linux(虚拟机)打造PHP开发环境
创建虚拟机
在Windows上创建虚拟机有很多种方式,可以使用 VirtualBox、VMware等第三方软件,也可用Windows自带的Hyper-V,可以选择一种自己习惯的工具来创建和管理虚拟机,下面就以Hyper-V为例创建一个虚拟机
注意:Hyper-V功能默认是关闭的,需要自己手动开启,关于如何启用Hyper-V请另行查阅文档说明
准备系统镜像文件
在开始创建虚拟机之前,我们还需要准备一个用于安装操作系统的镜像文件,我这里选择的是CentOS 7 作为系统开发环境
创建NAT虚拟交换机
由于默认的虚拟交换机是随机分配的IP,每次重启电脑后网关都会变化,无法为虚拟机设置静态IP,而我们以后基本上都要通过IP远程SSH去管理Linux虚拟机,所以还需要有一个能配置静态IP的虚拟交换机
以管理员身份运行PowerShell,在PowerShell中运行以下命令,创建一个新的NAT虚拟交换机
# 创建虚拟交换机,等同于在Hyper-V管理器界面中新建虚拟网络交换机
New-VMSwitch -SwitchName "NAT-VM" -SwitchType Internal
# 查看 NAT-VM 的 ifindex
Get-NetAdapter
# 创建ip,InterfaceIndex参数自行调整为上一步获取到的ifindex。这一步等同于在 控制面版-网卡属性 中设置ip
New-NetIPAddress -IPAddress 192.168.100.1 -PrefixLength 24 -InterfaceIndex 6
# 创建nat网络,这一步是教程中的关键命令,24为子网掩码位数,即:255.255.255.0
New-NetNat -Name NAT-VM -InternalIPInterfaceAddressPrefix 192.168.100.0/24
新建虚拟机
打开 Hyper-V管理器 -> 新建 -> 虚拟机
安装系统
在开始安装之前,如果在上一步新建虚拟机的时候选择了二代虚拟机,则需要在虚拟机设置中把安全启动关闭掉,否则无法正常进入到安装界面
为了加快安装速度,可以多分配几个处理器来加快安装速度,等安装好之后在调回来
开始安装
等待安装完成后,点击重启就能进入到安装好的系统了
搭建PHP开发环境
Nginx + MySQL + PHP 是目前比较流行的php环境组合,下面就以这样一个组合来搭建一个PHP开发环境,你也可以使用一键安装脚本来完成此步骤,推荐OneinStack - 一键PHP/JAVA安装工具
通过之前配置好的静态IP远程SSH到虚拟机
ssh qsz@192.168.100.11
安装Nginx
安装编译工具
yum -y install wget gcc-c++
如果你使用的是普通用户登录的话,可能会遇到如下问题
解决办法,切换到root用户,将当前用户加入到sudoers这个文件中
su # 切换到root账号
yum -y install vim # 先使用root账号安装vim文本编辑器
vim /etc/sudoers # 编辑 /etc/sudoers 文件,将需要授权的账号加入到该文件中,完成授权操作,如下图
之后切换会普通用户,继续操作
su qsz # 切换到指定用户
sudo yum -y install wget gcc-c++
wget https://nginx.org/download/nginx-1.21.0.tar.gz # 下载Nginx源文件压缩包
sudo tar -zxvf nginx-1.21.0.tar.gz -C /usr/local/src/ # 解压文件到指定位置
安装必要扩展
sudo yum -y install pcre-devel openssl-devel
编译安装
cd /usr/local/src/nginx-1.21.0 # 进入到解压后的目录
sudo ./configure \ # 配置编译选项
--prefix=/usr/local/nginx-1.21.0 \ # 配置安装目录
--user=qsz \ # 配置运行用户
--group=qsz \ # 配置运行用户组
--with-http_ssl_module \ # 开启https
sudo make && sudo make install # 编译并安装
加入到系统服务
创建系统服务文件 /usr/lib/systemd/system/nginx.service
,并写入如下内容
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx-1.21.0/logs/nginx.pid
ExecStartPre=/usr/local/nginx-1.21.0/sbin/nginx -t
ExecStart=/usr/local/nginx-1.21.0/sbin/nginx
ExecReload=/usr/local/nginx-1.21.0/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
开机启动
sudo systemctl enable nginx
安装PHP
下载编译文件
cd ~ # 回到主目录