centos6.5源码编译安装apache2.4.20+mysql5.6.31+php5.6.21记录笔记

centos6.5源码编译安装基本的php环境(apache2.4.20+mysql5.6.31+php5.6.21)
 
使用xshell链接到服务器,root用户操作以下内容。

检测是否安装了 gcc 和 gcc-c++
#gcc -v

安装gcc 和 gcc-c++ (没安装会导致./configure失败)
#yum install gcc
#yum install gcc-c++
 
卸载默认的低版本环境
目前发行的Linux操作系统版本中,如果选择默认全部安装,就已经安装了LAMP环境,但是版本相对都比较低。我们可以再安装一个LAMP环境和原来的并存,但是这样做没有必要,因为同时只能开启一个LAMP环境。所要我们要在安装之前,先应检查一下系统中是否已经安装了低版本的环境,如果已经安装过了,停止原来的服务运行,或者把原来的环境卸载掉。
 
1.卸载Apache
检查是否安装了httpd包
#rpm -qa | grep httpd
出现
httpd-tools-2.2.15-29.el6.centos.x86_64
httpd-2.2.15-29.el6.centos.x86_64
 
#rpm -e httpd-2.2.15-29.el6.centos.x86_64 --nodeps
#rpm -e httpd-tools-2.2.15-29.el6.centos.x86_64 --nodeps
说明:卸载软件包, --nodeps 如果有连带关系,也强制卸载
 
# cd /etc/httpd/
# rm -rf *
说明:到原来的apache安装目录下,将其所有的安装目录和文件都删掉
 
2.卸载Mysql
#rpm -qa | grep mysql
 
出现
mysql-libs-5.1.71-1.el6.x86_64
 
#rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
说明:卸载mysql
 
3.卸载Php
#rpm -qa | grep php
没有出现,说明没有
 
根目录下 建立 webscd 文件夹用于放下载的源码包
 
#cd /
#mkdir webscd
#cd  /webscd  先打开存放的目录
 
1.下载 apr 安装
下载命令 #wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz
解压命令 #tar zxf apr-1.5.2.tar.gz
#cd apr-1.5.2/
配置选项 #./configure --prefix=/usr/local/apr
#make
#make install
 
2. 安装 apr-util
#wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz
#tar zxf apr-util-1.5.4.tar.gz
#cd apr-util-1.5.4/
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make
#make install
 
3.安装pcre 不能下载pcre2 否则apache configure会报错configure: error: Did not find pcre-config script at /usr/local/pcre
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
#tar zxf pcre-8.38.tar.gz
#cd pcre-8.38/
#./configure --prefix=/usr/local/pcre
#make
#make install
 
4.安装apache 这里动态和静态编译 很有可能影响到模块
#wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.20.tar.gz
#tar zxf httpd-2.4.20.tar.gz
#cd httpd-2.4.20/
 
#./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so --enable-rewrite --with-mpm=worker
#make
#make install
 
说明: --with-mpm=worker修改apache的模块工作方式
 
5.将apache设置为系统服务
#cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
 
