Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1211729
  • 博文数量: 212
  • 博客积分: 10450
  • 博客等级: 上将
  • 技术积分: 1957
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-23 09:00
文章分类

全部博文(212)

文章存档

2012年(1)

2011年(16)

2010年(11)

2009年(9)

2008年(22)

2007年(36)

2006年(117)

分类: LINUX

2006-05-04 21:49:35

'./localhost-bin.1' not found的解决办法

系统:turbolinux Desktop 10 kernel 2.6.8-4
zlib-1.2.1-3(此处我留到了最后,看过本文的可以先安装)
php-4.3.11
mysql-5.0.2-alpha
apache-2.0.53
ZendOptimizer-2.5.7-linux-glibc21-i386

一路 rm -rfi 卸掉了原来的PHP、MYSQL、APACHE、JSD
因为我用的是turbo desktop,所以我原来的东西并非用RPM包安装的,所以也用不上
rpm -e
这个命令卸载软件包,但是大家一定要牢记这个命令,这对以将很有帮助。
例:
我们先用rpm -qa这个命令查询系统上是否安装过apache软件(linux系统中httpd就是apache)
[root@linuxsir01 root]# rpm -qa | grep httpd
redhat-config-httpd-1.1.0-5
httpd-devel-2.0.47-10
httpd-manual-2.0.47-10
httpd-2.0.47-10
[root@linuxsir01 root]# rpm -e httpd-2.0.47-10
这样就完成了httpd-2.0.47-10这个软件包的卸载。其他的软件包
也用同样的方法卸载,和http有关的软件包你可以完全的去卸载。
这里我们用的源代码编译安装方式,所以要确认一下系统是否安装了gcc

[root@localhost mysql-5.0.2-alpha]# gcc -v
Reading specs from /usr/lib/gcc-lib/i586-pc-linux/3.3.1/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --enable-languages=c,c++,objc,java,f77 --host=i586-pc-linux --build=i586-pc-linux --program-suffix=-3.3.1
Thread model: posix
gcc version 3.3.1
我的已经带了,是3.3.1版本,你没有的话,请另外安装。

一、解压、安装mysql
[root@localhost tmp]tar zxvf mysql-5.0.2-alpha.tar.gz
解压后会在当前的目录下产生一个mysql-5.0.2-alpha目录。
进入mysql-5.0.2-alpha目录
[root@localhost tmp]cd mysql --->[Tab] 确认
这里的[Tab]就是用linux命令自动补全。

[root@localhost mysql-5.0.2-alpha]#./configure \
> --prefix=/usr/local/mysql
> --with-extra-charsets=all

选项说明:
--prefix=/usr/local/mysql是指安装mysql的路径
这里我安装的路径是/usr/local/mysql,你可以指定不同的路径
--with-extra-charsets=all 让mysql支持多语言
常用的还有
--with-unix-socket-path=指定mysql.sock存放路径,如果不加这个参数的,默认mysql.sock存放路径是/tmp/mysql.sock
其他的还有很多,我也不懂。这里我只是指定了2个参数。

congfigure之后,就开始编译了

[root@localhost mysql-5.0.2-alpha]#make
如果你确信以上的的步骤符合你的系统的话可以把编译和安装命令一起输入:
[root@localhost mysql-5.0.2-alpha]#make && make install

编译结果没有出错的话,那么安装mysql工作我们已经完成了一半了。接着
[root@localhost mysql-5.0.2-alpha]# make install
完成安装。

我们得把文件my.cnf文件放到/etc/目录下。让mysql服务器启动时能找到它。

安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql目录中,配制文件有几个,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf
,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要;
[root@localhost mysql-5.0.2-alpha]# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

接着创建MySQL授权表, 否则数据库也是启动不了。
mysql_install_db,这个命令的用途就是做这个的。mysql_install_db这个命令应该已经安装到了/usr/local/mysql/bin这个目录中。

[root@localhost mysql]#bin/mysql_install_db

看看mysql目录下是不是多了一个 var 目录,在到var目录里面看看,是不是还有两个目录 mysql test ,mysql目录下应该有一些文件,test目录应该是空的。
现在 var 目录下只有两个目录 没有别的文件,那是因为我们还没有启动mysql
[root@localhost mysql-5.0.2-alpha]# /usr/local/mysql/bin/mysqld_safe &
[1]+  Exit 1                  /usr/local/mysql/bin/mysqld_safe
[root@localhost mysql-5.0.2-alpha]#
看到上面的信息表示我们已经成功启动了mysql
刚才启动mysql命令是初始化启动方式,以后的启动我们不会使用这个命令。

