linux下nginx安装php

把php安装包上传到linux的/usr/local/src

1.解压

1
2
3
4
5
cd /usr/local/src
 
tar zxvf php-5.6.9.tar.gz
 
cd php-5.6.9

  

新增php7.2.0安装手记

下载地址

链接:https://pan.baidu.com/s/1JpDpVEylcup3ZYB32aEoGQ
提取码:1edc 

先安装如下依赖

$ yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

解压php-7.2.0.tar.gz  然后进入目录,编译。命令如下:

1
2
3
$ tar -zxvf php-7.2.0.tar.gz
 
$ cd php-7.2.0

  

$ ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --with-openssl --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl

【配置PHP】

在之前编译的源码包中,找到 php.ini-production,复制到/usr/local/php下,并改名为php.ini:

1
$ cp php.ini-production /usr/local/php/php.ini

  

[可选项] 设置让PHP错误信息打印在页面上 

1
$ vim /usr/local/php/php.ini

  

复制启动脚本:

1
2
3
$ cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
 
$ chmod +x /etc/init.d/php-fpm

  

修改php-fpm配置文件:

1
2
3
4
5
$ cd /usr/local/php/etc
 
$ cp php-fpm.conf.default php-fpm.conf
 
$ vim php-fpm.conf

  

① 去掉 pid = run/php-fpm.pid 前面的分号
1
2
3
4
5
$ cd php-fpm.d
 
$ cp www.conf.default www.conf
 
$ vim www.conf

  

② 修改user和group的用户为当前用户(也可以不改,默认会添加nobody这个用户和用户组)

【启动PHP】

1
2
3
4
5
6
7
$ /etc/init.d/php-fpm start        #php-fpm启动命令
 
$ /etc/init.d/php-fpm stop         #php-fpm停止命令
 
$ /etc/init.d/php-fpm restart        #php-fpm重启命令
 
$ ps -ef | grep php 或者 ps -A | grep -i php  #查看是否已经成功启动PHP

  

参考:https://www.cnblogs.com/rxbook/p/9106513.html

 

2.编译安装

1
2
3
4
5
6
7
8
9
10
11
./configure --prefix=/usr/local/php  --enable-fpm --with-mcrypt \
 
--enable-mbstring --enable-pdo --with-curl --disable-debug  --disable-rpath \
 
--enable-inline-optimization --with-bz2  --with-zlib --enable-sockets \
 
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
 
--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
 
--with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar

  

错误

1
2
3
4
5
6
7
checking for cc... no
checking for gcc... no
 
源码编译,提示缺少gcc cc cl.exe
 
解决方案:
      yum install -y gcc glibc

  

错误1

1
2
3
4
configure: error: xml2-config not found. Please check your libxml2 installation.
配置:错误:xml2-config不见了。请检查你的libxml2安装。
解决:
yum install libxml2 libxml2-devel -y

  

错误2

1
2
3
4
configure: error: Cannot find OpenSSL’s <evp.h>
配置:错误:找不到OpenSSL的< evp.h >
解决:
yum install openssl openssl-devel -y

  

错误

1
2
3
error: cURL version 7.10.5 or later is required to compile php with cURL support
原因:php7.0.27以上 curl需要单独安装
解决:yum -y install curl-devel

  

错误3

1
2
3
4
Configure: error: Please reinstall the BZip2 distribution
配置:错误:请重新安装BZip2分布
解决:
yum install bzip2 bzip2-devel -y

  

错误4

1
2
3
4
configure: error: jpeglib.h not found.
配置:错误:jpeglib。没有找到。
解决:
yum install libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel -y

  

错误5

1
2
3
4
5
6
Configure: error: mcrypt.h not found. Please reinstall libmcrypt.
配置:错误:mcrypt。没有找到。请重新安装libmcrypt。
解决:
安装epel-release源
yum install epel-release -y
yum install libmcrypt-devel –y

  

最后最重要

1
2
make
make install

  

3.拷贝PHP主配置文件

1
cp php.ini-production /usr/local/etc/php.ini
 

2、为php-fpm提供配置文件

1
2
3
4
5
cd /usr/local/php
 
cp etc/php-fpm.conf.default etc/php-fpm.conf
 
vim etc/php-fpm.conf

  

修改 /usr/local/php/etc/php-fpm.d/www.conf 文件

1
2
user = www-data
group = www-data

  

如果www-data用户不存在,那么先添加www-data用户,命令行:

1
2
3
groupadd www-data
 
useradd -g www-data www-data

配置文件修改

1
2
3
4
5
6
7
8
9
pm.max_children = 150
 
pm.start_servers = 8
 
pm.min_spare_servers = 5
 
pm.max_spare_servers = 10
 
pid = /usr/local/php/var/run/php-fpm.pid

  

当nginx、php-fpm、Permission denied:https://blog.csdn.net/dfq737211338/article/details/89176104

 

配置php可执行

方法一:

打开用户根目录下的:

1
vi ~/.bash_profile

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# .bash_profile
 
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
 
# User specific environment and startup programs
 
PATH=$PATH:$HOME/bin
 
export PATH
 
alias php=/usr/local/php/bin/php

修改后保存

然后执行

1
source ~/.bash_profile

测试一下 php -v

 

方法二:

设置环境变量 :修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码

PATH=$PATH:/usr/local/php/bin
export PATH

然后执行生效命令

source /etc/profile

查看PHP版本信息

php -v

 

3、启动php-fpm

执行

1
/usr/local/php/sbin/php-fpm

停止

1
pkill php-fpm

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):

1
ps aux | grep php-fpm

3、nginx和php-fpm整合

编辑/usr/local/nginx/nginx.conf

1
vim /usr/local/nginx/nginx.conf

修改如下:

红框中“#”号去掉

 

 

红框中“#”号去掉

 

 

添加红框中内容

 

 

改成如下

1
2
3
4
5
6
7
8
9
10
11
location ~ \.php$ {
 
            root         html;
 
            fastcgi_pass 127.0.0.1:9000;
 
            fastcgi_index index.php;
 
            include        fastcgi.conf;
 
}

 

 

重新载入nginx的配置文件:

1
/usr/loca/nginx/sbin/nginx -s reload

  

4、测试php文件

 在/usr/local/nginx/html下创建index.php文件,输入如下内容

1
2
3
4
5
<?php
 
    phpinfo();
 
?>

  

5、浏览器访问

访问http://你的服务器ip/index.php,皆可以见到php信息了。

 

 

 

参考:http://www.cnblogs.com/flywind/p/6019631.html (php-fpm)

 

附: 

如果Loaded Configuration File为none,把php.ini复制一份到Configuration File (php.ini) Path的目录下,重启fpm

cp /usr/local/etc/php.ini /usr/local/php/lib

pkill -9 php-fpm

/usr/local/php/sbin/php-fpm

 

 

设置时区,php.ini

;date.timezone =

改为

date.timezone = Asia/Shanghai

posted @   程序生(Codey)  阅读(265)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示