本文共 8425 字,大约阅读时间需要 28 分钟。
整理以前的资料,发现最近 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 libtoolzlib
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包安装
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 前面增加一个 分号 ; 就可以屏蔽这个功能模块了。
转载地址:http://oybvi.baihongyu.com/