Nginx+PHP+PHPFPM环境搭建(1)-基础

For What?

一直想把学习Server的过程记录下来。

前面有零零散散的文章讲PHP处理Http基础请求,NodeJS聊天程序,使用过Server软件集成环境,内置Apache,后来又想学Java后端开发,准备使用Nginx上面跑Tomcat来运行Spring框架的Server逻辑,或者用Spring-boot自带Tomcat,但是真正搭建环境的时候又发现很麻烦,好像对新手来说不友好,且工作也很忙就耽搁了。总之一直很浮躁的没有将学习Server的事情系统的进行下去,后来根据和后端工程师朋友聊天,纠结了很久以后,决定用简单的Nginx+php+phpfpm来搭建后端服务,这个最常见的技术选型确定了,第一步,开始搭建环境。

Tomcat环境

这个没什么好说的,网上教程一大把,默认会占用8080端口,既然要用Nginx来做WebServer,那就先不管Tomcat了,安装了就好

Homebrew常用命令

列下来一些常用命令,因为nginx什么的软件都是brew装的

Nginx安装

Nginx安装比较简单,mac下直接用brew安装

如果没安装brew使用下面的命令安装

安装完brew以后下面的两个命令来安装nginx

安装完后可以这个命令看是否安装成功

启动nginx

这里有个坑,启动完了不出意外会告诉你8080端口被占用

我就想是不是之前启动的Tomcat没关或者其他什么程序,占用了端口,这时候可以用这个命令看端口被占用的情况

然后发现只有nginx自己在监听8080端口

后来发现出现这种情况无须理会,因为已经nginx并没有启动中这种状态,打开网页http://localhost:8080已经能看到nginx的欢迎页面了,显示的是/usr/local/Cellar/nginx/1.10.0/html/index.html文件的内容。

这样就安装完了,nginx的配置目录是/usr/local/etc/nginx/nginx.conf

下面是nginx的相关命令

也可以用brew来启动nginx

启动后正常的话能看到输出

用brew关闭nginx

 

MySQL安装

安装很简单但是使用起来还有坑,以后再说,我们不能让任何东西block住

PHP-FPM安装和常用命令

Mac系统自带php和php-fpm,不需要单独安装,但是需要对error_log进行配置,要不然运行会出错,下面用nano编辑,注意control+w搜索control+o存储

修改php-fpm.conf文件中的error_log项,默认该项被注释掉,这里需要去注释并且修改为error_log = /usr/local/var/log/php-fpm.log。如果不修改该值,运行php-fpm的时候会提示log文件输出路径不存在的错误。搜索到error_log,这一行是被注释的,下面加一行,看起来这样

然后用下面这行启动fpm就应该没报错了

想看启动的php-fpm进程用这个命令,可以看到启动的php-fpm进程号

杀掉php-fpm可以通过杀掉指定进程号

也可以这样

brew安装PHP 7

上面是mac自带的php通过php -v能看到版本是5.x,如果想安装最新的7可以用brew

先设置

安装

安装的目录是/usr/local/etc/php,可以尝试启动一下

nginx显示html

上面安装了brew,nginx,php-fpm,下面尝试把这些东西联系起来

浏览器输入http://localhost:8080/出现的欢迎界面是一个静态的html

这个html文件名是index.html,路径是/usr/local/Cellar/nginx/1.10.1(版本号可能不同)/html/index.html

那么这个文件和路径一定是在哪里配置的,下面看下配置文件验证一下

可以看到里面的”location /”就是默认路径了,如果想添加url的子目录可以添加”location / subpage”,不过这是后话,现在的index.html就是这么读出来的,如果想换另一个文件夹的另外一个文件可以这样

上面说的都是静态html文件,和php没任何关系,后面会说怎么读取php文件

nginx常用操作命令

在用nginx读取php文件之前,先熟悉一些基本常用命令,比如看看当前nginx是不是在启动,可以看进程号,执行这个命令

可以看到运行的进程号,下面的master的就是了,说明nginx正在运行,浏览器访问是ok的

所以就可以用杀掉进程的方式停掉nginx

当然也可以用下面的命令

杀掉后浏览器再访问localhost就应该不行了,启动的话用下面的命令

nginx看log

每次访问nginx服务器都可以看到接入后的log,这个可以验证什么时间用什么浏览器访问的什么url来接入的nginx,mac下面查看log的位置:

nginx和php-fpm一起工作的小demo

下面就要进行php和nginx的配合工作了,前文修改过nginx的配置文件,让访问localhost可以看到一个不同的html,修改的路径如下

下面继续修改配置,来访问php文件

具体修改如下,其他保持原样:

然后创建index.php文件在这个路径的html文件夹下

index.php的内容如下,打印php信息

修改完配置可以用下面命令检查语法有没错误

如果输出下面的信息就没问题了

然后很重要的两步,重启nginx和php-fpm

然后注意访问http://localhost:8080就可以出现php的信息了

这里有两个问题目前无解,以后处理

  1. 为什么不是localhost:9000读index.php
  2. 为什么php版本还是5.x,是mac自带的,不是brew安装的php7

使用PHP7

这一节解释第二个问题,使用下面的命令看安装的php版本

发现已经是7了,但是在用这个命令

发现打印出来的结果依然还是5,所以上面出来的网页里php版本是5

那么怎么使用php7呢,很简单,先关掉php的进程,再启动php7

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注