使用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」。

“文件”→”连接到服务器”→”新建”

服务器设置

項目入力エントリ(上)(設定名自由)ホスト設定192.168.56.101ログインユーザーvagrantパスワードvagrant

使用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后能够显示任何内容,那就表示没有问题。

状态的意义

表示設定項目enable自動起動設定有効disable自動起動設定無効static単体では自動起動できないサービス

添加存储库

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进行开机自动启动服务

参考链接:

Apacheで403 Forbiddenが表示された時のチェックポイント5選

[CentOS7] WordPressの導入

设置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的快照功能来保存/恢复虚拟机的状态。

广告
将在 10 秒后关闭
bannerAds