6.修改/etc/rc.d/init.d/httpd
#vi /etc/rc.d/init.d/httpd
按I 进入编辑状态
添加(# !/bin/sh下面)
# chkconfig: 2345 50 90
# description: Activates/Deactivates Apache Web Server
 
说明:不懂 chkconfig的数字是什么 有人说是 系统运行级别 开机时的启动顺序 关机时的关闭顺序 而且每个教程写的值不一样
 
然后esc
然后shift+zz保存退出
( cat /etc/rc.d/init.d/httpd可以查看内容)
 
7. 运行chkconfig把Apache添加到系统的启动服务组里面:
# chkconfig --add httpd
# chkconfig httpd on
然后再service httpd start
这里启动的时候出现
Apache启动出现:
[root@ www.linuxidc.com bin]# service httpd restart
AH00557: httpd: apr_sockaddr_info_get() failed for linux.64.114
AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this
message
 
解决:
[root@linux bin]# vi /usr/local/apache2/conf/httpd.conf (apache配置文件的路径)
 
修改ServerName www.example.com:80 为 ServerName localhost:80
 
顺便把用户组也修改了
User nobody
Group nobody
 
然后启动成功 httpd
 
安装myql
安装gcc-c++和gdb 之前已经安装了gcc-c++了
#yum install gdb
 
安装cmake
#yum install cmake
 
安装ncurses
#yum install ncurses-devel
 
安装bison
#yum install bison bison-devel
 
编译依赖的工具说明请参考 http://dev.mysql.com/doc/refman/5.6/en/source-installation.html
 
下载mysql
下载页面
http://dev.mysql.com/downloads/mysql/5.6.html#downloads
选择source code 最后的Generic Linux (Architecture Independent), Compressed TAR Archive
#wget http://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.31.tar.gz
#tar zxvf mysql-5.6.31.tar.gz
# cd mysql-5.6.31
 
# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
 
说明:CMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql
DEFAULT_CHARSET:指定服务器默认字符集,默认latin1
DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci
ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF
WITH_COMMENT:指定编译备注信息
WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎
SYSCONFDIR:初始化参数文件目录
MYSQL_DATADIR:数据文件目录
MYSQL_TCP_PORT:服务端口号,默认3306
MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock
 
#make
#make install
编译的参数请参考 http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
编译过程需要30分钟左右,编译并安装完成后可以看一下结果
 
配置用户
使用下面的命令查看是否有mysql用户及用户组
#cat /etc/passwd
查看用户列表
#cat /etc/group
查看用户组列表
如果没有就创建
#groupadd mysql
#useradd -r -g mysql mysql
 
确认一下创建结果
#id mysql
修改/usr/local/mysql目录权限
#chown -R mysql:mysql /usr/local/mysql
 
初始化配置
 
安装运行MySQL测试脚本需要的perl
 
#yum install perl
进入安装路径
 
#cd /usr/local/mysql
 
执行初始化配置脚本,创建系统自带的数据库和表
#scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
 
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
注意:在CentOS 6.4版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。
用的centos6.5 etc里没有这个文件
 
3)启动MySQL
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
#cp support-files/mysql.server /etc/init.d/mysql
#chkconfig mysql on
#service mysql start
--启动MySQL 成功
 
配置MySQL账号密码
MySQL启动成功后,root默认没有密码,我们需要设置root密码。
设置之前,我们需要先设置PATH,要不不能直接调用mysql
修改/etc/profile文件,在文件末尾添加
#vi /etc/profile
PATH=/usr/local/mysql/bin:$PATH
export PATH
关闭文件,运行下面的命令,让配置立即生效
#source /etc/profile
现在,我们可以在终端内直接输入mysql进入,mysql的环境了
执行下面的命令修改root密码
#mysql -uroot
mysql> SET PASSWORD = PASSWORD('123456');
若要设置root用户可以远程访问,执行
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'aju123456' WITH GRANT OPTION;
注意:这里如果是在阿里云安装,看下那个阿里云的提问里的贴,这里好像还要执行 一个命令。
mysql>exit; 退出mysql
远程访问时的密码可以和本地不同。
阿里云这里设置要进入本机设置才可以 不能远程 进入本机在实例那里的更多
 
5)配置防火墙
防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口
打开/etc/sysconfig/iptables
#vi /etc/sysconfig/iptables
在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,
下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:
#service iptables restart
一切配置完毕,你就可以访问MySQL了。
 
安装php
安装libxml2
#yum install libxml2
#yum install libxml2-devel –y
 
下载php
#wget http://cn2.php.net/distributions/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/lib --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-mbstring=all --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd -with-zlib=/usr
 
参数说明:
--prefix=/usr/local/php安装php的位置
--with-config-file-path 配置php.ini文件的位置
--with-iconv-dir iconv扩展的路径 --with-iconv-dir=/usr/local/libiconv
--with-apxs2 为ApacheHTTP服务器编译和安装扩展模块的工具
--with-mysql mysql的路径
--enable-mbstring=all mbstring函数库 如 mb_detect_encoding 函数
--with-mysql=shared,mysqlnd 不安装mysql加入这个开启pdo-mysql的时候才能不报错
 
-with-zlib=/usr 加入zlib discuz论坛的应用中心要用这个
Mysqli的参考官网内容 http://php.net/manual/zh/mysqli.installation.php
 
这里忘记设置php.ini的位置了 加入--with-config-file-path
 
#make
#make install
 
#cp php.ini-production /usr/local/php/lib/php.ini
 
这里应该使用 php.ini-production比较好, 实际环境中用这个
 
#vi /usr/local/apache2/conf/httpd.conf
确保以下字符串是否存在
LoadModule php5_module modules/libphp5.so
如果没有就加上
 
命令状态下使用 /字符串 来查找 用n查找下一个
在DirectoryIndex index.html加上index.php
DirectoryIndex index.php index.html
 
