2018-06-30 19:03:40 qq_23033339 阅读数 2324
  • PHP底层内核源码与扩展开发

    全球第一份深入学习PHP底层内核源码与扩展开发的视频课程,CSDN,系统讲解了PHP底层源代码学习,实现原理,PHP扩展知识学习,相关开发工具运用等相关知识。是PHP程序员提高自身能力,成为底层内核级开发人员的首选入门课程。学习本课程人员好有一定的PHP/LINUX/C基础知识.

    6201 人正在学习 去看看 胡勤楼

1.下载PHP源码文件

通过wget下载源码

PHP版本以及下载地址可以去 http://php.net/downloads.php 选择,这里我们以7.1.19来演示

cd /usr/local/src/
wget -O php-7.1.19.tar.gz http://cn2.php.net/get/php-7.1.19.tar.gz/from/this/mirror
安装如出现下面这个wget未找到

使用yum 安装一下wget

yum -y install wget

然后再下载PHP

下载完毕!

2.安装PHP


先将文件解压

tar -zxvf php-7.1.19.tar.gz

解压之后得到一个文件夹,进入这个文件夹

cd php-7.1.19 

安装之前先安装一些支持库

yum -y install gcc
yum -y install openssl openssl-devel
yum -y install curl-devel
yum -y install libjpeg-devel
yum -y install libpng-devel
yum -y install freetype-devel
yum -y install libxslt-devel
yum -y install libxml2 libxml2-devel
yum -y install epel-release
yum -y install libmcrypt-devel

配置PHP

./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc/ \
--with-curl \
 --with-freetype-dir \
 --with-gd \
 --with-jpeg-dir \
 --with-gettext \
 --with-iconv-dir \
 --with-kerberos \
 --with-libdir=lib64 \
 --with-libxml-dir \
 --with-mysqli \
 --with-openssl \
 --with-pcre-regex \
 --with-pdo-mysql \
 --with-pdo-sqlite \
 --with-pear \
 --with-png-dir \
 --with-xmlrpc \
 --with-xsl \
 --with-zlib \
 --enable-fpm \
 --enable-bcmath \
 --enable-libxml \
 --enable-inline-optimization \
 --enable-gd-native-ttf \
 --enable-mbregex \
 --enable-mbstring \
 --enable-opcache \
 --enable-pcntl \
 --enable-shmop \
 --enable-soap \
 --enable-sockets \
 --enable-sysvsem \
 --enable-xml \
 --enable-zip

编译安装

make && make install

拷贝配置文件到PHP目录

cp 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
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

3.开启php-fpm开机自启动

vi /etc/systemd/system/php-fpm.service
写入如下代码

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID

[Install]
WantedBy=multi-user.target

启动php-fpm

systemctl start php-fpm.service

添加到开机启动

systemctl enable php-fpm.service

4.配置环境变量

vi /etc/profile

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

放到文件最后面


保存退出

执行命令使配置生效

source /etc/profile

执行

php -v
查看PHP信息

安装完毕


2018-06-12 11:52:23 Dong_Alex 阅读数 3051
  • PHP底层内核源码与扩展开发

    全球第一份深入学习PHP底层内核源码与扩展开发的视频课程,CSDN,系统讲解了PHP底层源代码学习,实现原理,PHP扩展知识学习,相关开发工具运用等相关知识。是PHP程序员提高自身能力,成为底层内核级开发人员的首选入门课程。学习本课程人员好有一定的PHP/LINUX/C基础知识.

    6201 人正在学习 去看看 胡勤楼

linux 系统下源码编译安装搭建自定义lamp环境(linux+apache+mysql+php)

目地:在linux系统上源码编译安装搭建lamp环境并配置 , 守护进程, 软连接集中管理配置文件, phpmyadmin数据库在线管理

实验操作环境: linux centos7.4 64位 腾讯云服务器

友情连接:  LNMP搭建: https://blog.csdn.net/Dong_Alex/article/details/80712018

apache(httpd)使用2.4 官网源码

php使用5.6 官网源码

mysql使用5.7 官网源码


开始

