本文PHP环境采用,nginx + PHP7 + mysql 5.6

一、安装mysql 5.6

  参见:http://www.cnblogs.com/rslai/p/7853465.html

二、Nginx1.8.1 安装

  注:现在安装1.12.1版本。

  1)安装 nginx 需要的扩展gcc,pcre-devel,zlib-devel, openssl openssl-devel

yum -y install gcc-c++ pcre-devel zlib-devel openssl openssl-devel

  2)编译安装Nginx

# 进入安装目录
cd /usr/local/src
# 下载ngix
wget http://nginx.org/download/nginx-1.8.1.tar.gz tar -zxvf nginx-1.8.1.tar.gz -C /usr/local/src cd /usr/local/src/nginx-1.8.1
#默认安装到/usr/local/nginx目录下
./configure
# 编译
make
# 安装
make install

  3)启动Nginx

    开启Nginx

/usr/local/nginx/sbin/nginx

  4)设置Nginx开机自启

# 打开rc.local
vim /etc/rc.local
# 在rc.local中添加
/usr/local/nginx/sbin/nginx
# 保存并推出
# 修改rc.local权限
chmod -R 777 /etc/rc.local

  5)重读配置文件和关闭服务

/usr/local/nginx/sbin/nginx  #启动 服务
/usr/local/nginx/sbin/nginx -s reload #不停止服务重读配置文件
/usr/local/nginx/sbin/nginx -s stop #停止服务 #停止服务

  6)Nginx 配置文件所在目录

/usr/local/nginx/conf

  备注:nginx完成安装以后,有四个主要的目录:

conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。
html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。
sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

  7)nginx编译扩展参考

    https://www.cnblogs.com/zhang-shijie/p/5294162.html

    目前差:https模块、IPV6模块

三、php7编译安装

  1)下载并解压php7

# 进入local/src目录
cd /usr/local/src/
# 下载php7源码包
wget http://cn2.php.net/distributions/php-7.0.2.tar.gz
# 解压缩
tar -xzxvf php-7.0.2.tar.gz
# 进入php源码目录
cd php-7.0.2

  2)检查php所需要的全部扩展 ,没有的话执行

yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 libjpeg-devel bzip2-devel.x86_64 libXpm-devel install gmp-devel icu libicu libicu-devel php-mcrypt libmcrypt libmcrypt-devel postgresql-devel libxslt-devel

    注:因为改为用nginx了,所以编译参数中的--with-apxs2=/usr/bin/apxs去掉了,如果要配置apache用,安装PHP前,请先安装apache。

  3)编译参数配置

'./configure' '--prefix=/usr/local/php' '--with-pdo-pgsql' '--with-zlib-dir' '--with-freetype-dir' '--enable-mbstring' '--with-libxml-dir=/usr' '--enable-soap' '--enable-calendar' '--with-curl' '--with-mcrypt' '--with-gd' '--with-pgsql' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-zlib' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-pcntl' '--enable-mbregex' '--enable-exif' '--enable-bcmath' '--with-mhash' '--enable-zip' '--with-pcre-regex' '--with-pdo-mysql' '--with-mysqli' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--with-openssl' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--with-libdir=/lib/x86_64-linux-gnu/' '--enable-ftp' '--with-gettext' '--with-xmlrpc' '--with-xsl' '--enable-opcache' '--enable-fpm' '--with-iconv' '--with-xpm-dir=/usr'

  4)如果报如下错误

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

  请参考:http://blog.csdn.net/l_yangliu/article/details/53018117

  内容摘录如下

