php7的安装前面并没有遇到什么问题
但是在后期sudo echo "PATH=$PATH:/usr/local/php/bin">> /etc/profile
(/etc/profile是每个用户登录时都会运行的环境变量设置 修改重启后生效,需要立即生效 source /etc/profile)
却出现了权限错误的问题 然后su root 切换成root账户后再进行相关操作就可以了) (sudo passwd初始root密码)
另外在编辑一些配置文件的时候 发现vi的上下左右变成了a b c d因为图方便没有深究就安了一个新的vim 然后alias vi='vim'
之后又出现了运行php-fpm出现了问题 按照一般教程说是
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vi php-fpm.conf修改就好
但实际运行 报了如下的错误
sudo /usr/local/php/sbin/php-fpm
[02-Jan-2016 01:56:48] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
[02-Jan-2016 01:55:33] ERROR: No pool defined. at least one pool section must be specified in config file
[02-Jan-2016 01:55:33] ERROR: failed to post process the configuration
[02-Jan-2016 01:55:33] ERROR: FPM initialization failed
从最初的warning开始追起 大概知道是在/usr/local/php/etc/php-fpm.d/缺少了一个.conf文件 然后进入此目录
发现有一个 www.conf.default 按照常识应该应该进行如下操作
运行成功
其中www.conf内修改了 user 和group将nobody 改成 www-data
(PHP-FPM是一个PHPFastCGI管理器 一个守护进程)
之后配置nginx worker process照一般配置应该与core数相同(不要浪费cpu切换上下文)
cat /proc/cpuinfo可查看信息
nginx.conf里面并没有太多实质的东西 有设置error_log其他很多都是include其他的配置文件
如引入sites-avaiable/*,
里面有一个default 在这里配置站点信息 监听哪一个端口 根目录是哪之类的
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
....
如果需要不同端口配置不同站 只要在此目录添加配置文件即可
然后到这localhost已经可以访问对应目录了
然后就是fast-cgi的php与nginx关联了
location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
这几行取消注释
我们可以看到fastcgi_pass 这其实是一个将php请求传送的一个配置
也就是实际上 nginx与php-fpm关联的地发
我们可以用nettsat -ano | grep -in 9000看到
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4326/php-fpm.conf)
占用此端口的是php-fpm 就是通过这个配置将请求转发给php-fpm
这也让我们更理解了 cgi 公共网关接口的含义
另外include fastcgi_params;
这个文件是在 /etc/nginx/fastcgi_params里
文件内容大概如下
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
就是将nginx得到的http请求的一些基础的参数
变为php的运行php的基础参数 ($server_name之类的)
今天就到此为止 第一次自己配置nginx 以前都是用apache 第一次配php7 以前都是5.6.x
理解有很多不到位的地方 就说说这些
之后再谈谈深入使用的情况