在启动mysql过程中你可能会遇到和下面类似的这种情况:

[root@localhost mysql]# bin/mysqld_safe &
[1] 14587
[root@localhost mysql]# Starting mysqld daemon with databases from /usr/local/mysql/var
STOPPING server from pid file /usr/local/mysql/var/localhost.localdomain.pid
050407 01:44:15 mysqld ended
[1]+ Done bin/mysqld_safe

这时我们应该看看错误记录文件
localhost.localdomain.err
位置在/usr/local/mysql/var/下面。寻找出错的原因,或则把错误信息发布到网络,请求别人的帮助。
     说道这里我还要嘱咐一下新手,因为我为此增经感到恼怒。不要把求助贴的标题写的过于简单,如:求助、 请帮忙、救救我。
如果无法准确表达要求助的信息标题,最好的办法是把错误信息作为标题,这样别人不用看具体的内容就知道是否能帮助你。以前我就因为我不懂,因此无法得到求助,以至我故意去诋毁某个论坛,也导致我的帐号被K。

    好了看看错误消息:

[root@localhost mysql]# more /usr/local/mysql/var/localhost.localdomain.err
050407 01:47:18 mysqld started
/usr/local/mysql/libexec/mysqld: File './localhost-bin.1' not found (Errcode: 13
)
050407 1:47:18 [ERROR] Could not use localhost-bin for logging (error 13). Turn
ing logging off for the whole duration of the MySQL server process. To turn it o
n again: fix the cause, shutdown the MySQL server and restart it.
050407 1:47:18 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
050407 01:47:18 mysqld ended

如果出现这种错误消息,说明是数据库目录权限的问题造成的。也就是无法在数据库的目录(var目录)中创建 ibdatal 文件。这时我们只要改变一下var目录的权限就可以了
[root@localhost mysql]#chmod -R 1777 var/

再次启动mysql,我们到 var 目录看看是不是多了几个文件
ibdata1
ib_logfile0
ib_logfile1

localhost.localdomain.err 这个就是刚才启动失败的错误日志,既然成功了,我们可以删除它,以后再次出现错误的话,系统会重建错误日志,这样查找错误也会比较容易。不过实际的网络管理中不推荐这样做。

以后我们的启动可以从mysql的脚本中启动,在 /usr/local/mysql/share/mysql/目录下有一个 启动mysql的文件 mysqld.server
我们可以把他复制到/etc/rc.d/init.d/目录并且改名为mysql

[root@localhost mysql]#cp mysqld.server /etc/rc.d/init.d/mysql

启动
/etc/rc.d/init.d/mysql start
停止
/etc/rc.d/init.d/mysql stop
重启:
/etc/rc.d/init.d/mysql restart

费了半天话事情还没有说明白,呵呵

验证一下mysql是不是真的启动了,最好的办法就是用客户端去连接mysql


[root@localhost mysql]# bin/mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14 to server version: 5.0.2-alpha

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

启动成功

看看是不是有2个数据库,应该和var目录下的2个目录名字一样
mysql
test

mysql> show databases
    -> ;
+----------+
| Database |
+----------+
| mysql    |
| shuifu   |
| test     |
+----------+
3 rows in set (0.00 sec)

我这里已经有3个数据库了,shuifu 是我昨天建立的,不要误会。
刚才我为什么我输入的命令没有被执行?因为我没有输入 ;
; 符号 是mysql结束符,你想让mysql执行你的指令就必须输入 ;

mysql> exit
Bye
[root@localhost mysql]#
退出数据库。
差点忘了还要给数据库加密码
在mysql/bin目录下有个mysqladmin工具是用来管理和操作mysql用的,我们用他来给 root 加上密码
[root@localhost mysql]#bin/mysqladmin -uroot password 123456
这样我们就给root设置了 123456 这个密码

再次登录
[root@localhost mysql]# bin/mysql
上次我们使用这个命令连接mysql,看看密码是否生效。
[root@localhost mysql]# bin/mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@localhost mysql]#
进不去了,说明密码设置成功。

我们在用密码试试,这时应该说明是什么用户登录,这里我们用的是 root 这个用户。

[root@localhost mysql]# bin/mysql -uroot -p
Enter password:   这里密码是不显示的,不要按错键盘就行
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18 to server version: 5.0.2-alpha

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

顺便说几个管理数据库的常用命令,看到论坛里有不少问如何导入数据库的贴子。
查看数据库:
mysql> show databases

新建数据库:
mysql> create database [新的数据库名]

