本实验所用软件包下载地址:https://yz231.lanzous.com/iKELOfp77hg
一、环境准备
操作系统:centos6.x-x86_64
关闭selinux和iptables
1.安装编译工具 gcc、gcc-c++、make
yum -y install gcc gcc-c++ make
#若不能联网使用光盘作为yum源
2.关闭系统RPM安装包apache、mysql等服务
#为了防止rpm安装的软件和接下来安装的源码软件包冲突
#rpm -q apache;mysql
service httpd stop
service mysqld stop
禁止开机自启
chkconfig httpd off
chkconfig mysqld off
3.关闭selinux和iptables
#vim /etc/selinux/config
SELINUX=disabled
#重启生效
iptables -F
chkconfig iptables off
4.将源码包上传到服务器,使用脚本解压缩
mkdir /lamp
unzip LAMP-php7.zip
#vim tar.sh
#!/bin/env bash
cd /lamp/LAMP-php7
/bin/ls *.tar.gz > ls.list
for TAR in `cat ls.list`
do
/bin/tar -xf $TAR
done
/bin/rm ls.list
#保存退出,使用 bash tar.sh 执行该脚本对源码包进行解压缩
5.查看磁盘空间是否充足
df -hT
6.源码软件包安装报错确认和解决方案
echo $? #安装每个步骤后执行查看是否成功
./configure #此步骤报错多是依赖关系没解决或是编译工具未安装(注意关键词)
make #此步骤多是编译时选项参数书写错误、不存在、漏写等
./configure --help #检查上一个步骤
二、编译安装
1.安装libxml2
libxml2是一个xml c语言的解析器,支持c语言、c++、PHP等语言的绑定,能在多种平台上运行。
#安装依赖
yum install -y libxml2-devel python-devel
#切换到libxml2目录
cd libxml2-2.9.1
#生成Makefile,并指定安装目录
./configure --prefix=/usr/local/libxml2/
#编译并安装
make
make install
echo $?
2.安装libmcrypt
cd /lamp/LAMP-php7/libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
make
make install
安装libltdl,也在libmcrypt中,非新软件
cd /lamp/LAMP-php7/libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install #--enable-ltdl-install 配置ltdl库的安装
make && make install
3.安装mhash
mhash是基于离散数学原理的不可逆向的php加密方式扩展库,在默认情况下不开启;mhash可用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存等。
cd /lamp/LAMP-php7/mhash-0.9.9.9
./configure
make && make install
4.安装mcrypt
是php里重要的加密支持扩展库
cd /lamp/LAMP-php7/mcrypt-2.6.8
export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib/:/usr/local/lib
#变量:LD_LIBRARY_PATH用于指定libmcrypt和mhash库的位置
./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
make && make install
5.安装zlib
zlib是提供数据压缩用的函式库
cd /lamp/LAMP-php7/zlib-1.2.3
./configure
#修改配置文件,否则无法正常安装
#vim Markfile
CFLAGS=-O3 -DUSE_MMAP -fPIC
make && make install
6.安装libpng
libpng软件包含libpng库,用于解码png图片
cd /lamp/LAMP-php7/libpng-1.2.31
./configure --prefix=/usr/local/libpng
make && make install
7.安装jpeg6
jpeg6提供用于解码.jpg和.jpeg图片的库文件
mkdir /usr/local/jpeg6
mkdir /usr/local/jpeg6/bin
mkdir /usr/local/jpeg6/lib
mkdir /usr/local/jpeg6/include
mkdir -p /usr/local/jpeg6/man/man1
#此软件默认不会自动创建所需目录,需要手工建立
yum -y install libtool*
cd /lamp/LAMP-php7/jpeg-6b/
cp -a /usr/share/libtool/config/config.sub ./
cp -a /usr/share/libtool/config/config.guess ./
#覆盖原有文件
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
#--enable-shared 和--enable-static分别是建立共享库和静态库使用的libtool
make && make install
8.安装freetype
freetype库是一个开源的、高质量可移植的字体引擎
cd /lamp/LAMP-php7/freetype-2.3.5
./configure --prefix=/usr/local/freetype
make && make install
9.安装apache
(1)源码包2.4.*版本中默认没有集成apr的依赖包,所以需要提前解决依赖问题
cp -a /lamp/LAMP-php7/apr-1.4.6 /lamp/LAMP-php7/httpd-2.4.7/srclib/apr
cp -a /lamp/LAMP-php7/apr-util-1.4.1 /lamp/LAMP-php7/httpd-2.4.7/srclib/apr-util
(2)apache默认需要依赖pcre软件,但由于apache版本版本较高,则系统欲安装的pcre无法使用,所以需要人为手动安装
cd /lamp/LAMP-php7/pcre-8.34
./configure
make && make install
(3)apache的加密传输模块 mod_ssl,需要安装此软件实现
yum install openssl-devel
(4)httpd软件安装
cd /lamp/LAMP-php7/httpd-2.4.7
./configure --prefix=/usr/local/apache2 --sysconfdir=/usr/local/apache2/etc --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-ssl
make && make install
(5)修改主配置文件 httpd.conf
#vim /usr/local/apache2/etc/httpd.conf
#搜索ServerName,取消注释并修改为:
ServerName localhost:80
(6)启动apache
测试
/usr/local/apache2/bin/apachectl start
netstat -tlun |grep :80
10.安装ncurses
ncurses提供字符终端处理库,包括面板和菜单
yum install -y ncurses-devel
cd /lamp/LAMP-php7/ncurses-5.9
./configure --with-shared --without-debug --without-ada --enable-overwrite
make && make install
#若不安装ncurses编译mysql时会出错
11.安装cmake和bison
mysql5.5之后,不再使用./configure工具,而使用cmake工具代替
bison是一个自用软件,用于自动生成语法分析程序
yum install -y cmake bison
12.安装mysql
#为mysql创建运行用户
useradd -r -s /sbin/nologin mysql
cd /lamp/LAMP-php7/mysql-5.5.48
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNODASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TPC_PORT=3306
make && make install
(1)修改mysql目录的用户归属
cd /usr/local/mysql/
chown -R root .
chown -R mysql data
(2)生成配置文件,并初始化授权表
cp -a /lamp/LAMP-php7/mysql-5.5.48/support-files/my-medium.cnf /etc/my.cnf
#覆盖掉自带文件
#创建数据库授权表,初始化数据库,并添加第一个用户
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql
(3)启动mysql服务
/usr/local/mysql/bin/mysqld_safe --user=mysql &
(4)设定mysql密码
/usr/local/mysql/bin/mysqladmin -uroot password 123456
(5)登录验证
/usr/local/mysql/bin/mysql -uroot -p
13.安装PHP
cd /lamp/LAMP-php7/php-7.0.7
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql --with-gd --without-pear
make && make install
#PHP安装后需要调整相应配置
(1)生成php配置文件
mkdir /usr/local/php/etc
cp /lamp/LAMP-php7/php-7.0.7/php.ini-production /usr/local/php/etc/php.ini
(2)修改apache配置文件,使其识别*.php文件,并通过php模块进行页面解析
vim /usr/local/apache2/etc/httpd.conf
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
#检查语法配置
/usr/local/apache2/bin/apachectl -t
#查看模块
/usr/local/apache2/bin/apachectl -M
#重启apache
/usr/local/apache2/bin/apachectl restart
提示:
vim /usr/local/apache2/etc/httpd.conf
#将ServerName www.xx.com:80 取消注释并修改为 ServerName localhost:80
(3)测试php页面是否能用正常解析
#vim /usr/local/apache2/htdocs/test.php
<?php
phpinfo();
?>
浏览器访问:http://apache server ip/test.php
14.为PHP安装openssl模块
openssl是一个强大的安全套接字密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议
cd /lamp/LAMP-php7/php-7.0.7/ext/openssl/
mv config0.m4 config.m4
/usr/local/php/bin/phpize
./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
make && make install
15.为PHP安装memcache模块
memcache是一个高性能的分布式的内存对象缓存系统,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果
cd /lamp/LAMP-php7/pecl-memcache-php7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
16.修改PHP配置文件,使其识别并调用openssl和memcache模块
vim /usr/local/php/etc/php.ini
#添加:
extension_dir="/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"
extension="openssl.so";
extension="memcache.so";
重启apache,刷新web界面查看两个模块是否增加
17.安装memcached服务
yum -y install libevent-devel
cd /lamp/LAMP-php7/memcached-1.4.17
./configure --prefix=/usr/local/memcache
make && make install
#添加memcache用户,此用户不用密码,不设置密码
useradd -r -s /sbin/nologin memcache
#启动memcache服务,并设置为后台运行
/usr/local/memcache/bin/memcached -umemcache &
#检查是否启动成功,并监听了11211端口
netstat -napt |grep :11211
18.安装phpMyAdmin
cp -a /lamp/LAMP-php7/phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin
cd /usr/local/apache2/htdocs/phpmyadmin/
cp -a config.sample.inc.php config.inc.php
vim config.inc.php
#设置auth_type为http,即设置为HTTP身份认证模式
浏览器访问:http://apache server ip/phpmyadmin/index.php
19.设置apache、mysql、memcache开机自启
#通过自带脚本/etc/rc.local设置开机自动加载
#vim /etc/rc.local
#添加
/usr/local/apache2/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/memcache/bin/memcached -umemcache &
#重启验证
20.项目部署
把php项目拷贝到网站默认目录下:/usr/local/apache2/htdocs/
#注意事项:注意目录的权限和归属,防止权限过大或权限过小