# 一.安装apache (httpd)
# 安装依赖:gcc, apr, apr-util,apr-iconv, pcre
# 安装gcc
yum install gcc
# apr, apr-util, apr-iconv , pcre yum没有, 需要下载源码安装
# 获取apr
wget http://mirror.bit.edu.cn/apache//apr/apr-1.6.3.tar.gz
# 获取apr-util
wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
# 获取apr-iconv
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.2.tar.gz
# 获取pcre
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
# 获取httpd (apache)
wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.29.tar.gz 
# 获取php5.6
wget -c -O  php5.6.36.tar.gz  http://cn2.php.net/get/php-5.6.36.tar.gz/from/this/mirror
# 获取boost mysql5.7及以上版本需要,5.6不需要
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
# 获取mysql5.7
wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz

# 1.安装apr
# 解压apr
tar zxvf apr-1.6.3.tar.gz

# 安装依赖libtool 
yum install libtool

# 进入配置
cd apr-1.6.3/
./buildconf

# 配置
./configure --prefix=/usr/local/apr-1.6.3

# 编译安装
make && make install

# 2.安装apr-iconv 
# 解压
cd apr-iconv-1.2.2/
tar zxvf apr-iconv-1.2.2.tar.gz 

# 配置
./configure --prefix=/usr/local/apr-iconv-1.2.2 --with-apr=/usr/local/apr-1.6.3/bin

# 编译安装
make && make install

# 3.安装apr-util
# 解压 apr-util
tar zxvf apr-util-1.6.1.tar.gz

#  解决报类似#include <expat.h>错误,需yum安装expat: yum install expat-devel 
yum install expat-devel

# 配置
cd apr-util-1.6.1/
# --with-apr=apr 安装bin目录
./configure --prefix=/usr/local/apr-util-1.6.1 --with-apr=/usr/local/apr-1.6.3/bin  --with-apr-iconv=/usr/local/apr-iconv-1.2.2/bin/apriconv

# 编译安装 
 make && make install 

# 4.安装pcre
# 安装依赖 gcc-c++
yum install gcc-c++

# 解压
tar zxvf pcre-8.39.tar.gz
cd pcre-8.39/

# 配置
./configure --prefix=/usr/local/pcre-8.39

# 编译安装
make && make install

# 5.安装apache (httpd)
# 记录下apr, apr-util, apr-iconv , pcre 的安装路径, 配置apache时需要用到

# 安装并更新locate工具数据库
yum install locate  && updatedb

# 查找apr, apr-util,apr-iconv,pcre 安装路径
locate apr | grep bin
locate pcre | grep bin

# 查找结果如下:
# apr 安装路径 	/usr/local/apr-1.6.3/bin
# apr-iconv		 /usr/local/apr-iconv-1.2.2/bin/apriconv
# apr-util 安装路径 	/usr/local/apr-util-1.6.1/bin
# pcre 安装路径	/usr/local/pcre-8.39/bin

# 解压httpd
tar zxvf httpd-2.4.29.tar.gz

#  配置 (切换到解压目录) 一定要加上 enable-so 
cd httpd-2.4.29/
./configure --prefix=/usr/local/httpd-2.4.29/  --with-apr=/usr/local/apr-1.6.3/bin  --with-apr-util=/usr/local/apr-util-1.6.1/bin  --with-apr-iconv= /usr/local/apr-iconv-1.2.2/bin/apriconv   --with-pcre=/usr/local/pcre-8.39  --enable-so

# 编译安装
make && make install

# 查看安装成功没有
locate httpd | grep bin

# 添加到服务
# 从安装目录bin/下 复制apachectl 到/etc/rc.d/init.d/httpd
cp /usr/local/httpd-2.4.29/bin/apachectl /etc/rc.d/init.d/httpd
# 编辑httpd, 加入下面两句 后两个数字表示启动顺序, 不要超100, 下面两句是带# 注释的, chkconfig是能读到的, 这两个必须要加, Description: 这个是描述, 随便写

# chkconfig: 2345 80 81
# Description: this is httpd server

# 添加到守护进程
chkconfig --add httpd

# 管理 
service httpd start|restart|stop|status


# 访问