删除数据库:
mysql> drop database  [要删除的数据库名]

指定一个数据库为当前数据库
mysql>use  [数据库名]

备份数据库:
[root@localhost mysql]# /usr/local/mysql/bin/mysqldump -uroot -p 123456 > /root/shuifu.sql
Enter password: 这里输入数据库的密码
这个命令就是备份上面的 shuifu 这个数据库
备份的文件名就是 shuifu.sql

导入数据库:
[root@localhost mysql]#/usr/local/mysql/bin/mysqldump -uroot -p 123456 < /home/shuifu.sql
Enter password:
这个命令就是把刚才我们备份的shuifu.sql这个数据库文件导入到数据库中。
注意看清楚<  >,应该知道了吧,<  导入。 > 导出。


未完待续 ----->> apache的安装

shuifu 2005-4-7 10:44

安装php过程中,最主要的是能否确认你的系统 是否已经满足条件,如果满足编译条件的话,一般都会很顺利。但是我在这里讲的也就是 我在编译各php版本的
过程中遇到的一些问题,和我的解决方法,也包括一些错误信息,给大家参考。
为了能多给出一些错误信息和解决办法,我下面有一部分错误信息是以前发表在其他论坛上的求助贴,以及给我正确帮助的回帖中的一些信息。

安装过程还是昨天晚上的过程,这没有改变。

三、php的安装



版本php-4.3.11

解压php
[root@localhost server]# tar zxvf php-4.3.11.tar.gz
[root@localhost server]#cd php ---->

[root@localhost server]#./configure \
>  --prefix=/usr/local/php \
>  --with-mysql=/usr/local/mysql \
>  --with-apxs2=/usr/local/httpd/bin/apxs \
>  --enable-track-vars \
>  --enable-force-cgi-redirect \
>  --with-config-file-path=/usr/local/httpd/conf
>  --with-zlib

参数说明:

指定安装路径
>  --prefix=/usr/local/php \
指定mysql安装路径,一定要绝对路径,否则编译会失败,
如果你安装mysql不是用源代码安装的,一定要知道mysql的头文件是否存在。多数新手安装apache
>  --with-mysql=/usr/local/mysql \

这个参数是加入apache中为DSO模块的位置,papche2以下的版本参数是apxs而不是apxs2,如果你用的apache版本不是2.0以上的就去掉2,
就像这样--with-apxs=PATH

>  --with-apxs2=/usr/local/httpd/bin/apxs \

这个参数是为启动cookie的get/post等追踪功能
>  --enable-track-vars \

让apache支持cgi
>  --enable-force-cgi-redirect \

指定php的配制文件存放的目录是/usr/local/httpd/conf目录,我们安装完成后,也要把php.ini复制到这个目录中来
>  --with-config-file-path=/usr/local/httpd/conf

让apache支持zlib(当时并未注意,直到安装MAMBO的时候,才给出红色的警告,后来我不得不从新编译PHP)
>  --with-zlib

> --with-gd 支持GD模块,大部分php程序都会有这个要求,没有也无所谓,有些不一定的哦 呵呵
因为我没有安装GD模块,所以我编译的时候也没有加入这个选项。
接下来的步骤和安装mysql的时候一样:
# make
# make install
这里我要指出的是在编译的时候遇到的一些问题,也是新手常遇到的问题

错误:
configure: error: mysql configure failed. Please check config.log for more information.
可能你用的是icc编译版本并不适合你的系统,换一个mysql版本就可以了。
mysql-***-***-icc.tar.gz

error: Cannot find MySQL header files under /usr/bin/
出现这种错误,一般是configure的时候给出的参数时 所指定的路径格式错误,导致找不到mysql的头文件,
默认库文件是在/usr/lib, 头文件是在:/usr/include里,程序会自己寻找,只要正确指定你的mysql安装目录就可以了。

checking lex output file root... ./configure: line 2356: lex: command not found
configure: error: cannot find output from lex; giving up

If configure fails try --with-jpeg-dir=
configure: error: libpng.(a|so) not found.
这个错误应该是flex包没有安装或则安装有错误,只要重新安装一下这个包就可以了。

If configure fails try --with-jpeg-dir=
configure: error: libpng.(a|so) not found.
你可能想让php支持jpeg格式,但是你没有安装libjpeg包
所以编译的时候没有找到jpeg包的安装目录。
在我的映像中这个包要在安装GD包之前安装,否则编译也会出错,不知道是不是这样?

以上几个是我在安装过程中遇到比较典型的错误。

接下来是后期的配置

