首页 web服务器 正文
527

虚拟机vbox搭建web开发环境(php+httpd+mariadb)

一、VirtualBox虚拟机中无法访问网络
首先网络模式选择为NAT模式(或者桥接)
(桥接模式下:优点:可以通过局域网IP直接ssh连上虚拟机。缺点:虚拟机中的yum源无法访问。
  NAT模式:优点:虚拟机的yum源可访问。缺点:不能直接通过ssh连接,需要在虚拟机上设置端口转发:127.0.0.1:22 => 10.0.2.15:22,
  包括访问虚拟机的web站点也必须将127.0.0.1:80转发到10.0.2.15:80
  )
进入虚拟机,进入目录/etc/sysconfig/network-scripts,
找到此目录下的类似于ifcfg-ensXXXXX的文件,将其打开并找到最后一行的
ONBOOT=no配置项,将其改为ONBOOT=yes,保存并退出。
运行命令:service network restart,也可以重启一下虚拟机。
此时ping -c 3 www.baidu.com 就正常了。


二、宿主电脑文件夹共享给虚拟机
首先要在虚拟机中安装增强功能:
1、在虚拟机设置中,将虚拟光驱载入增强功能包的iso镜像,其路径为C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso
2、进入虚拟机,将虚拟光驱挂载到Linux系统中:mkdir /mnt/cdrom; mount /dev/cdrom /mnt/cdrom(alpine系统用mount -t iso9660 /dev/cdrom /mnt/cdrom).(若出现/dev/sr0 is write-protected错误可以忽略,进入到/mnt/cdrom目录,ll看一下,如果有文件说明挂载成功。)
3、进入linux中刚刚挂载的cdrom, cd /mnt/cdrom,运行脚本>./VBoxLinuxAdditions.run(如果提示没有安装gzip(2)则yum install gzip(2), 如果出现提示未安装gcc, make, perl库请参照步骤7进行相应程序的安装。如果提示没有安装kernel,headers则参照步骤7进行相应的安装。)
4、在虚拟机设置中,设置好共享文件夹,并命名为mywork
5、回到虚拟机中,创建目录 mkdir /mnt/workspace; chmod 777 /mnt/workspace;
6、挂载共享目录:mount -t vboxsf mywork /mnt/workspace, (如果要以非root用户挂载,则用
mount -o uid=997,gid=995,umask=006(根据实际情况设置umask) -t vboxsf mysql_data /mnt/db_data)如果出现报错:/sbin/mount.vboxsf:mounting failed with the error:No such device,则执行下一步。

Alpine3.15 系统挂载共享目录:
似乎并不需要使用VBoxGuestAdditions.iso中的工具。
只需要安装virtualbox-guest-additions包,此包在官方的community repository中,
可以在此查看包的信息
https://pkgs.alpinelinux.org/packages?name=virtualbox-guest-*&branch=v3.15&arch=x86_64
系统默认开启community repository, 需要手动开启它,方法:
vi /etc/apk/repositories
将以v3.15/community结尾的那一行注释去掉
然后apk update

安装工具: apk add virtualbox-guest-additions

挂载共享目录:
    mkdir -p /mnt/www
    modprobe -a vboxsf
    mount -t vboxsf sharedFolderNameOfVBox /mnt/www
sharedFolderNameOfVBox是Virtualbox虚拟机设置里共享目录设置的名称

启动自动挂载:
vi /etc/fstab
添加
sharedFolderNameOfVBox /mnt/www vboxsf defaults 0 0


7、解决报错:
yum clean all
yum update
yum install kernel
yum install kernel-devel
yum install kernel-headers
yum install gcc
yum install make
reboot

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

再执行步骤6就ok了。


挂载的共享目录可能在下次系统启动时得重新手动挂载,所以可以将其设置为开机启动实现自动挂载,打开/etc/rc.local将挂载指令追加到文件末尾(然而实践遇到问题是,
加了之后并没有挂载成功,于是找到问题所在,是因为rc.local链接的原始文件/etc/rc.d/rc.local没有相应的可执行权限,加上权限之后就好了)。
如果对共享目录的路径无所谓的话,可以在虚拟机的设置中勾选“自动挂载”,此时共享目录会被自动挂载到/media/目录下。


共享目录无法创建软链接的解决办法:退出VirtualBox, 打开命令行,进入到VBX安装路径: cd C:\Program Files\Oracle\VirtualBox  
再运行 .\VBoxManage.exe setextradata CentOS7 VBoxInternal2/SharedFoldersEnableSymlinksCreate/myshare 1
CentOS7为虚拟机名称, myshare为共享目录的名称。
记得再以“管理员身份”运行VBX。


三、httpd正常启动,vhost配置也Ok, 但是无法访问,提示403. 查看httpd日志,注意到有类似提示“...SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0',
 应该是selinux的问题,可以执行命令 :/usr/sbin/setenforce 0 将其关闭(此命令重启系统后需要重新执行,可以考虑加在开机启动脚本中)。
追加mod_ssl模块:yum install mod_ssl


四、宿主电脑无法访问虚拟机中的http服务。原因是centos7防火墙未开通80端口:
firewall-cmd --list-ports  #查看开放的端口列表,发现没有80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent #添加80端口, 可以根据场景开放443, 3306等端口
firewall-cmd --reload #重新启动防火墙,即可。
(CentOS7以下版本需要用iptables命令开通端口)


五、安装php56(此方法安装的php没有xmlrpc扩展,并且单独安装xmlrpc竟然没法使用。可以考虑源码编译安装php5.6)
>yum install epel-release
>rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm  #更新源
>yum list --enablerepo=remi --enablerepo=remi-php56 | grep php56  #查看可用包
>yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-pecl-apcu php-devel php-mbstring php-mcrypt php-
mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php-pear php-fpm php-cli php-xml php-bcmath php-process php-gd php-common php-soap ph
p-pecl-sphinx php-pecl-redis php-pecl-zip php-pecl-memcache php-pecl-memcached php-pecl-lua php-pecl-igbinary php-intl php-geos   
安装好之后,重新httpd和php-fpm
>systemctl restart httpd (如果httpd没有开机启动的话,使用命令systemctl enable httpd.service)
>systemctl restart php-fpm


六、安装MariaDB10.3
添加MariaDB的repo源:进入/etc/yum.repo.d下,添加CentOS-MariaDB.repo文件,其中内容如下:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
保存退出。
清除Yum的缓存并重新建立cache
>yum clean all
>yum makecache
打印MariaDB源中的软件包:
>yum list --disablerepo=\* --enablerepo=mariadb
安装MariaDB:
>yum install MariaDB-client MariaDB-server MariaDB-devel -y
启动数据库并设置为开机启动
>systemctl start mariadb
>systemctl enable mariadb
初始化数据库,并删除测试数据库及更改权限和设置密码:
>mysql_secure_installation

附:
宿主机连接mysql报错:
1、Host 'gateway' is not allowed to connect to this MySQL server
解决:登录虚拟机,使用root账户登录mysql: mysql -uroot -pxxxx;
mysql>use mysql;
mysql>update user set host='%' where user='root';
mysql>flush privileges;

2、Access denied for user 'root'@'%'
解决:登录虚拟机,使用root账户登录mysql: mysql -uroot -pxxxx
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' with grant option;
mysql>flush privileges;
退出后最好是重启一下mysqld服务。

正在加载评论...