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。