# 新建一个目录 /myconfig/ , 以后将所有配置文件建立软链接到此目录, 统一管理
mkdir /myconfig
# 为httpd.conf 创建软连接
ln -s /usr/local/httpd-2.4.29/conf/httpd.conf  /myconfig/httpd.conf


# 配置域名

# 运行下面几个命令测试一下有没有错误

# 解决 lynx: command not found
# 这是因为lynx命令不认识,只因缺少lynx包,安装即可:yum install lynx。
yum install lynx

# 安装完lynx , 运行service httpd status 有下面的提示, 该话题属于 apache server-status  , 这里不做多的说明, 不影响使用



# 启动后只要访问出现这个就说明安装apache 成功!

# 二. 安装php
# 1.安装php依赖
yum install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel libevent

# 2.安装php
# 解压 (切换到压缩包目录下执行)
tar zxvf php5.6.36.tar.gz

# 配置 配置开启需要开启的扩展比如,pdo, mysql gd 并将php做为apache的模块 --apxs2=指向apache bin下的apxs程序 
cd php-5.6.36/
./configure --prefix=/usr/local/php-5.6.36/ --with-apxs2=/usr/local/httpd-2.4.29/bin/apxs  --with-mysql   --with-pdo-mysql  --with-gd

# 更新apache的bin/apxs 文件 将第一行改为perl的位置
# 查看perl 位置
whereis perl 




# apxs 文件第一行改为 perl的位置 参数 -w
# ! /usr/bin/perl -w


#编译安装
make && make install

# 查看 php 信息
/usr/local/php-5.6.36/bin/php -m
# 如下说明安装成功


3.php与apache的绑定
编辑apache主配置文件 httpd.conf
配置如下:
1)
LoadModule php5_module modules/libphp5.so


2) 加入以下代码, 告知apache 将php交由php处理
<FilesMatch \.php$>
 SetHandler application/x-httpd-php
</FilesMatch>


如图:

# 在htdoc 站点目录写一个php测试文件 index.php 内容 <?php phpinfo();?>
# 重启服务器访问
service httpd restart 






# date 警告处理, 配置php时区



从phpinfo 获取到php的配置目录及文件 (/usr/local/php-5.6.36/lib)

# 拷贝php配置文件
从php源码中复制 php.ini-production 到php安装目录的lib目录下改名为php.ini
cp /root/packages/php-5.6.36/php.ini-production /usr/local/php-5.6.36/lib/php.ini

# 备份php.ini
cp /usr/local/php-5.6.36/lib/php.ini /usr/local/php-5.6.36/lib/php.ini.bak

# 创建软连接 方便管理
ln -s /usr/local/php-5.6.36/lib/php.ini /myconfig/php.ini

# 我把所有配置文件统一建立软连接在/myconfig/下, 如图

# 配置php.ini 时区

修改完, 重启服务器 再访问 
service httpd restart


# 三. 安装mysql
# 安装依赖
# gcc, gcc-c++, ncurses-devel, cmake(配置的工具mysql配置不用configure,用cmake)
yum install gcc gcc-c++ cmake ncurses-devel

# 安装boost mysql5.7依赖boost,mysql5.6不依赖
# 在/usr/local/下创建boost目录
mkdir /usr/local/boost
# 进入boost目录
cd /usr/local/boost/
# 下载 boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

# 解压
tar zxvf boost_1_59_0.tar.gz


# mysql官网下载mysql源码
https://dev.mysql.com/downloads/mysql/5.7.html#downloads


# 鼠标右键复制下载连接地址, 使用wget 下载
wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz

# 解压
tar zxvf mysql-5.7.22.tar.gz

# 配置安装位置与数据库data位置
# mysql 5.7需要指定 -DWITH_BOOST=/usr/local/boost, mysql5.6及以下不需要
cd mysql-5.7.22/
cmake . -DWITH_BOOST=/usr/local/boost   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.22 -DMYSQL_DATADIR=/usr/local/mysql-5.7.22/data  

# 编译安装
make && make install

# 配置mysql
# 修改文件权限,要求必须用独立用户管理, 这个用户就叫mysql
# 添加用户
groupadd mysql && useradd -g mysql mysql


