背景:因为需要在linux(ubuntu)服务器搭建个php环境来运行php项目,无奈,服务器上nginx + nodejs的项目,nginx 占用了80端口,apache用不了 用不了 用不了,重要事情说三遍。。。然后,就想到用nginx+php+mysql 。再然后,就狂风暴雨似的刷网页找相关资料,少的可怜,这个看一点那个看一点,搞了半天,那就一个心力交瘁。。不说了,说多都是泪,直接进入主题...
以下内容分为四大块
1、nginx 搭建
2、php7.0-fpm搭建
3、mysql5.6搭建
4、nginx 和 php7.0-fpm 配置
1、nginx 搭建
第一步:
第二步:解压 tar -zxvf nginx-*.*.*.tar.gz
第三步:设置一下配置信息 ./configure --prefix=/usr/local/nginx ,或者不执行此步,直接默认配置
第四步:make 编译 (make的过程是把各种语言写的源码文件,变成可执行文件和各种库文件)
make install 安装 (make install是把这些编译出来的可执行文件和库文件复制到合适的地方)
注意 :在配置信息的时候,也就是在第三步,出现了一下错误:
错误为:./configure: error: the HTTP rewrite module requires the PCRE library.
安装pcre-devel解决问题
apt-get install pcre-devel
还有可能出现:
错误提示:./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library. You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl= options.
解决办法:
apt-get install openssl openssl-devel
安装后在linux下启动和关闭nginx:
启动操作
/usr/nginx/sbin/nginx (/usr/nginx/sbin/nginx -t 查看配置信息是否正确)
停止操作
停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的
步骤1:查询nginx主进程号
ps -ef | grep nginx
在进程列表里 面找master进程,它的编号就是主进程号了。
步骤2:发送信号
从容停止Nginx:
kill -QUIT 主进程号
快速停止Nginx:
kill -TERM 主进程号
强制停止Nginx:
pkill -9 nginx
另外, 若在nginx.conf配置了pid文件存放路径则该文件存放的就是Nginx主进程号,如果没指定则放在nginx的logs目录下。有了pid文 件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下:
kill -信号类型 '/usr/nginx/logs/nginx.pid'
平滑重启
如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx 发送信号,平滑重启。
平滑重启命令:
kill -HUP 住进称号或进程号文件路径
或者使用
/usr/nginx/sbin/nginx -s reload
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正 确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
2、php7.0-fpm搭建
通过Ubuntu PPA来安装PHP7.0
1)、添加 ppa
$ sudo apt-get install python-software-properties software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
2)、安装PHP7以及所需的一些扩展
$ sudo apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-curl php7.0-cli php7.0-mcrypt php7.0-mbstring php7.0-dom
3)、配置PHP7.0
打开 php.ini 配置文件:
$ vim /etc/php/7.0/fpm/php.ini
找到cgi.fix_pathinfo选项,去掉注释;,然后将值设置为0:
cgi.fix_pathinfo=0
启用php7.0-mcrypt
$ sudo phpenmod mcryptNote:启动后重启 php7.0-fpm ,输入: sudo service php7.0-fpm restart
3、mysql5.6搭建
安装mysql5.6
$ sudo apt-get install mysql-server-5.6 mysql-client-5.6
途中会提示设置MySQL的密码,安装好后:
$ mysql -uroot -p
然后输入刚刚设置的密码,能成功进入即成功安装
4、nginx 和 php7.0-fpm 配置关键的配置问题在这里,看过来...
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
首先 得看自身nginx配置(下文是已 include /etc/nginx/sites-enabled/* 模式)
好了,之前网上看的大多是php5
所以遇到了点坑
server {
listen 80;
server_name 域名或者localhost;
location ~ \.php$ {
root html;
#fastcgi_pass 127.0.0.1:9000; #网上大部分用这个配置,不过没起作用
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; #重要的这,安装不同版本,要确认.sock路径
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME 你存放php的目录$fastcgi_script_name;
include fastcgi_params;
}
}
配置好后,可用在 你存放php的目录下创建一个index.php
文件内容:
phpinfo();
?>
然后,在页面打开 域名或服务器ip 看到php页面就大功告成