复制php.ini-dist为php.ini,并存放到编译时我们指定的目录中/usr/local/httpd/conf/php.ini

编辑/usr/local/httpd/conf/php.ini文件,找到如下的一行
;default_charset = "iso-8859-1"
在这行下面加一行
default_charset = "gb2312"


配置apache 的 httpd.conf文件,在httpd.conf文件中查找:
# Dynamic Shared Object (DSO) Support
在这部分中加入需要调用PHP模块的位置。
LoadModule php4_module        modules/libphp4.so
查找:
DirectoryIndex index.html
在后面加入 index.php 让PAPCHE 也能打开默认首页为php的文件。
查找:
#AddType application/x-tar .tgz
在下面加入
#AddType application/x-httpd-php .php

重启一下apache。
测试一下PHP环境是不是可以运行。把下面这一句另存为PHP网页(如:test.php),

打开浏览器:
如果能正确显示系统信息,就表示可以了。


我觉得一个好的教程,应该是把过程中遇到的问题和解决方法写出来,而不是简单的几个操作步骤或指令。
多数人要找的是在安装或者使用过程中遇到问题的解决方法,而不是安装步骤。

在此恳请各位大哥大姐能把您在使用或者安装过程中遇到的问题和解决方法写给大家看看。谢谢

lang3 2005-4-7 15:48

顶!写得很生动!

不过。。。

你怎么又装mysql5.0.2-alpha呀?
bugs比beta的还多!

还是老老实实用mysql4.0.2x吧。

deepbluefly 2005-6-9 05:36

顶,非常好的经验之谈

underx 2005-6-10 02:01

好贴!要顶。等你发完,我帮你置顶。

zdfufu 2005-6-23 01:38

挺有魄力,但是我觉得这个弄着玩还行,真的要在LINUX上搭配起来还是需要自己动手。

比如我建议的环境是 MYSQL 4.0.x, PHP 4.3.x, APACHE 2.0.x,虽然PHP.NET 说了不要用Apache 2 + PHP作为生产环境.......我也不知道为什么。

安装MYSQL的时候,完全按照MYSQL的安装手册去装是不会有问题的。不要去看任何乱七八糟的东西,我饶了很多弯,比如有个会写 --with-charset=gbk, 有着一条语句,你的VBB就一定会有问题,因为VBB上传图片之类的会编码,一编码就会按照GBK编,而VBB是按照TEXT存储图片,你的SQL语句就会因为其中某个编码断掉。


上面的问题有个解决的方法,升级到mysql 4.1以上,那里有个新的函数。但是~~~但是升级到4.1, mysqlclient就必须跟着升级,对于linux来说重新编译到还好说,对于Windows 来说,你可能必须用PHP5了,因为PHP 4.4rc2带的还是3.23的客户端,还有人说你可以用某些语句修改一下数据库的字段,算了吧,为了搞懂和继续在MAMBO上面作调整,我还是省了吧。

对于其他的备选件PHP的编译,还是考虑带上GD,否则将来一旦要用到,又要重新编译,这个很麻烦,对于带有图库的站点尤其麻烦。

另外在编译完成后,PHP的编译好像是你缺少什么组件并不中断,比如你编译的时候用了 --with-jpeg,如果系统里面没有,PHP的config还是回过去,总不能MAKE完了才知道吧。我对编译完全新手,所以只好用笨的办法, config完成后,目录里有一个configure.stats(可能是这个名字)的,后面加 --recheck参数可以查看编译的状态。

比如 ./configure.stats --recheck > whaterver.txt

生成一个编译状态文本,里面会列出来你config的情况,如果你enable了某项,而后面是NO,你就得琢磨琢磨了。

对于APCHE,我也是摸着石头过河,按照网上的一些说法倒是不会有问题,只是你可以考虑静态编译模组,比如rewrite之类的。

这东西其实纯看自己的应用是什么样子的,问题真是千奇百怪。算我发牢骚把,这两天几乎被整死了

dato 2005-6-23 02:37

中文社区的安装文档还是有相当多的错误

有些站点都不好好研究一下,转来转去。汗

这种东东还是看manual最省事

QUOTE:
httpd.nice
#! /bin/sh
#
# Created by configure

CC="gcc-3.2"; export CC
CFLAGS="-O2 -march=pentium3 -fomit-frame-pointer -ffast-math -finline-functions -pipe"; export CFLAGS
"./configure" \
"--with-maintainer-mode" \
"--enable-layout=dato" \
"--with-mpm=worker" \
"--enable-so" \
"--enable-mods-shared=access auth log_config setenvif mime autoindex dir alias deflate headers rewrite" \
"--disable-include" \
"--disable-env" \
"--disable-status" \
"--disable-asis" \
"--disable-cgid" \
"--disable-negotiation" \
"--disable-imap" \
"--disable-actions" \
"--disable-userdir" \
"EAPI_MM=../mm-1.3.0" \
"$@"