# 修改mysql程序权限, 把组改成mysql,用户也改成mysql
修改前:

# 在/usr/local/目录执行 
# 将mysql目录及文件的用户跟组修改为mysql
chown -R mysql:mysql mysql-5.7.22/


# 初始化用户信息前先删除/etc/my.cnf 配置文件
rm /etc/my.cnf

# 初始化用户信息
# 下面是不建议mysql5.7使用的, mysql5.6可以使用,具体看下面,选择自己的版本
# /usr/local/mysql-5.7.22/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql-5.7.22/data

# mysql5.6 使用下面的
# /scripts/mysql_install_db --user=mysql 

# mysql5.7 建议使用的
/usr/local/mysql-5.7.22/bin/mysqld  --initialize


# 初始化结束后, 会随机生成一个root的密码, 切记保持此密码,后续用到
如图:

本次生成的密码是: 1%fjXAMjDPb6 
# 查看data目录下有没有件, 有说明初始化成功了

# 初始化完成后, mysql目录下除了data目录保留mysql用户,把其它目录通通改为root用户
chown -R root mysql-5.7.22/ && chown -R mysql mysql-5.7.22/data/

# 查看

# 如果是mysql5.6 复制一个配置文件过来 参考

# 如果是mysqsl5.7 手动创建配置文件 touch /etc/my.cnf 写入以下内容,参考:
[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

[mysqldump]
quick

# 运行mysqld_safe服务
/usr/local/mysql-5.7.22/bin/mysqld_safe --user=mysql &

# 查看进程
ps -e | grep mysqld




# 连接
/usr/local/mysql-5.7.22/bin/mysql -uroot -p 


复制密码进去

按确定

# 修改密码
# mysql5.6 如下:
# update mysql.user set password=password('你的密码') where user='root';

# mysql5.7 如下:
alter user 'root'@'localhost' identified by '你的密码';

# 刷新权限 5.7不需要
# flush privileges
# quit 退出, 重新用新密码登录

# 将其加入守护进程
# 复制/mysqld.server 到/etc/rc.d/init.d/
cp  /usr/local/mysql-5.7.22/support-files/mysql.server /etc/rc.d/init.d/mysqld
# 修改权限
chmod  a+rx /etc/rc.d/init.d/mysqld 
# 添加到守护进程管理
chkconfig --add mysqld
# 查看
chkconfig --list mysqld
# 测试用守护进程管理方式,停用跟启用
service mysqld stop
service mysqld start

# 四. 安装phpmyadmin
# 下载
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.zip
# 复制到站点根目录
cp phpMyAdmin-4.8.1-all-languages.zip /usr/local/httpd-2.4.29/htdocs/
# 进入站点根目录, 解压
cd /usr/local/httpd-2.4.29/htdocs/
unzip phpMyAdmin-4.8.1-all-languages.zip
# 改名为phpmyadmin
mv phpMyAdmin-4.8.1-all-languages phpmyadmin


# 访问站点 
http://58.87.95.128/phpmyadmin/index.php

如图:




输入密码登录


#解决一个问题 , 设置不让访问目录



# 编辑httpd.conf
Options Indexes FollowSymLinks
修改为:
Options FollowSymLinks

# 保存后, 重启httpd服务器
service httpd restart


# 访问


# 再配置httpd.conf, 让自动访问index.php


<IfModule dir_module>
     DirectoryIndex index.html index.php
</IfModule>

# 再次访问



LNMP搭建https://blog.csdn.net/Dong_Alex/article/details/80712018

/END


2019-08-23 17:06:32 Ahualiangmu 阅读数 62
  • PHP底层内核源码与扩展开发

    全球第一份深入学习PHP底层内核源码与扩展开发的视频课程,CSDN,系统讲解了PHP底层源代码学习,实现原理,PHP扩展知识学习,相关开发工具运用等相关知识。是PHP程序员提高自身能力,成为底层内核级开发人员的首选入门课程。学习本课程人员好有一定的PHP/LINUX/C基础知识.

    6201 人正在学习 去看看 胡勤楼

输入命令下载特定php版本源码安装包如:

    1. sudo wget https://www.php.net/distributions/php-5.6.40.tar.gz
    2. 输入命令解压: tar zxvf php-5.6.40.tar.gz
    3. 输入命令进入php源码目录: cd php-5.6.40.tar.gz
  1. 进入源码编译安装php部分

官方安装教程(被坑了不少):

https://www.php.net/manual/zh/install.unix.debian.php

                                                                                         图1

2.1.--prefix指定源码安装位置忽略可不设置安装在默认位置。

2.2.各参数斜线去掉,这里被坑了不少,看图1(根据需要添加自己需要的php扩展模块,在初始化安装时前提是这些模块能在源码安装目录里ext目录下能找到)。

2.3.本人安装配置的参数命令如下:

./configure --enable-mysqlnd  --with-pdo-mysql  --with-pdo-mysql=mysqlnd  --enable-fpm  --with-fpm-user=gewangtest  --enable-mbstring      --enable-phpdbg   --enable-shmop  --enable-sockets --enable-sysvmsg  --enable-sysvsem --enable-sysvshm --enable-zip --with-zlib  --with-pear --with-openssl

2.4.上面命令没问题后输入:make (编译),如果没报错编译完毕。会出现如下提示:Build complete.

Don't forget to run 'make test'.

2.5.输入 make test 测试下编译文件有没问题.

2.6.没有报错后输入 make install进行安装,如果没报错安装完毕。

  1. php配置部分
    1. 找到php-fpm.conf.default文件复制一份并命名为 php-fpm.conf(具体命令请自行查询)
    2. 将php安装源码包里的php.ini-development文件复制一份并命名为php.ini放置到php安装目录下。

(任何来自百度的安装教程都有它的碎片性,关键还是多方面借鉴和看官方文档看程序提示来安装自己的服务器环境)

2016-08-16 10:29:26 hsd2012 阅读数 3466
  • PHP底层内核源码与扩展开发

    全球第一份深入学习PHP底层内核源码与扩展开发的视频课程,CSDN,系统讲解了PHP底层源代码学习,实现原理,PHP扩展知识学习,相关开发工具运用等相关知识。是PHP程序员提高自身能力,成为底层内核级开发人员的首选入门课程。学习本课程人员好有一定的PHP/LINUX/C基础知识.

    6201 人正在学习 去看看 胡勤楼

上一次,在《Linux下源码安装php7.0.6》,安装过PHP7.0.6,本文将记录安装PHP7.0.9过程。

测试环境

Linux 2.6.32-279.el6.i686
nginx-1.9.15.tar http://nginx.org/download/nginx-1.9.15.tar.gz
php-7.0.9.tar.gz http://am1.php.net/distributions/php-7.0.9.tar.gz

安装Nginx

wget http://nginx.org/download/nginx-1.9.15.tar.gz

tar -zxvf nginx-1.9.15.tar.gz
cd nginx-1.9.15.tar.gz
./configure –prefix=/usr/local/nginx
make && make install
安装后,文件目录如下:
这里写图片描述
启动nginx
这里写图片描述
(备注,我在配置文件中设置了worker_processes 4;,所以有四个工作进程。)

安装php-7.0.9

配置前如果没有libxml2和libxml2-devel会报错如下图,所以应该更新libxml2并安装libxml2-devel,使用在线安装:
yum -y install libxml2
yum -y install libxml2-devel
报错
这里写图片描述

./configure --prefix=/usr/local/php --enable-fpm 

配置完成,截图如下:
这里写图片描述
执行make && make install
安装完成后,提示界面
这里写图片描述
可以到安装目录,查看生成的文件
这里写图片描述

需要注意的是,虽然到此,PHP安装是完成了,但是没找到配置文件,因为配置文件 php.ini需要自己从安装包中创建。
这里写图片描述
创建php-fpm.conf文件
这里写图片描述
创建www.conf文件
这里写图片描述
如果不创建*.conf 文件,启动php-fpm时候会报错,因为它是php-fpm的配置文件
这里写图片描述

Nginx与PHP的连接

在nginx.conf中添加如下文件

location ~ \.php$ {
               root html;
               fastcgi_pass   127.0.0.1:9000;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
               include fastcgi_params; 
        }

测试

启动php-fpm

这里写图片描述
默认的是监听9000端口,可以在php-fpm配置中进行相应的修改,我的配置文件路径如下

/usr/local/php/etc/php-fpm.d/www.conf

启动Nginx

这里写图片描述

编辑测试文件内容如下

<?php
  phpinfo();

测试结果如下
这里写图片描述

2015-05-11 22:04:12 lizixiang1993 阅读数 1298
  • PHP底层内核源码与扩展开发

    全球第一份深入学习PHP底层内核源码与扩展开发的视频课程,CSDN,系统讲解了PHP底层源代码学习,实现原理,PHP扩展知识学习,相关开发工具运用等相关知识。是PHP程序员提高自身能力,成为底层内核级开发人员的首选入门课程。学习本课程人员好有一定的PHP/LINUX/C基础知识.

    6201 人正在学习 去看看 胡勤楼

最近发现自己曾经配过无数次的WEB服务器出现了一些小问题,原因是我换成了Linux平台,而以前也只是配配源码的Apache服务器,现在,我需要再添加PHP语言,使得Apache能解析PHP.本次安装全是源码安装,因此早早的把CentOS里面的Apache和PHP卸载了.
下面我来介绍下安装顺序。

  • Apache安装[2.4]版本
  • PHP 安装[5.3x以上]版本

别看安装的少,实际上需要许多依赖的.所以我在装之前先把依赖安装好
第一步:安装APACHE前提

安装 apr包

wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz
tar -xvzf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --help 
查看配置安装可选择的配置项
这里我们可以看到 
--prefix=
--exec-prefix= 默认在prefix/bin下
表示的是安装路径和执行路径
./configure --prefix=/opt/apr
make && make install
cd /opt/apr/bin
ls 查看可执行文件
apr-1-config

一般apr包是能安装的,如果缺少依赖的话,清查看错误异常,然后下载依赖包编译安装,再通过 ./configure –help去查看如何安装.

apr-util包安装

wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz
tar -xvzf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --help 找到一些关键的选项
--prefix=
--with-apr= 需要有apr的支持
./configure --prefix=/opt/apr-util --with-apr=/opt/apr
make && make install

cd /opt/apr-util/bin
ls 查看可执行文件
apu-1-config 

安装好后,请不要先把这两个文件目录删除,在后面安装apache还需要用到.

pcre安装

wget http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz
tar -xvzf pcre-8.37.tar.gz
cd pcre-8.37
./configure --help | grep prefix
--prefix 可以使用
./configure --prefix=/opt/pcre
make && make install

这样三个依赖前提都已经安装好了,至于三个包分别起到什么作用,可以去搜索一下,如果介绍下去我也不是特别的懂.

第二步:安装apache
首先我们需要下载最新版本2.4.x版本

下载的时候使用命令行下载太慢,改用浏览器下载,实际是一样的.
wget http://apache.dataguru.cn//httpd/httpd-2.4.12.tar.gz
tar -xvzf httpd-2.4.12.tar.gz
cd httpd-2.4.12
./configure --help
--prefix= 
--enable-so 模块自动加载
--enable-rewrite 开启重写模块
--with-apr  依赖 apr
--with-apr-util 依赖 apr-util
--wtih-pcre  依赖pcre
执行
./configure --prefix=/opt/httpd  --enable-so   --enable-rewrite --with-apr-util=/opt/apr-util --with-apr=/opt/apr --with-pcre=/opt/pcre 
make && make install
如果没有报错,那么cp apr 和 apr-util 两个包到srclib中就没有必要了.

第三步,将apache设置成服务项

cp /opt/httpd/bin/apachectl /etc/rc.d/init.d/httpd
vi /etc/rc.d/init.d/httpd
第1#!/bin/sh
在第2行加入
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve
# HTML files and CGI.
退出后使用
chkconfig –add httpd
就可以
service httpd start|stop|status 了

这一段内容是截取网上的一些文章,自己也亲自测试过可行.

解决 “httpd: Could not reliably determine the server’s fully qualified domain name”问题

vi /opt/httpd/conf/httpd.conf
临时办法
ServerName 127.0.0.1:80
原因是开启了一个域名对应主机的模块,当然可以取消使用模块.
service httpd start
这时候就可以看到 It Works! 的文字

查看apache的配置

/opt/httpd/bin/apachectl -V
 -D HTTPD_ROOT="/opt/httpd"  apache 根目录
 -D SUEXEC_BIN="/opt/httpd/bin/suexec" 
 -D DEFAULT_PIDLOG="logs/httpd.pid" apache 主线程id
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"  错误日志
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf" 配置文件路径

第四步,安装php前提
php也是有一定的依赖的,最近了解了下php-cli 和 php-cgi 两种模式,实际上这一次安装使用php-cli的方法,这就必须依赖apache的apxs命令了,它会编译一个lib5php.so的文件.
1. libxml2包 下载地址 ftp://gd.tuwien.ac.at/pub/libxml/libxml2-2.9.0.tar.gz

libxml2其它版本地址ftp://xmlsoft.org/libxml2/

wget ftp://gd.tuwien.ac.at/pub/libxml/libxml2-2.9.0.tar.gz

tar -xvzf libxml2-2.9.0.tar.gz
cd  libxml2.9.0
./configure --help
--prefix
./configure --prefix=/opt/libxml2
make && make install
这是安装php必须要指定的一个库.

第五步,安装php
关于php的源码下载,可以从官网去找链接,这里需要告诉大家,项目不同,使用的php版本也许也不同,最好是下载与项目要求的版本一致,这样在跨平台的时候,保证可行性.
php5.4.40 下载链接:http://cn2.php.net/get/php-5.4.40.tar.gz/from/this/mirror

wget http://cn2.php.net/get/php-5.4.40.tar.gz/from/this/mirror
这里建议使用浏览器下载 用wget太慢了
tar -xvzf php-5.4.40.tar.gz
cd php-5.4.40
./configure --help
--prefix php 根目录
--with-libxml-dir 支持依赖库路径
--with-config-file-path  php.ini文件存放生效目录
--with-config-file-scan-dir
--with-apxs  让apache支持cli模式的php
--bindir bin执行目录
--sbindir sbin执行目录
执行以下代码
 ./configure  --prefix=/opt/php --with-libxml-dir=/opt/libxml2/ --with-config-file-path=/etc/php/php-5.4.40  --with-apxs2=/opt/httpd/bin/apxs
 make && make install

然后需要修改httpd.conf文件 加入解析脚本type

vi /opt/httpd/conf/httpd.conf
AddType  application/x-httpd-php  .php .phtml 
#细心的人应该看到 LoadModule 里面有一个libphp5.so 这就是通过apxs命令编译的模块,默认放在apache下的modules里面.

接下来我们测试apache是否支持php,不用多说,就写一个index.php,里面有phpinfo();

service httpd restart
vi /opt/httpd/htdocs/index.php

index.php

<?php
phpinfo();
?>

其实我们的机子里有两个php版本,而能用命令行直接读取的是旧的5.3.29版本,我把它的php命令软链接到path目录下.而apache读取的是我新安装的php5.4.40版本.说明apache读取的libphp5.so这个编译模块的内容.所以换一个php版本还需要再次编译咯.

tips小知识点
1. 查看php安装时 configure 内容

cd /opt/php/bin
./php -i | grep configure

2.查看php已经的安装模块

./php -m
[PHP Modules]
Core
ctype
date
dom
ereg
fileinfo
filter
hash
iconv
json
libxml
pcre
...
  1. 查看apache配置信息
cd /opt/httpd/bin
./apachectl -V
[root@lzx bin]# ./apachectl  -V

Server version: Apache/2.4.12 (Unix)
Server built:   May 13 2015 06:22:26
Server's Module Magic Number: 20120211:41
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   32-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/opt/httpd"
 -D SUEXEC_BIN="/opt/httpd/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

这样基本的安装apache和php就完成了,有机会可以完善一下,添加php-cgi的安装模式.安装配置好后,就是为了之后编译phalcon框架.下次会介绍phalcon框架的编译和安装使用.

小贝_php源码安装

阅读数 1011

linux源码安装禅道

阅读数 217

没有更多推荐了,返回首页