用Vagrant创建Nginx+PHP+php-fpm环境

我使用Vagrant搭建了Nginx+PHP+php-fpm的环境,以下是步骤说明。

安装CentOS7

下载CentOS7。

$vagrant box add CentOS7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

启动CentOS7的虚拟机。

如果box的创建成功,则按照以下步骤创建Vagrantfile。
这次我们创建一个名为“sample”的目录,并在其中进行展开。

同時候,接下来需要在主机端(自己的电脑)创建的php文件和html文件,将其与客户操作系统(这里指使用vagrant启动的centos)进行同步(挂载),需要进行相应的设置。为此,我们在sample文件夹下创建一个名为“sync”的文件夹,用于存放这些php文件和html文件。

$ mkdir sync

请切换到样本目录,并执行以下命令。

$vagrant init CentOS7

这样CentOS 7操作系统下的Vagrant就会启动,并且会生成Vagrantfile文件。

当前的目录结构如下所示。

sample ┠ sync/
       ┠ Vagrantfile

将已创建的Vagrantfile按照以下方式进行编辑。


Vagrant.configure("2") do |config|
  config.vm.box = "CentOS7"
  #ローカルでアクセスするときのIPアドレス。初期設定は192.168.33.10のはず。
  config.vm.network "private_network", ip: "192.168.33.10"
  #同期先を指定。「カレントディレクトリ(.)を/vagrant以下に同期」と、「syncディレクトリを/var/www/」以下に同期する。
  config.vm.synced_folder ".", "/vagrant"
  config.vm.synced_folder "sync", "/var/www/"
end

然后启动Vagrant,并用SSH进入其中。

$ vagrant up
$ vagrant ssh

在Vagrant中的操作

进入Vagrant后,使用ifconfig命令检查是否能够访问之前指定的192.168.33.10地址。

$ ifconfig
~~~略~~~~~
inet 192.168.33.10
~~~略~~~~~

如果存在像这样的规定,那就可以了。 如果不存在或者IP地址不同,则需要退出vagrant,重新加载并再次连接。

(只针对无的人)

[vagrant@localhost]$ exit
$vagrant reload
$vagrant ssh

请再次确认,并使用ifconfig命令检查是否可以访问到192.168.33.10。

EPEL仓库和remi仓库。

正在更新并添加EPEL仓库和Remi仓库。

$sudo yum update
$sudo yum -y install epel-release
$sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

按中国人的母语进行释义,仅需一种选项:

Nginx 是一款开源的高性能 Web 服务器和反向代理服务器。

创建/etc/yum.repos.d/nginx.repo。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
enabled=0
gpgcheck=0

我們將開始安裝Nginx。

$sudo yum -y --enablerepo=nginx install nginx
$nginx -v 
#バージョンが表示されればOK

启动nginx。

$sudo systemctl start nginx
$sudo systemctl enable nginx

我们需要确认一下nginx是否已经启动。

$sudo systemctl status nginx
#ここで、「Active: active (running)」になっていればOK。こんな感じ
   #Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
  # Active: active (running) since 木 2019-04-18 15:27:49 CEST; 1h 46min ago

防火墙

由于受到防火墙的阻挡而无法访问,我们将打开80端口(HTTP端口)。

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload

由于nginx的启动和防火墙设置完成了,现在尝试访问浏览器。
如果显示nginx的欢迎页面,那就没问题了。

编辑nginx的配置文件

从这里开始,我们将修改nginx的配置。我们将编辑/etc/nginx/conf.d/default.conf配置文件,并将其修改如下。

server {
    listen       80;
    server_name  localhost;
    #ここは「sync」フォルダ以下にあるファイルを参照してほしいので、「sync」の同期先であるvar/wwwを指定。
    root   /var/www;
    charset UTF-8;
    access_log  /var/log/nginx/www.example.com.access.log  main;
    error_log  /var/log/nginx/www.example.com.error.log;

    location / {
        index index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

更改了nginx的配置文件后,需要重新启动,可以通过以下操作来实现。

$ systemctl restart nginx

安装php和php-fpm。

$ yum -y install --enablerepo=epel,remi,remi-php72  php php-mbstring php-pdo php-mysqlnd php-fpm php-gd

确认是否安装有最新的PHP和PHP-FPM。

$ php -v
$ php-fpm -v

接下来,您需要编辑位于/etc/php-fpm.d/www.conf的php-fpm配置文件。

把这五段描述用分号(;)或删除的方式注释掉(因为它们分别在不同的位置,可能不容易找到)。

;listen = 127.0.0.1:9000
;user = apache
;group = apache
;listen.owner = nobody
;listen.group = nobody 

增加以下内容。

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.group = nginx
listen.owner = nginx

为了使设置生效,重新启动php-fpm。

$ sudo systemctl restart php-fpm

和ngix一样,检查是否已经启动。如果显示为「Active: active (running)」,那就是正常的。

$systemctl status php-fpm

我希望在/var/www/中创建index.php,并确认PHP是否启动,但不需要像“移动到/var/www/下,使用vi创建index.php”,这样的操作可以不做。

在最初的Vagrantfile配置中, 通过”同步”选项创建的内容将与”var/www”进行同步,因此可以放心地使用自己电脑上的编辑器进行创建。

<?php phpinfo(); ?>

在这里,如果访问192.168.33.10,并且出现以下情况,那就没问题了!!!

スクリーンショット 2019-04-19 0.57.07.png

如果出现错误的话,可以查看nginx的错误日志(/var/log/nginx/error.log)等。

广告
将在 10 秒后关闭
bannerAds