由于对linux一知半解,所以安这些东西真的什么情况都遇到了。做个总结吧。
linux下安装mysql,采用tar包安装模式
1.建立相应目录和用户组
mkdir /usr/local/mysql
groupadd mysql
useradd -g mysql mysql
2. 解压安装
tar zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58
./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql --with-named-urses-ibs=/usr/lib/libncursesw.so.5
#prefix=/usr/local/mysql mysql安装的目标目录
#sysconfdir=/etc my.ini配置文件的路径
#localstatedir=/var/lib/mysql 数据库存放的路径
#with-named-urses-ibs 如果没有这句话则不能生成make文件
make
make install
3.建立数据库和表
/usr/local/mysql/bin/mysql_install_db --user=mysql
copy配置文件,有large,medium,small三个环境下的,根据机器性能选择,如果负荷比较大,可修改里面的一些变量的内存使用值
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
更改目录权限和组
chmod 755 -R /usr/local/mysql/
chown mysql.mysql -R /usr/local/mysql/
启动mysql
/usr/local/mysql/bin/mysqld_safe &
ok,先看看mysql能否正常工作
mysql -uroot mysql
(在这遇到了一个情况,就是mysql服务已启,但是输入mysql提示command not found)
解决办法:把MYSQLPATH/bin/mysql映射到/usr/local/bin目录下:
cd /usr/local/bin
ln -fs /MYSQLPATH/bin/mysql mysql
完上面的步骤,然后把你编译目录的一个脚本COPY过去
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
用ntsysv设置使mysql每次启动都能自动运行。
好了,至此mysql安装完毕,你可以这样起动你的mysql服务
/etc/rc.d/init.d/mysqld start
下面这步比较关键,
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
大家可以不做这步,大可以在编译其他软件的时候自定义myslq的库文件路径,但我还是喜欢把库文件链接到默认的位置,这样你在编译类似PHP,Vpopmail等软件时可以不用指定mysql的库文件地址。
安装
rpm需要yum才能运行,于是下载了taz的压缩版
安装步骤如下
shell> groupadd mysql
shell> useradd -g mysql mysql
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
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql & (启动)
关键点:创建mysql用户和组,解压,创建快捷方式(重要) 修改权限 导入初始表格
设置密码
mysqladmin -u root password 'newpassword' (输入的时候没有单引号)
创建mysql自启动服务
在MySQL目录下的support-file中,有一个叫myslq.server的启动脚本程序。把它复制到/etc/rc.d/init.d目录里面(改名为mysql):
# cd /etc/rc.d/init.d
# cp /usr/local/mysql/support-files/mysql.server mysql
接着把它的属性改为“x”(executable,可执行)
# chmod +x mysql
最后,运行chkconfig把MySQL添加到你系统的启动服务组里面去。
# /sbin/chkconfig --del mysql
# /sbin/chkconfig --add mysql
远程连接权限
进入mysql控制台 (./mysql -u root -p)
update user set host = '%' where user = 'root';
ps:我设置之后发现localhost无法进入,重新用远程ui给user中的localhost配了记录
(用户root 密码从%哪条抄下来) 后解决。
服务器编码设置
mysql默认编码是latin字符集,使用source命令导入中文数据有乱码问题。
按需要把某个my×.cnf拷贝到/etc/下(改名为my.cnf),在[mysqld]下加入default-character-set = utf8,[client]下加入default-character-set = utf8。
如果服务器在运行,需要重启。进入mysql控制台使用/s可以看到编码情况。
windows中数据的迁移
如果采用copy表文件的方式需要注意到是:
1.copy过去的表文件要设置权限,可以照着mysql库的权限来设置。
其中设置owner和所属组的代码为:
chown mysql *.*
chgrp mysql *.*
2.注意表名的问题,win下表名都被置为小写,而linux下都是使用原表名。
apache的安装
1. 进入下载目录:
cd /home/wangnan/soft
2. 解压缩文件:
tar zxvf httpd-2.2.6.tar.gz
解压缩后生成httpd-2.2.6目录,为安装源文件目录
3. 进入安装源文件目录
cd httpd-2.2.6
4. 生成安装前的配置文件,这里的—prefix指定apache的安装将安装到:/usr/local/apache目录下
./configure --prefix=/usr/local/apache --enable-modules=so --enable-rewrite
5. 生成make文件,并安装:
make;make install
完成之后:
echo "/usr/local/apache/bin/apachectl start">>/etc/rc.d/rc.local
上面设置启动系统后,自启动APACHE。
可vi /etc/rc.d/rc.local查看
(在这遇到一个问题,不能访问apache主页)
解决方法:很大的原因是防火墙:
通过/etc/init.d/iptables status命令查询是否有打开80端口,如果没有可通过两种方式处理:
1.修改vi /etc/sysconfig/iptables命令添加使防火墙开放80端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
2.关闭防火墙
/etc/init.d/iptables stop
#start 开启
#restart 重启
永久性关闭防火墙chkconfig --level 35 iptables off
安装php
安装php前要安一下支持包,不然就像我开始一直遇到错误。首先,服务器GCC要有,不然什么都不能做.可以用gcc -v来查看是否安装了GCC,gd-2.0.28.tar.gzlibxml2-2.X.X.tar.gzzlib-1.X.X.tar.gz 忘记了,jpegsrc.v6b.tar.gzlibpng-1.2.5.tar.gzfreetype2-X.X.tar.gz安装libxml# tar -zxf libxml2-2.6.16.tar.gz# cd libxml2-2.6.16# ./configure (xml默认安装就可以,不要指定路径了,因为安装时php可能找不到它,PHP5只支持libxml2-2.5.10以上版本)# make# make install安装zlib# tar -zxf zlib-1.2.2.tar.gz# cd zlib-1.2# ./configure --prefix=/usr/local/zlib2 (注意,如果您以前没有安装zlib,可以不指定路径,我是没有删除以前的低版本才指定的!以下雷同!)# make# make install安装jpeg# tar -zxf jpegsrc.v6b.tar.gz# cd jpeg-6b/# ./configure --prefix=/usr/local/jpeg6# make# make install-lib如果你选择默认安装,可能很顺利,指定路径后,请先创建以下文件夹错误提示:...... /usr/bin/install -c -m 644 jconfig.h /usr/local/jpeg6/include/jconfig.h/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/include/jconfig.h’: 没有那个文件或目录make: *** [install-headers] Error 1# mkdir /usr/local/jpeg6# mkdir /usr/local/jpeg6/include# mkdir /usr/local/jpeg6/lib# make install-lib# make install安装时如果错误提示:/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/lib/libjpeg.a’: 没有那个文件或目录make: *** [install-lib] Error 1创建如下文件夹:# mkdir /usr/local/jpeg6/lib# make install/usr/bin/install -c cjpeg /usr/local/jpeg6/bin/cjpeg/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/bin/cjpeg’: 没有那个文件或目录make: *** [install] Error 1# mkdir /usr/local/jpeg6/bin/usr/bin/install -c -m 644 ./cjpeg.1 /usr/local/jpeg6/man/man1/cjpeg.1/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/man/man1/cjpeg.1’: 没有那个文件或目录make: *** [install] Error 1# mkdir /usr/local/jpeg6/man# mkdir /usr/local/jpeg6/man/man1# make install好了,直到安装成功!安装libpng:# tar -zxf libpng-1.2.7-config.tar.gz# cd libpng-1.2.7-config# ./configure --prefix=/usr/local/libpng2# make# make install安装freetype:# tar -zxf freetype-2.1.9.tar.gz# cd freetype-2.1.9# ./configure --prefix=/usr/local/freetype2# make# make install安装gd库:# tar -zxf gd-2.0.26gif.tar.gz# cd gd-2.0.26gif# ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ (请指定及格插件的安装路径,否则安装php的时候可能出错!)# make# make install# tar -zxf php5-200411260130.tar.gz# cd php5-200411260130# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng2/ --with-gd=/usr/local/gd2/ --with-freetype-dir=/usr/local/freetype2/ --enable-trace-vars --with-zlib-dir=/usr/local/zlib2/ -with-mysql=/var/lib/mysql(*注意:如果前面的支持包有安装路径的,这的配置要写路径,如果安装时没有路径只写with-**,不要写路径,否则会报错。)# make# make install添加php配置文件:cp php.ini-dist /usr/local/php/lib/php.ini(*注意:文件中是没有php.ini-dist文件的,其实php.ini-production就可以)配置Apache让其支持php编辑 /usr/local/apache/conf/httpd.conf找到 AddType application/x-gzip .gz .tgz 在其下添加如下内容AddType application/x-httpd-php .php找到DirectoryIndex index.html 修改成为 DirectoryIndex index.php index.html index.htm/usr/local/apache/bin/apachectl stop/usr/local/apache/bin/apachectl start最后一步重新启动apache报如下错误:httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied原因:是Linux有一个SELinux保护模式引起的。解决办法:1关闭SELINUX的方法:vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重启这个方法可能会对服务器带来风险。2不关闭SELINUX的方法:# setenforce 0# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so# service httpd restart# setenforce 1