由于对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前要安一下支持包,不然就像我开始一直遇到错误。
首先,服务器GCC要有,不然什么都不能做.可以用gcc -v来查看是否安装了GCC,
gd-2.0.28.tar.gz
libxml2-2.X.X.tar.gz
zlib-1.X.X.tar.gz 忘记了,
jpegsrc.v6b.tar.gz
libpng-1.2.5.tar.gz
freetype2-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