2008-11-15

Solaris10 05/08 在服务器上安装的管理 Part.2

  昨天手工之后没有检查,结果今天刚开始配置就遇到问题了,tar不支持gzip,没有make等等,原来安装的时候选了核心组件版本,结果现在很多包都要装过。

  还是老规矩直接上http://www.sunfreeware.com/去下载包,安装就直接用:

pkgadd -d filename

安装好。装好后记得要修改一下系统变量:

vi /etc/profile

添加下面蓝色的

#ident "@(#)profile 1.19 01/03/13 SMI" /* SVr4.0 1.3 */
# The profile that all logins get before using their own .profile.
trap "" 2 3

export LOGNAME PATH

PATH=/usr/local/bin:/usr/local/sbin: /usr/bin:/usr/sbin:/usr/ccs/bin;

expotr PATH


改完以后登录的用户的path都变成上面设置的了,不过如果你su到root的话。他的path却还是/usr/bin /usr/sbin,难度root账户的path设置无效了吗?不是,其实是这样:


如果以root用户身份登录或者用 su - 命令进行切换,则修改 home目录下.profile是管用的. 如果是简单的 用 su 进行切换, 则系统保留除 PATH之外的所有环境变量, PATH被设为 /etc/default/su 中的 SUPATH ,缺省时为/usr/sbin:/usr/bin
所以,如果要让PATH还是你设置的那个你就需要用su -命令来switch user。

此外,一个一定要注意的地方是,默认gun的那些包安装都会把执行文件装到/usr/local/bin下面,而sun自带的相同名称的软件都会放到/usr/bin下面,所以,要谨防因为调用错了程序而导致的奇怪问题。因为我一般都用gun版本的,所以只要保证path里面/usr/local/bin在后者之前即可。

之后编译安装mysql,这里,我遇到的问题是出现了libstdc++.so.6 找不到文件的错误,其实就是make的时候它搜寻的是/usr/lib/libstdc++.so.6但是在Solaris里面,这个文件在/usr/local/libstdc++.so.6,所以只需要做一个软连接就搞定了。

安装完之后,为了能够使用SMF来管理mysql的启动,需要做这些:
在/var/svc/manifest/network目录建立文件mysql.xml内容



<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

<!-- MySQL Manifest - cuddletech, benr, August 28th, 2005 -->

<service_bundle type='manifest' name='cuddletech:mysql'>

<service
name='application/mysql'
type='service'
version='4'>

<create_default_instance enabled='false'/>

<single_instance/>

<dependency name='fs-local'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/system/filesystem/local'/>
</dependency>

<exec_method
type='method'
name='start'
exec='/etc/sfw/mysql/mysql.server start'
timeout_seconds='60' />

<exec_method
type='method'
name='stop'
exec='/usr/sfw/bin/mysqladmin shutdown'
timeout_seconds='60' />

<exec_method
type='method'
name='refresh'
exec='/usr/sfw/bin/mysqladmin refresh'
timeout_seconds='60' />

<stability value='Unstable' />

<template>
<common_name>
<loctext xml:lang='C'>MySQL Server</loctext>
</common_name>
<documentation>
<doc_link name='mysql.org'
uri='http://dev.mysql.com/doc/mysql/en/index.html' />
</documentation>
</template>
</service>

</service_bundle>


之后使用svccfg验证并导入配置文件
#svccfg validate /var/svc/manifest/network/mysql.xml
#svccfg import /var/svc/manifest/network/mysql.xml
这样就ok了。
基本的配置mysql:
获得配置文件:
cp /opt/mysql/share/mysql/my-large.cnf /etc/my.cnf
之后初始化数据库:
/opt/mysql/bin/mysql_install_db --user=mysql
之后启动数据库:
/opt/mysql/bin/mysqld_safe --user=mysql &
测试关闭数据库:
/usr/sfw/bin/mysqladm -u root shutdown
如果要使数据库的编码改为utf8
那么
vi /etc/my.cnf
在[client]后面添加一行
default-character-set=utf8
在[mysqld]之后添加同样的一行。
default-character-set=utf8
之后启动以后mysql -uroot
show variables like 'character%';
会显示如下结果
+--------------------------+----------------------------+
Variable_name Value
+--------------------------+----------------------------+
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
+--------------------------+----------------------------+
不过可惜的是,这样加使用mysqladmin就会提示
/usr/sfw/bin/mysqladmin: unknown variable 'default-character-set=utf8'
暂时没有去找新的方法。

接下来安装apache,参考之前的一篇文章。装好之后同样为了整合到SMF,这样做:

vi /var/svc/manifest/network/apache2.xml



<?xml version="1.0"?>

<!-- Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. ident "@(#)http-apache.xml 1.2 04/11/11 SMI" -->

<service_bundle name="SUNWapchr:apache" type="manifest">

<service name="network/http" type="service" version="1">

<!-- Because we may have multiple instances of network/http provided by different implementations, we keep dependencies and methods within the instance. -->

<instance name="apache" enabled="false">
<dependency name="physical" type="service" restart_on="error" grouping="optional_all">
<service_fmri value="svc:/network/physical:default">
</dependency>

<exec_method name="start" type="method" timeout_seconds="60" exec="/etc/init.d/apache start">

<exec_method name="stop" type="method" timeout_seconds="60" exec="/etc/init.d/apache stop">

<exec_method name="refresh" type="method" timeout_seconds="60" exec="/etc/init.d/apache restart">

<property_group name="httpd" type="application">
<stability value="Evolving">
<propval name="ssl" type="boolean" value="false">
</property_group>

<property_group name="startd" type="framework">
<!-- sub-process core dumps shouldn't restart session -->
<propval name="ignore_error" type="astring" value="core,signal">
</property_group>

</instance>

<stability value="Evolving">

<template>
<common_name>
<loctext lang="C">
Apache HTTP server
</loctext>
</common_name>
<documentation>
<manpage title="apache" section="1M">
<doc_link name="apache.org" uri="http://httpd.apache.org">
</documentation>
</template>
</service>

</service_bundle>



之后导入svccfg:
# svccfg validate /var/svc/manifest/network/apache2.xml
# svccfg import /var/svc/manifest/network/apache2.xml

没有评论: