首先,我们简单了解一下什么是PHP,PHP(Hypertext Preprocessor 超文本预处理器) 和Java语言一样,PHP也是属于高级语言,并不能直接在操作系统上运行。Java运行需要虚拟机,PHP运行也是需要Zend Engine引擎。与Java不同的是,Java属于编译与解析性语言,而PHP只是是解析性语言。所以,我们可以从语言性质上简单看出,Java运行之前先通过编译形成.class文件,所以运行效率会更快,PHP编写程序后检查语法通过,就可以直接运行,从而开发效率会更快。

去年,刚刚开始从Java转学PHP的时候,PHP的弱类型特效深深吸引了我,在Java中我们经常会遇到各种类型转换,或者考虑用什么样的类型去存储数据,这种严格的编程非常局限了开发的效率,当然这个缺点也是它的优势之处,更加严格的类型定义,让Java获得更快的运行速度。然后,我记得学到PHP+Mysql时候,我都非常惊讶!为什么PHP对数据库的操作这么简单,是我写错了吗?因为当初学Java的时候,Mysql的各种jar包搞到吐血。真的PHP的开发做得非常好,所以很多学PHP的程序员都会开一个玩笑:PHP是世界上最好的语言。其实说的并不是其他语言不好,而是作为程序员都喜欢那种自动化,更少的人工的方法去开发和维护程序。

以上都是个人的理解,不一定是正确的,如果说的不对,希望大家帮助指正。

回到正题:安装PHP,我们讲的安装不是在windows重复点击下一步的过程,这样就太没劲了。我今天想说的是,如何在Linux编译安装PHP,并理解PHP扩展。

在上次笔记中,我已经准备了Linux系统,并且配置好网络。
 

安装PHP,并开启FPM

 

# 更新系统

yum -y update

升级所有包,改变软件设置和系统设置,系统版本内核都升级

reboot
 

# 安装基础软件

yum -y install vim wget w3m gcc gcc-c++ make automake gdb cmake kernel-devel kernel-headers lsof zip unzip xz git tree nmap mailx tcpdump sysstat screen dtach ntp telnet man
 

# 安装依赖库

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel freetype-devel bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* pcre-devel zlib-devel autoconf automake zlib* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* perl gettext pcre-devel zlib-devel libXpm-devel libXpm icu icu4j libicu* wget lrzsz mysql-devel unzip libaio rsync openssh-clients ntp
 
# 安装 PHP
# 安装PHP基础环境
# PHP 配置文件:/usr/local/php/etc/php.ini
# PHP-FPM 配置文件:/usr/local/php/etc/php-fpm.conf
# 服务控制:service php-fpm (start|stop|restart|reload)
 

# 安装PHP依赖库

cd /usr/local/src
tar zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7/
./configure
make
make install
 
cd libltdl/
./configure --enable-ltdl-install
make
make install
 
yum install mysql-devel
ln -s /usr/lib64/libXpm.so* /usr/lib/
mkdir /usr/lib/mysql
ln -s /usr/lib64/mysql/libmysqlclient* /usr/lib/mysql
 

# 安装PHP

#tar zxf php-5.4.26.tar.gz
#cd php-5.4.26
 
# 下载src
mv mirror php-5.6.21.tar.gz
 
# 解压
tar zxf php-5.6.21.tar.gz
cd php-5.6.21
 
# 配置参数
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-libxml-dir \
--with-pcre-dir \
--with-mcrypt \
--with-openssl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-xpm-dir \
--with-gettext \
--with-freetype-dir \
--with-bz2 \
--with-iconv-dir \
--with-zlib \
--with-zlib-dir \
--with-curl \
--with-xmlrpc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-icu-dir=/usr \
--enable-pcntl \
--enable-intl \
--enable-sockets \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-ftp \
--enable-zip \
--enable-calendar \
--enable-mbstring \
--enable-exif \
--enable-soap \
--enable-wddx \
--enable-bcmath \
--enable-fd-setsize=4096 \
--disable-short-tags \
--disable-ipv6
# 编译
make
 
# 安装
make install
 
# 创建配置文件
#cp /usr/local/src/php-5.4.26/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/src/php-5.6.21/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
 
# 添加新用户/用户组
groupadd www
useradd -r -g www www -s /sbin/nologin
 
# 创建 php 运行所需要目录并设置权限
mkdir /var/run/php
mkdir /var/log/php
chown -R www:www /var/run/php/
chown -R www:www /var/log/php/
 
# 设置 php-fpm 配置,修改以下参数项。 
# vim /usr/local/php/etc/php-fpm.conf
pid = /var/run/php/php-fpm.pid
error_log = /var/log/php/error.log
user = www
group = www
listen = 127.0.0.1:9000
pm = static
 
# php-fpm 加入系统服务并开机启动
#cp /usr/local/src/php-5.4.26/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
cp /usr/local/src/php-5.6.21/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# vim /etc/init.d/php-fpm
#php_fpm_PID=${prefix}/var/run/php-fpm.pid
php_fpm_PID=/var/run/php/php-fpm.pid
 
# 编辑 PHP 相关路径(/etc/init.d/php-fpm)
chmod u+x /etc/init.d/php-fpm
chkconfig --add php-fpm
service php-fpm start
chkconfig php-fpm on
 
ps -d 
表示我们正常安装成功了,已经启动了php-fpm.
 
 
PHP安装完成!
 

探索PHP+Nginx(二) 安装PHP的更多相关文章

  1. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  2. Linux下Nginx的安装(二)

    一.安装Nginx ## 安装前准备 ## #GNU编译器集合 #Nginx编译需要PCRE #在Nginx的各种模块中需要使用gzip压缩 #在Nginx中,如果服务器提供安全网页时则会用到Open ...

  3. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  4. nginx 的安装

    一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl ...

  5. nginx笔记----安装

    nginx的安装 ./configure make && make install (一)准备条件: 1.GCC---gun编译器集合 Nginx是一个由C语言编写的程序,因此首先需要 ...

  6. Linux下Nginx的安装、升级及动态添加模块

    系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...

  7. Nginx的安装及反向代理设置

    因为项目的缘故,接触到了Nginx的安装和反向代理设置,和大家分享下. 一.Nginx的下载.安装cd /homewget http://nginx.org/download/nginx-1.0.5. ...

  8. nginx初级安装配置

    nginx初级安装配置 转自:(lykyl原创)http://www.cnblogs.com/lykyl/archive/2012/11/21/2781077.html 实验环境:系统 CENTOS5 ...

  9. Linux下,Nginx的安装、升级及动态添加模块

    系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...

  10. Nginx基础学习(一)—Nginx的安装

    一.Nginx介绍 1.什么是Nginx?      Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开 ...

随机推荐

  1. 【POJ1005】I Think I Need a Houseboat

    说是计算几何,其实是一道水题.直接算半圆面积即可. #include <iostream> #include <cstdlib> #include <cstdio> ...

  2. Linux usb子系统(三):通过usbfs操作设备的用户空间驱动

    内核中提供了USB设备文件系统(usbdevfs,Linux 2.6改为usbfs,即USB文件系统),它和/proc类似,都是动态产生的.通过在/etc/fstab文件中添加如下一行:none /p ...

  3. 用户登陆,退出等基本Action

    用户登陆页面user_login.jsp对应action为login.do: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...

  4. Promise 异步执行的同步操作

    Promise 是用来执行异步操作的. 但有时一个异步操作需要等其他的异步操作完成,这时候就可以使用then来做. function loadImageAsync(url) { return new ...

  5. .NET 中使用 HttpWebResponse 时 Cookie 的读取

    今天把一个网站登录配置到以前写的蜘蛛程序中,发现不能成功登录.检查后才发现,那个网站在登录成功后,输出了一个特殊路径的 Cookie,由于是使用 HttpWebRequest.Cookies 来获取的 ...

  6. 给SharePoint页面加入自己定义页脚Custom footer

    给SharePoint页面加入自己定义页脚Custom footer         在公司做站点设计项目时,须要在页面上加入页脚.         非常多人都把页脚忽视了,认为没什么多大用处,事实上 ...

  7. linux TIME_WAIT过多的解决方法

      查看TCP状态:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'查看SOCKET状态:cat /proc/n ...

  8. EffectiveC#11--选择foreach循环

    1.C#的foreach语句可以为你的任何集合产生最好的迭代代码 不推荐如下写法(?原因未明白 作者意思是阻碍jit边界检测) int len = foo.Length; for ( int inde ...

  9. 前端JS模版库kino.razor - 原理流程分析 - 改进版轮子RazorJs

    1.前言 从后台获取数据,在前端JS里面拼接字符串,不累吗?敢不敢找一款前端使使... 现在这种模板库比较多了,我用过的jquery-template .JsRender .听说过的一堆,还有各种MV ...

  10. css1-颜色和长度

    <!DOCTYPE html>CSS1-颜色和长度 <style>div{ /*颜色*/ color:#f00; /*前景色*/ background:#00f; /*背景色* ...