源码编译安装,去http://www.sourceforge.net下载Libmcrypt,mhash,mcrypt安装包
libmcrypt(libmcrypt-2.5.8.tar.gz ):
mcrypt(mcrypt-2.6.8.tar.gz ):
mhash(mhash-0.9.9.9.tar.gz ): wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz
wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz 1 .先安装Libmcrypt
#tar -zxvf libmcrypt-2.5.8.tar.gz
#cd libmcrypt-2.5.8
#./configure
#make
#make install
说明:libmcript默认安装在/usr/local 2.安装mhash
#tar -zxvf mhash-0.9.9.9.tar.gz
#cd mhash-0.9.9.9
#./configure
#make
#make install 3.安装mcrypt
#tar -zxvf mcrypt-2.6.8.tar.gz
#cd mcrypt-2.6.8
#LD_LIBRARY_PATH=/usr/local/lib ./configure
#make
#make install

  再次进入php源码目录重复“3)编译参数配置

cd php-7.0.2

  如果出现错误:

--ENABLE-OPCACHE=NO

  则执行

export LD_LIBRARY_PATH=/usr/local/mysql/lib
export LD_LIBRARY_PATH=/lib/:/usr/lib/:/usr/local/lib

  再次重复“3)编译参数配置

  5)配置的checking 结束后,执行:

make clean && make && make install

  6)装完成后,我们要把源码包中的配置文件复制到PHP安装目录下,源码包中有两个配置 php.ini-development php.ini-production ,看名字就知道,一个是开发环境,一个是生产环境,我们这里就复制开发环境的

cp php.ini-development /usr/local/php/lib/php.ini

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

vim /etc/profile
# 在最后加入
PATH=$PATH:/usr/local/php/bin
export PATH

    然后执行 命令 source /etc/profile

  8)php -v 就可以看到PHP版本信息了。
  9)此时还需要配置PHP-fpm:

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
cp /usr/local/src/php-7.0.2/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

  10)启动php-fpm:

useradd www-data; /usr/local/php/sbin/php-fpm

  11)php-fpm设置开机自启

systemctl enable php-fpm

四、检查安装是否正确

  1)检查nginx 是否配置正确,默认nginx网页放在了

/usr/local/nginx/html

  目录下,在此目录中方一个htm文件

  2)在服务器wget如果能返回文件证明nginx配置正确

wget http://127.0.0.1

  3、从客户端浏览器中访问相应ip,如果打不开则有可能是防火墙开着,可以简单粗暴的关闭防火墙或配置允许访问端口,关闭防火墙如下命令

systemctl stop firewalld.service

  4、再次访问如果可以看到则nginx配置没问题。

  5、测试php配置是否正常,修改nginx配置文件

    vi /usr/local/nginx/conf/nginx.conf

    修改为如下内容,注意目录配置在  /home/www/public 如有需要可以按需修改

