linux centos6.5 2.6.32-431.el6.x86_64 php5.5.9 apache2.4.7 mysql5 最新快速编译安装

整理以前的资料,发现最近 LAMP 组合的许多版本都跟不上时代了,最新的环境还是想尝试挑战下

测试环境 centos6.5 2.6.32-431.el6.x86_64 

需要提前安装yum 不会的 猛点这里


需要下载的软件源码

首先确保你的系统是centos5或者centos6


先备份你系统自带的repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
切换为root用户
cd /etc/yum.repos.d/
如果你是centos5用户就用
wget http://mirrors.163.com/.help/CentOS5-Base-163.repo
如果是centos6用户就使用
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo


然后修改名字
mv CentOS6-Base-163.repo CentOS-Base.repo
清除缓存 建立新缓存
[root@localhost ~]# yum clean all (清除缓存)
[root@localhost ~]# yum makecache (建立新缓存)


yum install gcc




http://apache.dataguru.cn/apr/apr-util-1.5.3.tar.gz
http://apache.dataguru.cn/httpd/httpd-2.4.9.tar.gz
http://apache.dataguru.cn/apr/apr-1.5.1.tar.gz


apr
./configure


apr-util
./configure --with-apr=/usr/local/apr
//下面这两行是安装后提示安装的默认目录自己留着后面用
/usr/bin/install -c -m 644 aprutil.exp /usr/local/apr/lib
/usr/bin/install -c -m 755 apu-config.out /usr/local/apr/bin/apu-1-config






pcre
http://www.pcre.org/
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz
yum install gcc*
./configure


apache
./configure \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr/bin/apu-1-config \
--with-pcre \
--enable-so \
--enable-rewrite


/usr/local/apache2/
/usr/local/apache2/bin/apachectl -k restart


没问题的话,打开浏览器输入IP地址就可以看到成功了


如果不出来那就是默认防火墙阻拦了,好办,清空规则
[root@localhost yum.repos.d]# iptables -F
[root@localhost yum.repos.d]# service iptables save
[root@localhost yum.repos.d]# service iptables restart
[root@localhost yum.repos.d]# 



下面安装php,这里我使用的最简单的配置,然后自己需要什么功能 增加什么功能

php安装
yum install libtool

zlib
http://zlib.net/zlib-1.2.8.tar.gz
./configure


http://cn2.php.net/distributions/php-5.5.12.tar.gz

问题:
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
checking for xml2-config path... 
configure: error: xml2-config not found. Please check your libxml2 installation.
[root@localhost php-5.5.9]#

下载rpm包安装
ftp://rpmfind.net/linux/centos/6.5/os/x86_64/Packages/libxml2-devel-2.7.6-14.el6.x86_64.rpm
ftp://rpmfind.net/linux/centos/6.5/os/x86_64/Packages/libxml2-2.7.6-14.el6.x86_64.rpm

OK

2014-03-22修正问题

今天换了个VPS重新编译上面的rpm包安装不上,还是用在线的yum试试,于是,,,,哈!可以了。

如果编译不成功,那么用在线的yum安装下

yum install libxml2

yum install libxml2-devel

这样就ok,继续重新编译安装php即可





./configure \
--prefix=/usr/local/php \
--with-libdir=/usr/lib64 \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--with-apxs2=/usr/local/apache2/bin/apxs


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


编辑apache配置文件
vi /usr/local/apache2/conf/httpd.conf
增加
AddType application/x-httpd-php .php


编辑php.ini配置文件
vi /usr/local/php/etc/php.ini
修改
date.timezone=PRC
然后保存退出
重新启动apache服务器
/usr/local/apache2/bin/apachectl -k restart


到此已经支持PHP了,目前只是支持基础的PHP 如果需要 扩展功能,继续看




安装mysql

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

编译安装mysql


如果错误

-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH) 
CMake Error at cmake/readline.cmake:82 (MESSAGE):
  Curses library not found.  Please install appropriate package,




先安装 ncurses-devel 包
yum install ncurses-devel
再删除刚才编译生成的 CMakeCache.txt 文件
rm CMakeCache.txt



yum install gcc gcc-c++
yum install ncurses-devel


mkdir -p /tmp
cd /tmp
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
wget http://dx3.mycodes.net/201105/mysql-5.5.12.tar.gz
wget http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz




cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_USER=mysql



[root@localhost mysql-5.5.12]# useradd mysql
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
ln -s /usr/local/mysql/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16
mkdir -p /var/mysql/
mkdir -p /var/mysql/data/
mkdir -p /var/mysql/log/
chown -R mysql:mysql /var/mysql/
cd support-files/
cp my-large.cnf /var/mysql/my.cnf
cp mysql.server /etc/rc.d/init.d/mysqld


/usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/var/mysql/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/var/mysql/data \
--user=mysql


chmod +x /etc/init.d/mysqld
 
vi /etc/init.d/mysqld(编辑此文件,查找并修改以下变量内容:)
basedir=/usr/local/mysql
datadir=/var/mysql/data


chkconfig --add mysqld
chkconfig --level 345 mysqld on
 
启动服务:
 
service mysqld start
 

2014-03-22新遇到的问题总结

到这里启动的时候不知道什么情况还是之前初始化数据库之类的操作,反正是误操作了!结果提示了

[root@localhost ~]# service mysqld restart
 ERROR! MySQL server PID file could not be found!
Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
[root@localhost ~]# 

解决方法 rm -f /etc/my.cnf  

原因:默认是从预先初始化数据库的路径,而不是/etc/my.cnf这个文件,所以产生了干扰,无法启动


