nginx+php安装

1.环境概述

虚拟机系统:CentOS Linux release 7.3.1611 (Core)

宿主机系统:Mac Sierra version 10.12.3

nginx:1.10.3

php:7.1.2

2.虚拟机

为了使得虚拟机和主机互通且虚拟机能联网,在安装系统之前需要设置网络。在当前虚拟机的设置里找到网络,可以看到Adapter 1默认已经设置为NAT。切到Adapter 2 tab页,设置为Host-only Adapter。

安装完CentOS之后,编辑 /etc/sysconfig/network-scripts/ifcfg-enp0s3 和 /etc/sysconfig/network-scripts/ifcfg-enp0s8 中ONBOOT=yes(默认为no)。

重启网络:

systemctl restart network

3.ssh连接

在虚拟机中敲打命令是一件痛苦的事。因此尽可能在宿主机ssh到虚拟机。

a.查看虚拟机ip

ip addr

找到enp0s8的ip地址,我的为192.168.56.101

b.宿主机连接

ssh root@192.168.56.101

4.更新系统

更新系统到最新版本(无视我的强迫症)

yum update

等待。。。

5.nginx

a.安装准备

安装nginx官方源

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

成功的话,可以在 /etc/yum.repos.d目录下看到nginx.repo。如果未看到,执行一个神级命令,它将清理所有缓存数据、重建缓存并更新:

yum clean all && yum clean metadata && yum clean dbcache && yum makecache && yum update

再安装nginx官方源。再不生效。。。是不可能的。

b.安装

下面先安装nginx的支持组件pcre-devel,再安装nginx

yum install pcre-devel
yum install nginx

c.启动

systemctl start nginx

在宿主机浏览器输入192.168.56.101,可以看到熟悉的"Welcome to nginx"。

至此,nginx安装完成。

d.个性化首页

注意,nginx默认访问页面路径在 /usr/share/nginx/html/index.html。为什么呢,因为nginx的配置文件 /etc/nginx/conf.d/default.conf 如下:

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

如果想修改主目录,则修改root。如果想修改主页面,则修改index。

6.php

a.下载

具体下载地址可以到官网php.net查看

wget http://cn2.php.net/distributions/php-7.1.2.tar.gz

b.编译安装

tar xvf php-7.1.2.tar.gz
cd php-7.1.2
yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y
./configure --prefix=/usr/local/php --with-bz2 --with-curl \
--enable-ftp --enable-sockets --disable-ipv6 --with-gd \
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local \
--with-freetype-dir=/usr/local --enable-gd-native-ttf \
--with-iconv-dir=/usr/local --enable-mbstring --enable-calendar \
--with-gettext --with-libxml-dir=/usr/local --with-zlib \
--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd \
--enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
make
make install

其中gd-devel、libjpeg-devel等为编译php的必要组件,需在configure之前安装。

c.启动

先将必要的配置文件拷贝好,再启动

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
/usr/local/php/sbin/php-fpm

至此,php安装完成

注意,如果启动时报错,找不到配置文件php-fpm.conf,可以使用如下命令指定配置文件路径

/usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.conf

d.测试

在 /usr/share/nginx/html 下新建index.php,内容如下

<?php
echo 'Hello PHP';
?>

在宿主机浏览器访问 192.168.56.101/index.php 失败。为什么呢,因为nginx不知道怎么处理php文件。

7.php+nginx

编辑 /etc/nginx/conf.d/default.conf

location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

重启nginx

systemctl restart nginx

在宿主机浏览器访问 192.168.56.101/index.php,成功。

注意,如果报错 File not found,可以尝试修改配置文件 /usr/local/php/etc/php-fpm.d/www.conf

user = www-data
group = www-data

再重启 php-fpm(先找到原有进程杀掉,再执行)。为什么呢,猜测是因为php-fpm默认启动用户是nobody,没有对index.php的读取权限。

再重启nginx。

上一篇:制作ssh互信的docker镜像


下一篇:Fastjson-fastjson中$ref对象重复引用问题