整理以前的资料,发现最近 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即可
/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 前面增加一个 分号 ; 就可以屏蔽这个功能模块了。