使用Windows 10和Vagrant,从零开始构建Centos 7的虚拟环境
一开始
我打算写一篇关于虚拟环境搭建的文章。
只知道一些 PHP 的初学者在努力尝试构建一个虚拟环境,以满足公司的最低要求,但对 provisioning、Chef 这些东西都一无所知,就像在问这是什么能吃吗?这是他们面对的结果… (;・`д・´)
顺便提一下,Vagrantfile是用Ruby语言编写的,但即使不了解Ruby语言,一些基本的设置也是可以进行的。(有时间的话我会学习一下)
如果能进一步提高效率,可能会上传修订后的信息。
由于是初学者试错而创建的环境,所以可能存在更加高效的方法,但由于正在学习中,请谅解并多多包涵。
需要支持HTTP2,SSL是必需的,虽然我真的想搭建一个测试环境,但是…没办法(´Д`)
当Chrome升级至58版本后,我放弃了发出自签证书(由于常规证书价格昂贵,因此我自行制作了证书并对虚拟环境进行了SSL加密),因为这样做会受到责备而不得不委曲求全。
我认为可能有一些人从未设置过开发环境,所以您可以跳过这部分,没关系的!(‘ω’)
开发需求
-
- VirtualBox 5.2
-
- Vagrant
-
- CentOS 7.6
-
- PHP 7.6
-
- MariaDB 10.3
-
- Apacheプロキシ使用、php-fpm
-
- モジュール、evemt-mpm
- PHPMyAdmin
通过终端软件使用
– Rlogin
通过使用Vagrant的共享文件夹设置,轻松搭建开发环境。
在了解共享文件夹功能之前,我之前的开发构建方式相当不便,因此了解了这一点后非常受益(‘ω’)。
事前准备
提前创建一个Vagrantfile并创建一个公开目录(随意)。
这次我们将其创建为C:\vagrant\site。
在C:\vagrant\site目录下创建一个index.php文件。
将index.php的内容保存为 某些软件可能需要重新启动。
打开命令提示符(或者PowerShell)。
Vagrant -v
如果有可用的版本,安装Vagrant就没有问题。
启动虚拟机
使用Windows的命令提示符(或者PowerShell),输入相应的命令。
cd C:\vagrant
vagrant box add bento/centos-7.6 --provider virtualbox
只要在list命令中能够看到已注册的bento/centos-7.6名称,就没有问题。
vagrant box list
我将创建一个Vagrantfile。
vagrant init centos7
notepad Vagrantfile
# config.vm.network "private_network", ip: "192.168.33.10"
//上記テキストの一文を下記に変更
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "C:\\vagrant", "/home/vagrant"
编辑完文本后,保存并关闭。
回到命令提示符并启动Vagrant。
vagrant up
在启动完成后,可以通过执行vagrant status命令来确认连接。
Current machine states:
default running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
登录到CentOS7上安装和配置各种软件。
启动「Rlogin」。
“文件”→”连接到服务器”→”新建”
服务器设置
使用vagrant用户登录
登录后,在终端输入命令。
确认已安装操作系统的版本
cat /etc/redhat-release
安装Apache
Apache(阿帕奇)是全球广泛使用的Web服务器软件(HTTP服务器)。
使用以下命令安装:
sudo yum -y install httpd
启动服务:
sudo systemctl start httpd
设置服务自动启动:
sudo systemctl enable httpd
为了确保浏览器连接可用,需要先停止防火墙:
sudo systemctl stop firewalld
如果在浏览器中输入192.168.33.10后能够显示任何内容,那就表示没有问题。
状态的意义
添加存储库
sudo yum -y安装http://rpms.famillecollet.com/enterprise/remi-release-7.rpm来添加remi存储库(用于分发php包)。
添加epel仓库
使用sudo yum install -y epel-release命令安装
添加IUS仓库
sudo yum -y安装https://centos7.iuscommunity.org/ius-release.rpm
将Apache配置为Event MPM。
MPM是“多处理模块”的缩写,它将Apache对来自Web浏览器的请求进行并发处理的部分进行了模块化。
sudo sed -i '/mod_mpm_prefork/ s/^/#/' /etc/httpd/conf.modules.d/00-mpm.conf
sudo sed -i '/mod_mpm_event/ s/#//' /etc/httpd/conf.modules.d/00-mpm.conf
apachectl -V | grep 'Server MPM'
请参考
CentOS的yum仓库:EPEL、Remi、Software Collections的区别和总结
构建CentOS7中的Apache 2.4.6(event_mpm)+PHP-FPM环境
通过添加IUS仓库来在CentOS7中引入最新的软件包。
安装PHP7.6
sudo yum install -y --enablerepo=remi-php76 php php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pecl-apcu php-soap php-xml php-xmlrpc
–enablerepo=remi–php73选项指定了在指定的remi存储库中安装的选项。
sudo yum install -y php-zipc
确认PHP版本是否为7.6。
使用命令”php -v”获取PHP版本信息。
安装Mariadb10.3
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=mariadb-10.3
安装
使用sudo yum install MariaDB-server MariaDB-client进行安装
启动服务
使用sudo systemctl start mariadb进行服务启动
开机自动启动服务
使用sudo systemctl enable mariadb进行开机自动启动服务
参考链接:
设置root密码。我们将创建一个用于WordPress的数据库,并使用root进行登录。由于在安装后还未设置密码,因此需要进行设置。
mysql -u root
设置root密码
MariaDB [(none)]> update mysql.user set password=password('任意のrootパスワード') where user = 'root';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
我将使用设定好的密码重新登录。
mysql -u root -p
# Enter password:
创建数据库
这次,我们将创建一个常用于WordPress的数据库,并命名为“wordpress”。
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> show databases;
将httpd.conf文件放在共享文件夹中。
将下面的〜更改为Require all granted。
<Directory />
AllowOverride none
Require all granted
</Directory>
在Vagrant中的共享文件夹中配置Vagrantfile(名称可自定义)。
DocumentRoot "/home/vagrant/site"
我会追加以下内容
<Directory "/home/vagrant/site">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
按照上述方式进行改写。
sudo cp /home/vagrant/httpd.conf /etc/httpd/conf/httpd.conf
sudo systemctl restart httpd
只要在浏览器中输入”http://192.168.33.10/”,并且显示出”Hello World”,就表示没有问题。
参考资料:使用yum在CentOS7上安装最新版本的MariaDB。
最后
如果自己创建的环境能够正常运作,真是让人感动啊。
我想如果你输入相同的命令,可能由于没有权限在apache中查看,会出现403错误,即使没有错误,在输入命令时也可能因为输错而导致任务未能成功完成,命令无法正确处理。甚至可能是因为服务器未启动,或者目录名称错误,有时候只有通过查看错误信息才能发现问题。
就像在我的开发环境中一样,我也是一个沉迷于搜索而屡次挫败的人。
我逐渐开始学一门新语言,并在寻找更高效的方法来提高我的学习效果。
Vagrant还支持通过使用 “Vagrant destroy” 命令重置虚拟环境,重新开始,并且还可以通过中间保存快照的方式进行操作。因此,即使是初学者犯错了,也可以重新开始,而且当遇到大量错误导致不知所措时,也可以中间保存并重新开始,这也是一个可行的方法。
参考:使用Vagrant的快照功能来保存/恢复虚拟机的状态。