#user  www www;
#user root;
worker_processes 1;
#pid /var/run/nginx.pid;
events {
worker_connections 51200;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 300;
client_max_body_size 20m;
#include /etc/nginx/conf.d/*.conf;
server
{
listen 80;
server_name 192.168.3.20;
#return 301 https://$server_name$request_uri;
index index.html index.htm index.php;
root /home/www/public;
if (!-e $request_filename)
{
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
location /nginx_status
{
#stub_status on;
#access_log /mydata/nginx.log;
auth_basic "NginxStatus";
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
expires 24h;
root /home/www/public/;
}
location ~ /\.
{
deny all;
}
location ~ [^/]\.php(/|$) {
root /home/www/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}

  6、重启nginx配置

/usr/local/nginx/sbin/nginx   -s  reload  #不停止服务重读配置文件

  7、在web目录下新增一个hello.php文件将如下代码复制进去,我放在了 /home/www/public/ 目录。

<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>

  8、从浏览器上访问 http://192.168.3.219/hello.php,如果能看到 Hello World 则代表php环境配置正常

参考文献:

  http://www.cnblogs.com/jinkechen/p/6830740.html

  https://www.cnblogs.com/zhang-shijie/p/5294162.html

转:PHP环境搭建 - Linux的更多相关文章

  1. centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课

    centos LAMP第一部分-环境搭建  Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...

  2. Java部署环境搭建(Linux)

    环境搭建必须jdk.tomcat.mysql(基础) 额外的软件包项目中可能用到 jdk:它包含jre和开发所需完整类库. tomcat:它是一个web容器,项目通常往webapps下扔,便于外界访问 ...

  3. ffmpeg开发环境搭建--(linux)

    1.     下载源码: http://ffmpeg.org/download.html 2.     解压:tar –xvf ffmpeg-3.2.1.tar.bz2 3.     配置 Eg:./ ...

  4. Windows下Lua+Redis 断点调试环境搭建==Linux下类似

    Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio, ...

  5. Lamp环境搭建Linux CentOS6.5编译安装mysql5.6

    经典web开发组合Lamp环境搭建之mysql安装详解 安装前准备 通过rpm命令检查centos上是否已经安装mysql,然后卸载已经存在的mysql版本 [root@localhost src]# ...

  6. kafka集群环境搭建(Linux)

    一.准备工作 centos6.8和jvm需要准备64位的,如果为32位,服务启动的时候报java.lang.OutOfMemoryError: Map failed 的错误. 链接:http://pa ...

  7. .net core运行环境搭建 linux + windows

    ---------------------------------------linux------------------------------------------------- 一.添加do ...

  8. LNMP小项目搭建,Centos7.6环境搭建Linux+nginx+mysql+php,wordpress个人博客的搭建(完整搭建步骤)

    一.LNMP搭建,基于nginx服务器搭建wordpress个人博客 准备环境:centos7.6环境下web服务器(nginx+php):主机名:web01,ip:192.168.248.172my ...

  9. Redis环境搭建-Linux单机

    一.准备Linux 可以买云服务器,也可以用虚拟机,我用的是虚拟机Oracle VM VirtualBox 二.编译环境 1.检查linux下是否安装环境 yum list installed | g ...

  10. python环境搭建-Linux系统下python2.6.6升级python3.5.2步骤

    [root@template ~]# python -v # /usr/lib64/python2.6/encodings/utf_8.pyc matches /usr/lib64/python2.6 ...

随机推荐

  1. 【题解】JSOI2011分特产

    没sa可suo的,sui题一道…… #include <bits/stdc++.h> using namespace std; #define maxn 3000 #define mod ...

  2. javascript的解析顺序

    一.javascript的解析顺序 我们大家所理解的代码的执行顺序都是从上到下的,但是实际上确不是这样的.我们看一下下面的代码. 1 alert(a);2 var a = 1;如果执行顺序是从上到下的 ...

  3. Unity3D手游开发日记(1) - 移动平台实时阴影方案

    阴影这个东西,说来就话长了,很多年前人们就开始研究出各种阴影技术,但都存在各种瑕疵和问题,直到近几年出现了PSSM,也就是CE3的CSM,阴影技术才算有个比较完美的解决方案.Unity自带的实时阴影, ...

  4. Communications link failure;;The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure::The ...

  5. python基础----数据类型二

    数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...

  6. HDU 2920 分块底数优化 暴力

    其实和昨天写的那道水题是一样的,注意爆LL $1<=n,k<=1e9$,$\sum\limits_{i=1}^{n}(k \mod i) = nk - \sum\limits_{i=1}^ ...

  7. 为什么 .NET 会被叫做 .NET?

    微软开发.NET Framework是在20世纪90年代后期,最初是叫做“下一代Windows服务”(Next Generation Windows Services 简称 NGWS). 那么为什么微 ...

  8. 压缩JS时生成source_map

    @echo off :: 当前目录 src/test set currDir=src/test/ set sourceMapFileName=test.js.map set inputList=%in ...

  9. 面向对象 ( OO ) 的程序设计——继承

    本文地址:http://www.cnblogs.com/veinyin/p/7608282.html  仅支持实现继承,且主要依靠原型链来实现,不过一般会混合构造函数一起实现继承 1 原型链 继承使用 ...

  10. 【洛谷 P1502】 窗口的星星(扫描线)

    题目链接 把每个星星作为左下角,做出长为\(w-0.5\),宽为\(h-0.5\)的矩形. \(-0.5\)是因为边框上的不算. 离散化\(y\)坐标. 记录\(2n\)个\(4\)元组\((x,y1 ...