这个问题网上找了很久,大概前后折腾了2小时,网上提到说,权限,文件,等等,我这里发现时my.cnf的配置问题

有人肯定会说,不是编译的时候预编译的my.cnf路径是--defaults-file=/var/mysql/my.cnf \ 这个是,于是发现了问题

如果在./etc/my.cnf存在的话会干扰启动,所以之前装了myslq的或者编译的时候错误手动启动生成/etc/my.cnf这个文件的,删除就可以了

删除/etc/my.cnf这个文件,默认就是从我们初始化数据库的配置启动了,到此特别编辑下,免得大家遇到问题疑惑,如果大家遇到问题请继续留言,我会继续补充完善



设置密码:
 
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql




/usr/local/mysql/bin/mysqladmin password [new-password]


/usr/local/mysql/bin/mysqladmin password 'wodemima'


测试连接
/usr/local/mysql/bin/mysql -u root -p
输入上面设置的密码就可以了

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、


我们需要php支持mysql扩展

编译php的模块

如果php源码有扩展,可以到

[root@localhost 2]# cd /a/2/php-5.5.9/ext/
[root@localhost ext]# ls
bcmath              fileinfo   mbstring   pdo_firebird  shmop      tokenizer
bz2                 filter     mcrypt     pdo_mysql     simplexml  wddx
calendar            ftp        mssql      pdo_oci       skeleton   xml
com_dotnet          gd         mysql      pdo_odbc      snmp       xmlreader
ctype               gettext    mysqli     pdo_pgsql     soap       xmlrpc
curl                gmp        mysqlnd    pdo_sqlite    sockets    xmlwriter
date                hash       oci8       pgsql         spl        xsl
dba                 iconv      odbc       phar          sqlite3    zip
dom                 imap       opcache    posix         standard   zlib
enchant             interbase  openssl    pspell        sybase_ct
ereg                intl       pcntl      readline      sysvmsg
exif                json       pcre       recode        sysvsem
ext_skel            ldap       pdo        reflection    sysvshm
ext_skel_win32.php  libxml     pdo_dblib  session       tidy
[root@localhost ext]# 


如果要增加什么模块功能,进入到模块目录

例如需要curl支持

cd /a/2/php-5.5.9/ext/curl

//////////////////////////
curl扩展、
安装curl
http://curl.haxx.se/download/curl-7.35.0.tar.gz
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-curl=/usr
[root@localhost curl]# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20121212/






///////////////////////////

///////////////////////////
mongodb扩展

这个扩展没有默认的,那就从php官方下载一个php扩展,解开目录后进入模块目录
http://pecl.php.net/package/mongo
http://pecl.php.net/get/mongo-1.4.5.tgz
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
/////////////////////////////


使php支持pdo
cd /a/2/php-5.5.9/ext/pdo
/usr/local/php/bin/phpize
./configure \
--with-php-config=/usr/local/php/bin/php-config \
--enable-pdo=shared


echo "extension= pdo.so" > /usr/local/php/etc/php.d/pdo.so.ini








使php支持pdo_mysql
cd /a/2/php-5.5.9/ext/pdo_mysql
/usr/local/php/bin/phpize
./configure \
--with-php-config=/usr/local/php/bin/php-config \
--with-pdo-mysql=/usr/local/mysql


出现这个问题
make: *** [pdo_mysql.lo] Error 1
解决方法是--with-pdo-mysql=/usr/local/mysql没有增加


echo "extension= pdo_mysql.so" > /usr/local/php/etc/php.d/pdo_mysql.so.ini




使php支持mysql
cd /a/2/php-5.5.9/ext/mysql
/usr/local/php/bin/phpize
./configure \
--with-php-config=/usr/local/php/bin/php-config \
--with-mysql=/usr/local/mysql
echo "extension= mysql.so" > /usr/local/php/etc/php.d/mysql.so.ini




使php支持mysqli
cd /a/2/php-5.5.9/ext/mysqli
/usr/local/php/bin/phpize


[root@localhost mysqli]# find / -name "mysql_config"
/a/2/mysql-5.5.12/scripts/mysql_config
/usr/local/mysql/bin/mysql_config
[root@localhost mysqli]# 
找到mysql_config
./configure \
--with-php-config=/usr/local/php/bin/php-config \
--with-mysqli=/usr/local/mysql/bin/mysql_config


echo "extension= mysqli.so" > /usr/local/php/etc/php.d/mysqli.so.ini



需要什么功能都先编译上面的模块,然后下面的 写入配置文件

我这里使用的编译php的时候指定了 php.ini 目录 和 自动加载 ini配置文件的目录

所以只要增加ini配置文件就可以达到增加功能,模块是上面的编译出来的so模块,默认目录是/usr/local/php/lib/php/extensions/no-debug-zts-20121212

如果编译安装目录是其他目录,那么把下面的改一下目录就可以extension_dir =


 ////////////////////////////////////

这里增加模块路径
echo 'extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20121212"' > /usr/local/php/etc/php.d/extensions.so.dir.ini
echo "extension= mongo.so" > /usr/local/php/etc/php.d/mongo.so.ini
echo "extension= mysqli.so" > /usr/local/php/etc/php.d/mysqli.so.ini
echo "extension= curl.so" > /usr/local/php/etc/php.d/curl.so.ini
/usr/local/apache2/bin/apachectl -k restart
////////////////////////////////////


到此,php功能也可以编译增加了,如果不需要这个模块,不需要删除,只要在extension 前面增加一个  分号 ;  就可以屏蔽这个功能模块了。

你可能感兴趣的:(apache,linux,mysql,扩展,php5)