QUOTE:
php.nice
#! /bin/sh
#
# Created by configure

CFLAGS='-O2 -march=pentium3 -fomit-frame-pointer -ffast-math -finline-functions -pipe' \
CC='gcc-3.2' \
'./configure' \
'--host=i686-pc-linux-gnu' \
'--with-maintainer-mode' \
'--with-apxs2=/w3/apache2/bin/apxs' \
'--with-mysql=shared,/w3/mysql' \
'--prefix=/w3/apache2/php' \
'--with-exec-dir=/w3/ext' \
'--with-config-file-path=/w3/apache2' \
'--enable-safe-mode' \
'--enable-memory-limit' \
'--enable-overload' \
'--enable-mbstring=shared' \
'--enable-mbregex' \
'--enable-trans-sid' \
'--enable-exif=shared' \
'--with-zlib' \
'--with-gd=shared' \
'--enable-gd-native-ttf' \
'--enable-gd-imgstrttf' \
'--enable-gd-jis-conv' \
'--with-ttf=/usr/lib' \
'--with-jpeg-dir=/usr/lib' \
'--with-png-dir=/usr/lib' \
'--with-zlib-dir=/usr/lib' \
'--with-xpm-dir=/usr/lib' \
'--with-freetype-dir=/usr/include/freetype2/freetype' \
'--with-iconv=shared' \
'--disable-posix' \
'--disable-sockets' \
'--disable-ipv6' \
'--disable-cgi' \
'--disable-cli' \
'--disable-path-info-check' \
'--disable-rpath' \
'--without-pear' \
'--disable-debug' \
"$@"
The basic commands you must execute to install and use a MySQL binary distribution are:

shell> groupadd mysql
shell> useradd mysql -c "MySQL Server" -d /dev/null -g mysql -s /sbin/nologin
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql

If you would like to use mysqlaccess and have the MySQL distribution in some non-standard place, you must change the location where mysqlaccess expects to find the mysql client. Edit the `bin/mysqlaccess' script at approximately line 18. Search for a line that looks like this:
$MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable

Change the path to reflect the location where mysql actually is stored on your system. If you do not do this, you will get a Broken pipe error when you run mysqlaccess.

shell> scripts/mysql_install_db
shell> chown -R root  .
shell> chown -R mysql data
shell> chgrp -R mysql .
cp support-files/my-medium.cnf /etc/my.cnf

cp support-files/my-medium.cnf /etc/my.cnf
chown root:sys /etc/my.cnf
chmod 644 /etc/my.cnf

shell> bin/safe_mysqld --user=mysql &
or
shell> bin/mysqld_safe --user=mysql &
if you are running MySQL 4.x

/usr/local/mysql/bin/mysqladmin -u root -p password your_new_password



/usr/local/mysql/bin/mysqladmin -u root -p shutdown
Enter password:123456


020531 13:14:35 mysql ended
[1]+ Done /usr/local/mysql/bin/safe_mysqld --user=mysql

If you would like MySQL to start automatically when you boot your machine, you can copy support-files/mysql.server to the location where your system has its startup files. More information can be found in the support-files/mysql.server script itself and in section 2.4.3 Starting and Stopping MySQL Automatically.
# Usually this is put in /etc/init.d (at least on machines SYSV R4 based
# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.
# When this is done the mysql server will be started when the machine is
# started and shut down when the systems goes down.

You need to add these start and stop commands to the appropriate places in your `/etc/rc*' files when you want to start up MySQL automatically on your server.

On most current Linux distributions, it is sufficient to copy the file mysql.server into the `/etc/init.d' directory (or `/etc/rc.d/init.d' on older Red Hat systems). Afterwards, run the following command to enable the startup of MySQL on system bootup:

shell> chkconfig --add mysql.server

As an alternative to the above, some operating systems also use `/etc/rc.local' or `/etc/init.d/boot.local' to start additional services on bootup. To start up MySQL using this method, you could append something like the following to it:

/bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld --user=mysql &'

You can also add options for mysql.server in a global `/etc/my.cnf' file. A typical `/etc/my.cnf' file might look like this:

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql_server]
basedir=/usr/local/mysql

The mysql.server script understands the following options: datadir, basedir, and pid-file.
阅读(2619) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~