linux下apache,mysql,php的安装
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux下php5+apache2+msyql5安装
根据自己这些天研究在参考了一些资料后,总结了一下安装步骤,还有一些安装时遇到的问题的解决方法。
安装需要的压缩文件存放:/root/home/
一:安装apache2。
1.安装
# cd /root/home/
# tar -zvxf httpd-2.2.6.tar.gz
解压httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# mkdir -p /usr/local/apache2
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all
或者# ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-rewrite
# make
# make install
安装apache
# vi /usr/local/apache2/conf/httpd.conf
#ServerName :80 在其下增加
ServerName :80
保存退出,现在就这么简单配置apache。
# /usr/local/apache2/bin/apachectl -k start
启动apahce,
用浏览器查看http://192.168.1.192得到it works,说明apache已经配置成功了。
# /usr/local/apache2/bin/apachectl -k stop
停止apache。
# /usr/local/apache2/bin/apachectl -k start
启动 apache
2.设置开机自动启动apahce服务
有两种方法可以让Apache在系统启动时自动启动
(1).在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/apache2/bin/apachectl start
(2).将apache注册为系统服务
首先将apachectl命令拷贝至/etc/rc.d/init.d目录下,改名为httpd
使用编辑器打开httpd文件,并在第一行#!/bin/sh下增加两行文字如下
# chkconfig: 35 70 30
# description: Apache
接着注册该服务
chkconfig –add httpd
一切OK了,启动服务
service httpd start
其中所增加的第二行中三个数字第一个表示在运行级别3和5下启动apache,第二、三是关于启动和停止的优先级配置,无关紧要。
二:安装mysql
# cd /root/home/
# tar -zvxf mysql-5.0.45-linux-i686-glibc23.tar.gz
# mkdir -p /usr/local/mysql
将mysql-5.0.45-linux-i686-glibc23内的所有文件复制到/usr/local/mysql下 # cp -r mysql-5.0.45-linux-i686-glibc23 /usr/local/mysql
# cp /usr/local/mysql/support-files/f /etc/f
以上两个操作分别是将解压后的mysql(mysql-5.0.45-linux-i686-glibc23)文件下的所有文件复制拷贝到指定的目录下。 并将f 文件复制到/etc/f
添加mysql用户及用户组
# groupadd mysql
# useradd -g mysql mysql
修改mysql目录权限
# chown -R root /usr/local/mysql
# chgrp -R mysql /usr/local/mysql
# chown -R mysql /usr/local/mysql/data
生成mysql系统数据库,忘了加不加&了
# cd /usr/local/mysql
# ./scripts/mysql_install_db --user=mysql &
启动mysql服务
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如出现 Starting mysqld daemon with databases from /usr/local/mysql/data代表正常启动mysql服务了, 按Ctrl+C 跳出
修改 mysql 的 root 密码
# /usr/local/mysql/bin/mysqladmin -u root -p password "123456"
三:安装php所需库
a.安装 jpeg6
1.、建立目录:
# mkdir -p /usr/local/jpeg6
# mkdir -p /usr/local/jpeg6/bin
# mkdir -p /usr/local/jpeg6/lib
# mkdir -p /usr/local/jpeg6/include
# mkdir -p /usr/local/jpeg6/man
# mkdir -p /usr/local/jpeg6/man1
# mkdir -p /usr/local/jpeg6/man/man1
以上操作建立指定目录
2.安装
# cd /root/home/ 进入目录/home
# tar -zvxf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make
# make install
b.安装libpng
# cd /root/home/
# tar -zvxf libpng-1.2.8.tar.gz
# cd libpng-1.2.8
# cp scripts/makefile.std makefile
# ./configure --prefix=/usr/local/lib/
# make
# make install
c.安装 freetype
# cd /root/home/
# tar -zvxf freetype-2.1.10.tar.gz
# cd freetype-2.1.10
# mkdir -p /usr/local/freetype
# ./configure --prefix=/usr/local/freetype
# make
# make install
d.安装zlib
# cd /root/home/
# tar -zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
# ./configure
# make
# make install
e.安装GD库
# cd /root/home/
# tar -zvxf gd-2.0.33.tar.gz
# mkdir -p /usr/local/gd2
# cd gd-2.0.33
# ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png=/usr/local/lib/ --with-zlib=/usr/local/lib/ --with-freetype=/usr/local/freetype/
# make
# make install
f.安装Curl库
# cd /root/home/
# tar -zxf curl-7.15.0.tar.gz
# mkdir -p /usr/local/curl
# cd curl-7.15.0
# ./configure --prefix=/usr/local/curl
# make
# make install
四:安装php5必须有libxml2支持
a.安装libxml2
# cd /root/home/
# tar -zxf libxml2-2.6.19.tar.gz
# cd libxml2-2.6.19
# mkdir -p /usr/local/libxml2
# ./configure --prefix=/usr/local/libxml2
# make
# make install
b.安装 libxslt(可选安装,你可以不安装)
# cd /home/xiutuo/software/
# tar -zxf libxslt-1.1.15.tar.gz
# mkdir -p /usr/local/libxslt
# cd libxslt-1.1.15
# ./configure --prefix=/usr/local/libxslt --with-libxml-prefix=/usr/local/libxml2
# make
# make install
以上操作是安装php之前需要安装的(扩展文件)
五.安装php5
# cd /root/home/
# tar -zvxf php-5.2.3.tar.tar
# mkdir -p /usr/local/php
# cd php-5.2.3
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-gd=/usr/local/gd2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png=/usr/local/lib --with-zlib-dir=/usr/lib/ --with-freetype-dir=/usr/local/freetype --with-curl=/usr/local/curl/ --enable-ftp --enable-soap --with-xsl=/usr/local/libxslt --enable-xslt --enable-sockets --enable-mbstring
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini
注:不同版本的php php.ini-dist 不定存在可以拷贝与其类似的文件 如php.ini-development文件
其中./configure后的
--prefix=/usr/local/php
--with-apxs2=/usr/local/apache/bin/apxs
--with-mysql=/usr/local/mysql/
--with-libxml-dir=/usr/local/libxml2
是必要的选项
--with-gd=/usr/local/gd2/
--with-jpeg-dir=/usr/local/jpeg6/
--with-png=/usr/local/l
ib
--with-zlib-dir=/usr/lib
--with-freetype-dir=/usr/local/freetype
这是让PHP支持GD库的配置选项
--with-curl=/usr/local/curl 支持CURL库
--enable-ftp 打开FTP库函数支持
--enable-soap --with-xsl=/usr/local/libxslt --enable-xslt
让PHP支持SOAP, 上面这些一般用得少, 可以去掉
六:重新配置apache2让他支持php
配置 httpd.conf 让apache支持PHP
# vi /usr/local/apache2/conf/httpd.conf
找到 AddType application/x-gzip .gz .tgz 在其下添加如下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
重启apache
# /usr/local/apache2/bin/apachectl restart
在htdocs目录里建一内容为 PHP文件, 输入URL地址查看PHP配置是否正确
ok,web环境apache2+mysql5+php5就介绍到这里。
七:安装时候遇到的问题
1.当你看到mysql有很多版本,如:
mysql-max-5.0.21-linux-i686-glibc23.tar.gz和
mysql-max-5.0.21-linux-i686.tar.gz
这俩个到底选哪个呢,请你使用如下命令来决定
# rpm -qa | grep glibc
glibc-kernheaders-2.4-8.10
glibc-common-2.3.2-11.9
glibc-2.3.2-11.9
glibc-devel-2.3.2-11.9
如果出现以上信息,请选择mysql-max-5.0.21-linux-i686-glibc23.tar.gz版本
2:编译php时出现
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter:
bad interpreter: No such file or directory
这是找不到perl解释器的缘故。
修改/usr/local/apache2/bin/apxs文件中:
/replace/with/path/to/perl/interpreter
把他替换成perl所在的路径如/opt/ActivePerl-5.8/bin/perl,
(如果你下载的是active perl5.8的rpm,他默认安装路径是/opt/ActivePerl-5.8/bin/perl)
3.安装了perl后,发现所有的文本编辑器都不能用了。
运行vi或者gedit时候,提示找不到libperl.so
到perl的安装目录下找一个libperl.so放到/usr/lib目录下就解决问题了
我的libperl.so在/opt/ActivePerl-5.8/lib/5.8.8/i686-linux-thread-multi-CORE/目录下。
如果不知道libperl.so在什么地方,可以用
# locate libperl.so
查找,或者用find命令
4.当我使用mysql-standard-5.0.20,编译php时出现mysql错误:
checking for mSQL support... no
checking for MSSQL support via FreeTDS... no
checking for MySQL support... yes
checking for specified location of the MySQL UNIX socket... no
checking for MySQL UNIX socket location... /tmp/mysql.sock
checking for mysql_close in -lmysqlclient... no
checking for mysql_error in -lmysqlclient... no
configure: error: mysql configure failed. Please check config.log for more information.
网查找说:安装PHP的时候没有指定一下mysql的安装目录。但是我已经指定了,所以这个说法是错误的,其实主要原因是 mysql-level没有装,也就是mysql的版本不对,应该换mysql-max-5.0.21版本(包含所有mysql相关内容的软件包)
5.编译php时出现
configure: error: freetype2 not found!
没有安装freetype-level
configur
e: error: libpng.(a|so) not found.
没有安装libpng-devel
6.忘了mysql的root口令怎么办
# /usr/local/mysql/support-files/mysql.server stop
# cd /usr/local/mysql/bin/
# mysqld_safe --skip-grant-tables &
# mysqladmin -u user password 'newpassword'
# mysqladmin flush-privileges
7.端口占用
#netstat -npl|grep mysqld
#kill -9 id
最常见的是:
ERROR 2002: Can't connect to local MySQL server through socket
'/tmp/mysql.sock' (111)
解决办法:
[root@test mysql]# /usr/local/mysql/bin/mysqladmin -u root /
> -S /var/lib/mysql/mysql.sock password 'your.passwd'
或者做个连接
ln -s /var/lib/mysql/mysql.sock /tmp
其实提示找不到 /tmp/mysql.sock有时也并不是/tmp目录下没这个文件,是启动
命令不对,常见的几种启动方式,如果你确定tmp下有mysql.sock这
个文件不妨试试另外的几个命令
/usr/local/mysql/bin/mysql -u root -p
/usr/local/mysql/bin/mysqld --user=mysql&
/usr/local/mysql/bin/mysqld --user=root&
/usr/local/mysql/bin/mysqld_safe --user=root&
/usr/local/mysql/bin/mysqld_safe --user=mysql&
/usr/local/mysql/bin/safe_mysqld--uer=root&(注意safe_mysqld与mysqld_safe是不同的,&表示mysql在后台运行)
STOPPING server from pid file
/usr/local/mysql/data/localhost.localdomain.pid
060304 11:46:21 mysqld ended
这是权限问题,我的mysql目录属于root用户,也属于root群组,改用mysqld_safe启动就没问题了,
大家只要注意这几个mysql,safe_mysqld,mysqld_safe,mysqld,mysqladmin.多试
几次
其实有时mysql已经正常启动了,查看mysql是否启动命令
ps -aux | grep mysqld
会看到如下类似内容
mysql 6394 0.0 1.5 10528 992 pts/3 S 16:16 0:00
/usr/local/mysql/
mysql 6395 0.0 1.5 10528 992 pts/3 S 16:16 0:00
/usr/local/mysql/
mysql 6396 0.0 1.5 10528 992 pts/3 S 16:16 0:00
/usr/local/mysql/
root 6422 0.0 1.1 2408 732 pts/3 S 16:20 0:00 grep
mysql
查看mysql是否在监听端口命令
netstat -tl | grep mysql
会看到如下类似内容
tcp 0 0 *:mysql *:* LISTEN
8.客服端无权限访问文件解决方法
/usr/local/apache2/conf /httpd.conf
添加
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
9.设置默认访问index.php
DirectoryIndex index.php index.html index.htm
10.mysql及apache启动命令
------------mysql-----------
service mysqld stop ---停止
service mysqld start ---启动
------------httpd----------
service httpd stop ---停止
service httpd start ---启动
11.Linux的PHP连接Windows的MySQL速度慢
原因是由于mysql对连接的客户端进行DNS反向解析。
有2种解决办法:
1,把client的ip写在mysql服务器的/etc/hosts文件里,随便给个名字就可以了。
2,
在 f 中加入 skip-name-resolve 。
对于第一种方法比较笨,也不实用,那么 skip-name-resolve 选项可以禁用dns解析,但是,这样不能在mysql的授权表中使用主机名了,只能使用IP。
1,当mysql的client连过来的时候,服务器会主动去查client的域名。
2,首先查找 /etc/hosts 文件,搜索域名和IP的对应关系。
3,如果hosts文件没有,则查找DNS设置,如果没有设置DNS服务器,会立刻返回失败,就相当于mysql设置了skip-name-resolve参数,如果设置了DNS服务器,就进行反向解析,直到timeout。
八:编译php动态 扩展的方法
cd ext/扩展目录 示例:
# cd ext/mysqli
找到php安装目录里的 bin/phpize
# /usr/local/php/bin/phpize
显示如下
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
这样就在 ext/mysqli 目录下生成了configure文件
再运行一下configure,根据情况指定参数,例:mysqli扩展
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config --prefix=/usr/local/mysqlimake
make
make install
把生成的 .o文件 mv 到 ext目录
然后在php.ini里把这个文件加载
extension_dir="/usr/local/php/ext"
extension=mysqli.so
九:卸载方法
卸载步骤如下:
卸载Mysql
[root@localhost ~]# rpm -qa|grep mysql
mod_auth_mysql-2.6.1-2.2
php-mysql-4.3.9-3.15
mysql-devel-4.1.20-1.RHEL4.1
mysql-4.1.20-1.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
libdbi-dbd-mysql-0.6.5-10.RHEL4.1
说明:rpm –qa | grep mysql 命令是为了把mysql相关的包都列出来,我上面的例子是Linux AS4默认安装mysql的rpm软件包列表,如果是别的Linux版本列出来的列表有可能会不一样,不过不用担心,不管是什么,卸载都从最下面的一个包开始,直到卸载掉第一个为止。
比如:在这个例子中,我们应该先卸载libdbi-dbd-mysql-0.6.5-10.RHEL4.1 方法如下:rpm –e -dbd-mysql-0.6.5-10.RHEL4.1
说明:rpm –e 是卸载rpm包的命令,后面是包名称,最后的版本号是不用打的,比如我们下一步卸载mysqlclient10-3.23.58-4.RHEL4.1包,方法如下:
rpm –e mysqlclient
卸载Apache
[root@localhost ~]# rpm -qa|grep httpd
httpd-manual-2.0.52-25.ent
system-config-httpd-1.3.1-1
httpd-2.0.52-25.ent
httpd-suexec-2.0.52-25.ent
说明:方法跟卸载Mysql一样,不用说了吧
卸载PHP
[root@localhost ~]# rpm -qa|grep php
php-odbc-4.3.9-3.15
php-4.3.9-3.15
php-mysql-4.3.9-3.15
php-pear-4.3.9-3.15
php-ldap-4.3.9-3.15
php-pgsql-4.3.9-3.15
说明:方法跟卸载Mysql一样,不用说了吧
注意:卸载的时候如果卸载不掉,系统一般会提示包的依赖关系,并且列出依赖的包的名称,先卸载提示依赖的包就可以了。
如果实在实在有卸载不掉的包,可
以加—nodeps这个参数来卸载,比如我们卸载php-4.3.9-3.15,实在卸不掉了。
就用:
[root@localhost ~]# rpm -e php-4.3.9-3.15 --nodeps
十:相关命令
Windows mysql命令
启动:net start mysql
停止:net stop mysql
------------mysql-----------
service mysqld stop ---停止
service mysqld start ---启动
# /usr/local/mysql/bin/mysqladmin start
/etc/rc.d/init.d/mysql start
------------httpd----------
service httpd stop ---停止
service httpd start ---启动
# /usr/local/apache2/bin/apachectl start
Linux关机:
init 0
Linux重启:
init 6
设IP:
setup
网卡重启:
service network restart
打开桌面:
startx
十一:无法远程登入MySQL Server解决
如果你想连接你的mysql的时候发生这个错误:
ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server
解决方法:
1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数
据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmware;
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
呵呵,本人觉得授权法比较好用.
3.sudo gedit /etc/f
找到bind-address=127.0.0.1
修改为bind-address=0.0.0.0
4.防火墙
十二:在linux下找不到mysql.sock怎么办?
Error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
Errno.: 2002
解决方法一:
因为你还没有启动mysql,当你启动mysql后,mysql.sock就会自动的生成。./bin/safe_mysqld –user=root &(这是默认的)。
如果还没有,就是MYSQL权限没给,或其它原因
解决方法二:
1)默认的mysql.sock文件是在/tmp目录下。
2)我们建立一个软连接,ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock