用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,并且出现以下情况,那就没问题了!!!
如果出现错误的话,可以查看nginx的错误日志(/var/log/nginx/error.log)等。