搭建PHP开发环境时, 如果是单一操作系统, 无论 纯windows 开发还是 纯linux 都会有诸多不便
纯windows: 开发环境与线上linux环境的不一致往往造成一些部署问题
纯linux: 许多常用windows软件无法使用
所以一种常见的php开发环境搭建如下:
搭建vmware虚拟机跑服务器版linux,并架设 LAMP/LNMP 服务
window下secureCRT远程ssh管理该虚机
通过samba服务将linux虚机下的代码目录共享给windows实机, 开发人员windows实机下在这个共享目录做开发
windows实机浏览器访问虚拟机中的web服务做调试
新建虚拟机
请准备至少20g硬盘、3g内存、使用仅主机模式网络
配置虚拟机内网环境 - 使用hostonly
vmware中有 nat、bridge、hostonly三种虚拟机网络连接方式,其中:
nat模式不支持vpn穿透,这会导致在国内部分公司做开发很受局限,许多公司在访问远程开发环境和开发数据库时需要启用vpn链路,这时nat模式的虚拟机网络便会掉线
bridge模式需要占用局域网ip,这在国内部分公司做开发也会受局限,许多公司的ip是动态绑定到网卡的,虚拟机无法申请到ip使用
hostonly模式是我推荐的连接方式,它并不像许多网上教程说的那样不支持外网访问,其实配置得当以后是可以访问外网的, 而且它支持vpn穿透、不占用公司局域网ip
hostonly模式默认使用VMnet1虚拟网卡(默认占用1号ip),后面我们约定给虚拟机配置2号ip
配置windows实机的入网网卡,共享其网络连接给VMnet1虚拟网卡
配置虚拟网路编辑器,配置仅主机模式为启用“将主机虚拟适配器连接到此网络”,关闭“DHCP”
安装CentOS7操作系统
虚拟机光驱加载CentOS7 ISO镜像,启动虚拟机安装:
选定时区
增加简体中文支持
软件选择最简安装Minimal Install (出于性能的考虑,我们选择最简方式安装系统,刨去那些无用又占资源的服务,因此造成的各种基础包的缺失我会在安装过程中逐步补全)
Minimal:基本的系统,不包含任何可选的软件包
Desktop:基本的桌面系统,包括常用的桌面软件,如文档查看工具
Minimal Desktop:基本的桌面系统,包含的软件更少
Basic Server:安装了基本系统平台的支持,不包含桌面
Database Server:基本系统平台,加上MySQL和PostgreSQL数据库的客户端,无桌面
Web Server:基本系统平台,加上PHP,Web server,还有MySQL和PostgreSQL数据库的客户端,无桌面
Virtual Host:基本系统加虚拟化平台
Software Development Workstation:包含的软件包较多,基本系统,虚拟化平台桌面环境,开发工具等
配置网络(这里设定好后就不需要下面去修改网卡配置文件了)
在IPv4 Settings中做这些配置:Method改为Manual
Addresses里分配一个宿主机所在网段ip,掩码255.255.255.0,网关为宿主机ip
DNS server为宿主机ip 示例配置如下图
启动安装后设定root密码
等待系统安装完毕重启
运维用户管理
基于安全性和文件权限相关考量,一般都是以普通用户身份来管理系统,而不推荐以root账号来管理系统
# 密码登录root账号,然后新建一个普通管理员账号 useradd yunwei # 创建yunwei账户 passwd yunwei # 设定yunwei账户的密码 # 如果密码设定过于简单,系统会提示the password fails the dictionary check并要求重新设定 # 绕过方法: # vi /etc/pam.d/system-auth # 注释掉 password requisite 那行 # 编辑 password sufficient 那行, 删除末尾的 use_authtok usermod -aG wheel yunwei # 把yunwei账户加入wheel管理员组 id yunwei # 查看yunwei账号的属组情况 su - yunwei # 切换到yunwei账号及相应上下文账户环境
虚拟机网卡设定(若上述过程未配置网络)
编辑虚拟机网卡配置,具体网段(这里是192.168.137.0)和网卡文件名(这里是ifcfg-ens32)需要看实际情况
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens32 # 做如下修改 ONBOOT=yes BOOTPROTO=static # 追加下述三行 IPADDR=192.168.137.4 GATEWAY=192.168.137.1 DNS1=192.168.137.1
重启网络服务 service network restart
这时候应该能ping通百度了 ping baidu.com
安装ssh服务
sudo yum install openssh-server
SecureCRT远程ssh管理虚拟机
使用我们刚创建的管理员账号yunwei远程ssh连接到虚拟机,免去我们在实机虚机间切换的麻烦。 至此,我们就可以通过终端工具比较方便的和虚拟机交互了。 (视具体情况,连接可能需要十几秒时间才有响应)
简化sudo操作
为了日后管理方便,我们解除wheel组账户在sudo操作时密码的输入
sudo visudo # 注释掉下面这行 %wheel ALL=(ALL) ALL # 启用下面这行 %wheel ALL=(ALL) NOPASSWD:ALL
关闭安全服务
为后面安装smb等其他服务方便,避免各种服务被屏蔽
sudo service firewalld stop # 关闭防火墙(centos6.5下是iptables服务) sudo chkconfig firewalld off # 关闭防火墙的开机启动 sudo setenforce 0 # 关闭selinux服务 sudo sed -i 's|SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config # 关闭selinux的开机启动
安装一些基础工具
sudo yum install gcc gcc-c++ cmake vim wget git mlocate tree net-tools psmisc kernel-devel openssl-devel bash-completion
定制下shell提示符
# Sexy Solarized Bash Prompt, inspired by "Extravagant Zsh Prompt" # Customized for the Solarized color scheme by Sean O'Neil if tput setaf 1 &> /dev/null; then if [[ $(tput colors) -ge 256 ]] 2>/dev/null; then BASE03=$(tput setaf 234) BASE02=$(tput setaf 235) BASE01=$(tput setaf 240) BASE00=$(tput setaf 241) BASE0=$(tput setaf 244) BASE1=$(tput setaf 245) BASE2=$(tput setaf 254) BASE3=$(tput setaf 230) YELLOW=$(tput setaf 136) ORANGE=$(tput setaf 166) RED=$(tput setaf 160) MAGENTA=$(tput setaf 125) VIOLET=$(tput setaf 61) BLUE=$(tput setaf 33) CYAN=$(tput setaf 37) GREEN=$(tput setaf 64) else BASE03=$(tput setaf 8) BASE02=$(tput setaf 0) BASE01=$(tput setaf 10) BASE00=$(tput setaf 11) BASE0=$(tput setaf 12) BASE1=$(tput setaf 14) BASE2=$(tput setaf 7) BASE3=$(tput setaf 15) YELLOW=$(tput setaf 3) ORANGE=$(tput setaf 9) RED=$(tput setaf 1) MAGENTA=$(tput setaf 5) VIOLET=$(tput setaf 13) BLUE=$(tput setaf 4) CYAN=$(tput setaf 6) GREEN=$(tput setaf 2) fi BOLD=$(tput bold) RESET=$(tput sgr0) else # Linux console colors. I don't have the energy # to figure out the Solarized values MAGENTA="\033[1;31m" ORANGE="\033[1;33m" GREEN="\033[1;32m" PURPLE="\033[1;35m" WHITE="\033[1;37m" BOLD="" RESET="\033[m" fi parse_git_dirty () { [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*" } parse_git_branch () { branch=$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1$(parse_git_dirty)/") echo $branch } PS1="\[${BOLD}${CYAN}\]\u \[$BASE0\]in \[$BLUE\]\w\[$BASE0\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" on \")\[$YELLOW\]\$(parse_git_branch)\[$BASE0\] \$ \[$RESET\]"
将以上代码保存为 /etc/prompt.sh
文件
sudo chmod 777 /etc/prompt.sh sudo sed -i 's|\r||g' /etc/prompt.sh # 删除window换行符 sudo sed -i '$a source /etc/prompt.sh' /etc/profile # 开机加载 source /etc/prompt.sh
定制vim更方便
sudo vim /etc/vimrc
命令追加如下配置
%retab! set nu "显示行号 set ic "搜索时忽略大小写 set nowrap "禁止自动换行 set ffs=unix,dos,mac set expandtab "制表符以空格组合展示 set tabstop=4 "读取时制表符长度 set softtabstop=4 "编辑时制表符长度 set ai shiftwidth=4 "设定缩进4。注意:粘贴缩进文本需退出缩进set noai,否则粘贴结果会 自动缩进+剪贴板文本已有缩进
禁用官方源
cd /etc/yum.repos.d sudo mkdir backup sudo mv *.repo backup/
使用新的源
sudo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo # 国内的高速YUM源 - 163源 sudo yum install epel-release # 增加EPEL源 # 重建yum缓存 sudo yum clean all #清除yum源缓存信息 sudo yum makecache #重建yum源缓存信息 sudo yum repolist
安装vmtools虚拟机增强套件
虚拟机光驱加载 vm安装目录\VMware Workstation\linux.iso
文件(这是vmwaretool镜像而非系统镜像)并重新连上光驱。
sudo mkdir /media/cdrom sudo mount /dev/cdrom /media/cdrom # 挂载光驱 cd /media/cdrom mkdir /tmp/vmtools # 创建vmtools安装的临时目录 cp -a VMwareTools-9.6.2-1688356.tar.gz /tmp/vmtools cd /tmp/vmtools tar -zxvf VMwareTools-9.6.2-1688356.tar.gz cd vmware-tools-distrib/ sudo ./vmware-install.pl # 执行安装脚本 # 一路回车直至安装完毕 # 其中下面这步选择 no 键入, 因为我们后面将通过更好的samba服务来实现实机虚机之间的文件系统共享 #The VMware Host-Guest Filesystem allows for shared folders between the host OS and the guest OS in a Fusion or Workstation virtual environment.Do you wish to enable this feature? [yes] # 清理安装文件 rm -rf /tmp/vmtools
LNMP/LAMP环境编译搭建
参见文章 CentOS7-Minimal模式下编译搭建 LAMP / LNMP环境
搭建samba共享服务
samba服务提供了一种主机之间共享文件系统的能力
通过它,我们能将虚拟机下的代码目录共享给windows实机,这样我们便能在window环境下进行代码开发
安装samba服务
sudo yum install samba sudo chkconfig smb on # 设置smb服务开机启动 sudo service smb start # 启动smb服务 sudo mkdir /srv/share # 创建共享目录 sudo chmod -R 777 /srv/share sudo smbpasswd -a yunwei # 把yunwei账号加入smb服务中
配置samba服务sudo vim /etc/samba/smb.conf
在配置文件最后追加如下几行
[share] comment = share directory for develop path = /srv/share valid users = yunwei public = yes writable = yes create mask = 0777 directory mask = 0777
重启samba服务sudo service smb restart
映射网络驱动器
进入windows的资源管理器,选择映射网络驱动器,文件夹路径为: \\虚机ip\share,登录账号为yunwei
查看共享信息
windows下cmd输入命令 "net use"