在AddType application*后面加如下一行 没有这个的话 无法执行php文件
AddType application/x-httpd-php .php .phtml
1. 告知 Apache 将特定的扩展名解析成 PHP,例如,让 Apache 将扩展名 .php 解析成 PHP。为了避免潜在的危险,例如上传或者创建类似 exploit.php.jpg 的文件并被当做 PHP 执行,我们不再使用 Apache 的 AddType 指令来设置。参考下面的例子,你可以简单的将需要的扩展名解释为 PHP。我们演示为增加.php。
 

SetHandler application/x-httpd-php

 
设置时区 在php.ini中 date.timezone = "Asia/Shanghai"
#vi /usr/local/php/lib/php.ini
 
测试 vi /usr/local/apache2/htdocs/index.php
加入“”,保存退出
在虚拟机里访问localhost 成功
 
配置扩展
先安装 m4 和 autoconf (否则使用phpize会报错)
报错为这个
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
 
#yum install m4
#yum install autoconf
 
什么时候需要用到 phpize 呢?当我们需要再加些模块,又不想重新编译php,这些我们就可以用phpize了
 
pdo mysql
#cd /webscd/php-5.6.21/ext/pdo_mysql
说明进入下载的安装包pdo_mysql扩展
 
#/usr/local/php/bin/phpize
说明 执行 phpize 命令
 
#./configure --with-php-config=/usr/local/php/bin/php-config  --with-pdo-mysql=/usr/local/mysql/
 
安装完出现这个
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
 
然后在php.ini中增加
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/pdo_mysql.so
 
找到
extension_dir 设置好基本路径/usr/local/php/lib/php/extensions/no-debug-zts-20131226/
去掉前面的注释;
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20131226/"
后面的扩展就只用写名字了
extension=pdo_mysql.so
 
然后重启httpd 生效
 
安装GD库
先安装 gd 前置库 : freetype ,jpegsrc,libpng
 
安装freetype
#wget http://ftp.yzu.edu.tw/nongnu//freetype/freetype-2.6.tar.gz 用这个下载的包有损坏 无法解压 最后直接在本地下好复制进去了
#tar zxf freetype-2.6.tar.gz
#cd freetype-2.6
#./configure --prefix=/usr/local/freetype && make && make install
说明:配置和make 可以一起写
 
安装 jpegsrc
#wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz
#tar zxf jpegsrc.v9b.tar.gz
#cd jpeg-9b
#CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/jpeg && make && make install
#mkdir -p /usr/local/jpeg/include
#mkdir -p /usr/local/jpeg/lib
#mkdir -p /usr/local/jpeg/bin
#mkdir -p /usr/local/jpeg/man/man1
 
安装 libpng
#wget http://jaist.dl.sourceforge.net/project/libpng/libpng15/1.5.27rc01/libpng-1.5.27rc01.tar.gz
#tar zxf libpng-1.5.27.tar.gz
#cd libpng-1.5.27
#CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/libpng && make && make install
 
进入gd扩展包的路径
#cd /webscd/php-5.6.21/ext/gd
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype
#make
#make install
 
然后在php.ini中增加
extension=gd.so  前提是路径已设置
 
安装zip的扩展 可以使用解压缩
cd /webscd/php-5.6.21/ext/zip
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
 
然后再php.ini中配置
extension=zip.so
 
/usr/local/php/bin/php -m 可以查看php有哪些模块
 
修改上传大小超时限制 php.ini
file_uploads = on是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹(moodle可以不改)
upload_max_filesize = 16m ;允许上传文件大小的最大值. 默认为2
修改 post_max_size = 20m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒 memory_limit = 128m ;每个PHP页面所吃掉的最大内存,默认128M 没修改
 
配置虚拟主机
将/usr/local/apache2/conf/httpd.conf的
 
Include conf/extra/httpd-vhosts.conf打开
 
开启url重写
LoadModule rewrite_module modules/mod_rewrite.so
 
配置/usr/local/apache2/conf/extra/httpd-vhosts.conf文件
 

DocumentRoot "/www/zhangxingju"

AllowOverride none
Require all granted
Order allow,deny
Allow from all

ServerName www.zhangxingju.com
ErrorLog "logs/www.zhangxingju.com-error_log"
#CustomLog "logs/www.zhangxingju.com_log" common

 
重启httpd 修改生效
 
虚拟机需要关闭防火墙
service iptables stop
在本机配置host文件, 然后访问域名,成功