Loading... <h1>准备;</h1> <p>首先进入/usr/local/目录</p> <p><strong>#cd /usr/local</strong></p> <p>删除所有安装过的php mysql apache 以及libxml</p> <p>首先查看目前 /usr/local目录下面的内容</p> <p><strong>#ls –l</strong></p> <p>如果看到php5 php apache2 apache mysql mysql5 libxml libxml2字样的目录都将其删除具体命令如下</p> <p><strong>#rm –rf php5</strong> 删除php5目录</p> <p><strong>#rm –rf libxml2</strong> 删除libxml2目录</p> <p>进入home目录</p> <p><strong>#cd /home</strong></p> <p>删除已经解压缩的的安装程序</p> <p>首先查看已经解压缩了那些程序</p> <p><strong>#ls –l</strong></p> <p>注意蓝色的字样的都为已经解压缩的目录</p> <p>将其删除</p> <p>如:</p> <p><strong>#rm –rf http-2.2.11</strong></p> <p><strong>#rm –rf php-5.2.3</strong></p> <p><strong>#rm –rfmysql-5.0.41-linux-i686</strong></p> <p><strong>#rm –rf libxml2-2.6.30</strong></p> <p>删除完毕后,最好重新启动下linux操作系统</p> <p><strong>#reboot</strong></p> <h1>1:安装apache2。</h1> <p><strong>1.</strong> 进入/home目录(<strong>如果虚拟机的,先从别的地方拷到这个目录home/xxxx/下</strong>)</p> <p><strong># cd /home</strong></p> <p><strong>2.</strong> 对apache2安装文件包进行解压缩 解压httpd-2.2.11.tar.gz</p> <p><strong>#tar –zvxf httpd-2.2.11.tar.gz</strong></p> <p>解压完毕后,进入httpd-2.2.11目录</p> <p><strong># cd httpd-2.2.11</strong></p> <p><strong>3 </strong>. 在/usr/local/下面创建一个要安装过去的目录apache2</p> <p><strong># mkdir –p /usr/local/apache2</strong></p> <p>4 .配置安装环境<strong>( 设置apache的安装路径)</strong></p> <p><strong># ./configure–prefix=/usr/local/apache2 –enable-modules=so–enable-rewrite</strong></p> <p><strong>(–enable-dav 安装mod_dav模块);</strong></p> <p>5 .编译(make)和安装(make install)</p> <p><strong># make; make install</strong></p> <p>编译安装完毕后启动apache2服务器</p> <p><strong>#/usr/local/apache2/bin/apachectl -k start</strong></p> <p>用浏览器查看http://127.0.0.1,得到it works,说明apache已经配置成功了。</p> <p>系统启动时自动加载Apache:</p> <p>1. 在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/httpd/bin/httpd </p> <p>2.cp/usr/local/apache/bin/ httpd /etc/rc.d/init.d/httpd </p> <p>3.可以用servicehttpd start启动</p> <p>正常启动: /usr/local/apache2/bin/httpdstart apaceh启动</p> <p>/usr/local/apache2/bin/apachectlstop 停止 </p> <p>/usr/local/apache2/bin/apachectlrestart 重启</p> <p>6. apache以指定的用户运行;</p> <p>安装的时候,apache自动以daemon用户运行。如果想以自定义用户如www-data运行:</p> <p>$ useradd www-data</p> <p>$ vi httpd.conf</p> <p>修改其中的内容:</p> <p>user daemon 改为 user www-data</p> <p>group daemon 改为 group www-data</p> <h1>2:安装mysql</h1> <h2><strong>2.1 Mysql resource的安装</strong></h2> <p>进入home目录</p> <p><strong>#cd /home</strong></p> <p>对mysql安装文件进行解压缩</p> <p><strong># tar -zvxfmysql-5.0.41-linux-i686.tar.gz</strong></p> <p><strong>进入mysql解压的源码文件目录:</strong></p> <p><strong>#cd /home/hguisu/mysql-5.0.14</strong></p> <p><strong>#设置mysql的安装路径:</strong></p> <p><strong>./configure–prefix=/usr/local/mysql </strong></p> <p><strong>编译,进行安装:</strong></p> <p><strong>make && make install</strong></p> <h2><strong>2.2 Mysql binary的安装</strong></h2> <p>进入home目录</p> <p><strong>#cd /home</strong></p> <p>对mysql安装文件进行解压缩</p> <p><strong># tar -zvxf mysql-5.0.41-linux-i686.tar.g</strong></p> <p><strong><span style="text-decoration:underline"> </span></strong></p> <p><strong>#移动解压缩的内容到要安装的目录</strong></p> <p><strong>#mv mysql-5.0.41-linux-i686 /usr/local/mysql)</strong></p> <p><strong>(cp /home/hguisu/mysql-5.0.41-linux-i68/* /usr/local/src/mysql</strong></p> <p>添加mysql用户及用户组</p> <p><strong># groupadd mysql </strong> –应该已经存在了</p> <p><strong>#useradd –d/usr/local/mysql/data –s /sbin/nologin –g mysql mysql </strong>–应该已经存在了</p> <p>进入/usr/local/mysql目录中</p> <p><strong>#cd /usr/local/mysql</strong></p> <p>修改mysql目录权限</p> <p><strong># chown -R root/usr/local/mysql</strong></p> <p><strong># chown -R mysql/usr/local/mysql/data</strong></p> <p><strong># chgrp -R mysql/usr/local/mysql</strong></p> <p>生成mysql系统数据库</p> <p><strong># ./scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql</strong></p> <p>(basedir是mysql的安装目录)</p> <p><strong>由这个basedir参数指定二进制数据位置!</strong></p> <p>启动mysql服务</p> <p><strong>#/usr/local/mysql/bin/mysqld_safe –user=mysql &</strong></p> <p>如出现 Starting mysqld daemon with databases from /usr/local/mysql/data</p> <p>代表正常启动mysql服务了, 按Ctrl + C 跳出</p> <p>设置自动启动</p> <p><strong>#cp./support-files/mysql.server /etc/rc.d/init.d/mysqld</strong></p> <p>若提示覆盖则按y</p> <p>修改权限</p> <p><strong>#chmod 700/etc/rc.d/init.d/mysqld</strong></p> <p><strong>#chkconfig –add mysqld</strong></p> <p>测试mysql的安装</p> <p><strong>#/usr/local/mysql/bin/mysqladminping</strong></p> <p><strong>#/usr/local/mysql/bin/mysqladminversion</strong></p> <p><strong>#/usr/local/mysql/bin/mysql</strong></p> <p>进入mysql:cd /usr/local/mysql/bin ./mysql执行,ctrl+c退出</p> <p>8、为根用户创建密码</p> <p>用SET PASSWORD命令</p> <p> <strong> #/usr/local/mysql/bin/mysql -u root</strong></p> <p> mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');</p> <p> 用mysqladmin</p> <p> ./mysqladmin -u root password "newpass"</p> <p> 如果root已经设置过密码,采用如下方法</p> <p> ./mysqladmin -u root password oldpass "newpass"</p> <p>用UPDATE直接编辑user表</p> <p> ./mysql -u root</p> <p> mysql> use mysql;</p> <p> mysql> UPDATE user SET Password =PASSWORD('newpass') WHERE user = 'root';</p> <p> mysql> FLUSH PRIVILEGES;</p> <p> 在丢失root密码的时候,可以这样</p> <p> ./mysqld_safe –skip-grant-tables&</p> <p> ./mysql -u root mysql</p> <p> mysql> UPDATE user SETpassword=PASSWORD("new password") WHERE user='root';</p> <p> mysql> FLUSH PRIVILEGES; </p> <p> 我只测试了前2种,第三种不知道怎么样</p> <p>错误:</p> <p>ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'</p> <p>解决方法:</p> <p>由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,但linux系统总是去/tmp/mysql.sock查找,所以会报错</p> <p>[root@localhost ~]# find / -name mysql.sock<br />/var/lib/mysql/mysql.sock</p> <p>1.直接指定mysql通道</p> <p>[root@localhost ~]# mysql –socket=/var/lib/mysql/mysql.sock<br />Welcome to the MySQL monitor. Commands end with ; or /g.<br />Your MySQL connection id is 2 to server version: 5.0.22</p> <p>Type 'help;' or '/h' for help. Type '/c' to clear the buffer.</p> <p>mysql></p> <p>2. 创建符号连接:</p> <p>为mysql.sock增加软连接(相当于windows中的快捷方式)。</p> <p>ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock</p> <p>eg:<br />root@localhost ~]# mysql<br />ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)<br />[root@localhost ~]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock<br />[root@localhost ~]# mysql<br />Welcome to the MySQL monitor. Commands end with ; or /g.<br />Your MySQL connection id is 3 to server version: 5.0.22</p> <p>Type 'help;' or '/h' for help. Type '/c' to clear the buffer.</p> <p>mysql></p> <p>我觉得这两个方法挺好用的</p> <h2>2.3 apt-get安装:</h2> <p>apt-get install mysql-server</p> <p>apt-get install mysql-server-core-5.1</p> <p>配置文件:/etc/mysql/my.cnf<br />启动文件位置:/etc/init.d/mysql</p> <p>执行文件:/usr/bin</p> <p>启动:/etc/init.d/mysql start 或者service mysql restart</p> <p><span style="font-family: verdana, 宋体, Arial;font-size: 13px;line-height: 24px"><strong>问题:远程访问局域网内的mysql时出现ERROR 2003 (HY000): Can't connect to MySQL server on (10061)</strong></span></p> <p><span style="font-family: verdana, 宋体, Arial;font-size: 13px;line-height: 24px">解决:my.ini(my.cnf)默认的bind-address是127.0.0.1,这样的话就算你创建的用户有可以remote访问的话 也不能通过-h 来访问。 mysql只接受localhost。 所以把bind-address屏蔽掉即可。<br /></span></p> <h1>3:安装libxml2,php5必须有libxml2支持!</h1> <p>进入home目录</p> <p><strong># cd /home</strong></p> <p>解压缩libxml2-2.6.30.tar.gz</p> <p><strong># tar -zxflibxml2-git-snapshot.tar.gz</strong></p> <p>进入刚解压缩出来的文件目录</p> <p><strong># cd libxml2-git-snapshot</strong></p> <p>配置安装目录信息</p> <p><strong># ./configure –prefix=/usr/local/libxml2 </strong></p> <p><strong>【</strong>configure: error: <strong>cannot find macrodirectory</strong> `<strong>m4</strong>' <strong>】</strong></p> <p><strong># mkdir/home/hguisu/libxml2-git-snapshot/m4 就OK 了。</strong></p> <p>编译和安装</p> <p><strong># make; make install</strong></p> <p>rpm-ivhlibxml2-2.6.23-1.2.i386.rpm </p> <p>rpm-ivh libxml2-devel-2.6.23-1.2.i386.rp</p> <p>或者<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;font-size: 13px;line-height: 23px">yum install libxml2-devel.x86_64</span></p> <h1>4 .安装php5</h1> <p>进入home目录</p> <p><strong># cd /home</strong></p> <p>解压缩php-5.2.3.tar.gz</p> <p><strong># tar -zvxf php-5.2.3.tar.gz</strong></p> <p>创建/usr/local/php安装目录</p> <p><strong># mkdir /usr/local/php</strong></p> <p>进入刚解压缩出来的目录</p> <p><strong># cd php-5.2.3</strong></p> <p>配置安装信息</p> <p><strong># ./configure–prefix=/usr/local/php –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql/ –with-libxml-dir=/usr/local/libxml2</strong></p> <p><strong>(mysql=/usr/local/mysql/ 加载mysql模块, –with-apxs2=/usr/local/apache2/bin/apxs配置http.conf,添加LoadModule)</strong></p> <p>编译安装</p> <p><strong># make;make install</strong></p> <p>复制配置文件php.ini</p> <p><strong># cp php.ini-development/usr/local/php/lib/php.ini</strong></p> <h1>5:重新配置apache2让他支持php。</h1> <p>如果安装php的时候,configure选项带有 –with-apxs2=/usr/local/apache2/bin/apxs,就不用以下这些手工配置了。</p> <p>配置 httpd.conf 让apache支持PHP</p> <p><strong># vi/usr/local/apache2/conf/httpd.conf</strong></p> <p>在vi中的命令状态(按esc可以到命令状态)按/AddType查找到下面内容</p> <p>找到 AddType application/x-gzip .gz .tgz 在其下添加如下内容(注意vi命令模式下 按键盘上的i键 进入插入编辑状态)</p> <p>AddType application/x-httpd-php .php</p> <p>AddType application/x-httpd-php-source .phps</p> <p>添加完毕后 按esc到命令状态输入:wq保存退出</p> <p>重启apache</p> <p><strong>#/usr/local/apache2/bin/apachectl stop</strong></p> <p><strong>#/usr/local/apache2/bin/apachectl start</strong></p> <p>在/usr/local/apache2/htdocs目录里建一内容为 PHP文件info.php</p> <p><strong>#vi /usr/local/apache2/htdocs/info.php</strong></p> <p>进入vi环境后 按i进入编辑模式</p> <p>输入一下内容</p> <p><?php</p> <p>echo phpinfo();</p> <p>?></p> <p>然后按esc退出编辑模式到命令模式输入:wq保存退出</p> <p>打开一个浏览器窗口在地址栏输入</p> <p>http://127.0.0.1/info.php</p> <p>如果出现配置信息的页面,就证明整个环境配置成功.</p> <h1>6、问题</h1> <h3>6.1、无法加载 mysql 扩展,请检查您的 PHP 配置。</h3> <p> 大体方法是进入php 的源码目录下的 ext/moduledir, 也就是你想要编译的模块的源码目录下, 然后以绝对 路径的方式调用已经编译好的php 的目录下的 bin/phpize 这个程序.<br /> <strong>1</strong>.进入php到源目录:<br /> cd home/hguisu/php-5.3.2/ext/mysql<br /> <strong>2. </strong>执行phpize:/usr/local/php/bin/phpize<br /> 这样, 就会在php-5.3.2/ext/mysql 目录下, 产生一系列可以单独进行configure 和 make 的 文件 (如果要清理掉它们, 运行 /php/bin/phpize –clean ).<br /> <strong>3.</strong> 之后 我们运行:<br /> ./configure–with-php-config=/php/bin/php-config –with-mysql<br /> 如果提示错误:configure: error: Cannot find MySQL header files under yes.</p> <p> 解决:在 ./configure 下参数指定 header file 的位置(即mysql安装目录),加上如下语句:<br /> –with-mysql=/usr/local/mysql<br /> <strong>4.</strong> 编译make</p> <p> <strong>5 .</strong>安装 make install <br /> <strong>整个过程也就基本完成了.</strong><br /> 注意, 编译好的模块, 一般是自动安装到大概这种关系的路径下 (我的是 bsd 系统, 别的系统或许不 一样):<br /> /php/lib/php/extensions/no-debug-non-zts-20060613<br /> 另外, win 下编译好的模块扩展名一般是dll, 而 unix 之类的系统则通常为 so.<br /> 6.设置 php.ini</p> <p> 在php.ini加入:extension=mysql.so,</p> <p> 设置扩展路径:extension_dir ="/usr/local/php/ext/".</p> <p> 把/php/lib/php/extensions/no-debug-non-zts-20060613/下的mysql.so拷到/usr/local/php/ext/"</p> <p> 然后重启 http 服务器就行了</p> <h3>6.2、无法加载 mcrypt 扩展,请检查您的 PHP 配置。</h3> <p> 解决:</p> <p> 安装 libmcrypt</p> <p> 下载libmcrypt-2.5.8.tar.gz</p> <p> 解压tar zxvf libmcrypt-2.5.8.tar.gz</p> <p> 配置./configure</p> <p> 编译 make</p> <p> 安装 make install</p> <p> 注意,这里配置的时候不需要指定安装位置,否则在以后步骤中可能出错</p> <p> 进入php的安装源文件,进入php-5.3.0/ext/mcrypt</p> <p> 运行/usr/local/php/bin/phpize</p> <p> <strong> 这时可能说没有autoconf这个软件,就装一下apt-get install autoconf,当然自己编译也可以</strong></p> <p> 再次运行/usr/local/php/bin/phpize</p> <p> 会产生configure等文件</p> <p> 然后配置./configure –with-php-config=/usr/local/php/bin/php-config</p> <p> 编译make</p> <p> 安装 make install</p> <p> 会出现提示说在某个文件夹里面产生了一个文件mcrypt.so,这时要把这个文件移动到extension_dir里面,具体extension_dir是那个,可以参照刚安装完php之后测试时显示的信息</p> <p> 然后重新编译php,回到php安装的(4)这时的配置参数要加一个–with-mcrypt</p> <p> 重新编译安装php,然后成功后,重启apache进行测试</p> <h3> 6.3、找不到mbstring</h3> <p><strong> </strong>解决:</p> <p> 进入php的安装源文件,进入php-5.3.0/ext/mbstring</p> <p> 运行:</p> <p> /usr/local/php/bin/phpize</p> <p> 会产生configure等文件</p> <p> 然后配置./configure –with-php-config=/usr/local/php/bin/php-config</p> <p> 编译make</p> <p> 安装 make install</p> <p> 会出现提示说在某个文件夹里面产生了一个文件mbstring.so,这时要把这个文件移动到extension_dir里面,具体extension_dir是那个,可以参照刚安装完php之后测试时显示的信息</p> <p> 这次不用编译了,到php的配置文件,在extension里面添加extension=mbstring.so,然后保存后重新启动apache,如果没有达到效果,那么在后面添加绝对路径</p> <h3>6.4如果自己用libmcrypt、mhash、mcrypt编译mcrypt</h3> <p>那么记得前面个两个配置时要用默认配置,不要加参数,配置mcrypt 时安装到指定位置,这样方便重新编译php,如果在编译前面2个时用了指定位置,可能在编译mcrypt时出现以下问题</p> <p> 6.3.1</p> <p> 描述:</p> <p> libmcrypt cannot be found</p> <p> 解决:</p> <p> cp /usr/local/lamp_other/libmcrypt/lib/libmcrypt.*/usr/lib/</p> <p> ln -s/usr/local/lamp_other/mhash/lib/libmhash.so.2 /usr/lib/libmhash.so.2</p> <p> 这里/usr/local/lamp_other/libmcrypt/就是安装libmcrypt的指定路径</p> <p> 6.3.2</p> <p> 描述:</p> <p> "You need at least libmhash 0.8.15to compile this program.</p> <p> 这个问题不知道怎么解决,有的说在编译mcrypt时用LD_LIBRARY_DIR=<mhash安装路径> ./configure –prefix=/usr/local/mcrypt,不过我没有成功过</p> <p> 最直接的解决办法就是得前面个两个配置时要用默认配置,不要加参数</p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信