架设某大型网站服务器之全部过程(3)
注:
一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是 2G,则可以设置最大共享内存为 1073741824,如上;如物理内存是 1G,则可以设置最大共享内存为 512 * 1024 * 1024 = 536870912;以此类推。
建议永久地增加 shmmax 设置。
sem 4 个参数依次为SEMMSL(每个用户拥有信号量最大数);SEMMNS(系统信号量最大数);SEMOPM(每次semopm系统调用操作数); SEMMNI(系统辛苦量集数最大数).Shmmax 最大共享内存,官方文档建议是内存的1/2,Shmmni 最小共享内存 4096KB.Shmall 所有内存大小 。
b) 设置oracle对文件的要求:
编辑文件:#vi /etc/security/limits.conf 加入以下语句:
oracle soft nofile 65536 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 也可以写成: * soft nofile 65536 * hard nofile 65536 * soft nproc 16384 * hard nproc 16384 c) gcc降级 #mv /usr/bin/gcc /usr/bin/gcc34 #ln –s /usr/bin/gcc32 /usr/bin/gcc #mv /usr/bin/g /usr/bin/g 34 #ln –s /usr/bin/g 32 /usr/bin/g |
# cd /opt #ls compat*.rpm compat-libcwait-2.0-2.i386.rpm compat-oracle-rhel4-1.0-5.i386.rpm # rpm -Uvh compat*.rpm Preparing... ########################################### [100%] 1:compat-libcwait-2.0-2.i386.rpm ##################################### [ 50%] 2:compat-oracle-rhel4-1.0-5.i386.rpm#################################### [100%] |
1,解压下载的安装文件:
#zcat ship_9204_linux_disk1.cpio.gz | cpio –idmv&&zcat ship_9204_linux_disk2.cpio.gz | cpio –idmv&& zcat ship_9204_linux_disk3.cpio.gz | cpio –idmv
解包和解压过程中,自动创建了3个包含安装文件的目录:
Disk1 Disk2 Disk3 .以oracle用户登录系统,进行Oracle的安装(注意请不要在root登录中切换到oracle, |
注意:在SID处指定为oradb (与 orACLE_SID=oradb)中的值一致.
点击OK,然后退出即可,正常登陆并启动数据库的操作。
$ lsnrctl start $ sqlplus /nolog SQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 12 22:58:53 2005 Copyright (c) 1982, 2002, oracle Corporation. All rights reserved. SQL>connect / as sysdba Connected. SQL> shutdown immediate 关闭数据库 Database closed. Database dismounted. orACLE instance shut down. SQL>startup; 启动数据库 orACLE instance started. Total System Global Area 236000356 bytes Fixed Size 451684 bytes Variable Size 201326592 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Database mounted. Database opened. 5, oracle服务启动 以root身份进入,编写以下脚本: vi /etc/init.d/oracle ////////////内容////////////////// #!/bin/bash #start and stop the oracle instance # chkconfig –level 5 --add ora9i #chkconfig: 345 91 19 # description: starts the oracle listener and instance export orACLE_HOME="/opt/ora9/product/9.2.0.4" export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH export orACLE_OWNER="oracle" export orACLE_SID=oradb if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo "oracle startup:cannot start" exit 1 fi case "$1" in start) #startup the listener and instance echo -n "oracle startup: " su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start" su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart touch /var/lock/subsys/oracle echo "finished" ;; stop) # stop listener, apache and database echo -n "oracle shutdown:" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop" su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbshut rm -f /var/lock/subsys/oracle echo "finished" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: ora9i [start|stop|reload|restart]" exit 1 esac exit 0 |
给予执行权限,以root身份运行/etc/rc.d/init.d/oracle start |stop 来管理oracle的启动和停止了。如果要将这个脚本加入到系统中使其可开机运行(不过官方是不建议开机自动运行的,我本人也不建议这样做,你确实需要可以这么做),那么要运行以下命令: chkconfig --level 35 --add oracle 或者以root用户执行如下命令:
#chmod a x /etc/rc.d/init.d /oracle #cd /etc/rc.d/rc5.d #ln -s /etc/rc.d/init.d/oracle S99ora9i #cd /etc/rc.d/rc0.d #ln -s /etc/rc.d/init.d/oracle K99ora9i 也可如下自启动oracle9i! 在/etc/rc.d/rc.local中加入如下: su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctl start" su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/dbstart start" 注意:如果启动不理想,请编写shell scripts: 方法:以我个人习惯为例;;;;;;;;;; #mkdir /usr/local/syscmf #vi /usr/local/syscmf/oracle.sh ////////////////////////文件内容开始/////////////////// #!/bin/sh #modify by mingfu 060404 #oracle run scripts #run user for oracle lsnrctl start expect /usr/local/syscmf/oracle.exp ////////////////////////文件内容结束/////////////////// #vi /usr/local/syscmf/oracle.exp ////////////////////////文件内容开始/////////////////// #!/usr/local/bin/expect #modify by mingfu 060404 #oracle run scripts set timeout 120 spawn sqlplus \/nolog expect "SQL\>" send "conn \/ as sysdba\r" expect "SQL\>" send "startup\r" expect "SQL\>" send "exit\r" exit ////////////////////////文件内容结束/////////////////// #chown oracle /usr/local/syscmf/* #chgrp oracle /usr/local/syscmf./* #chmod 755 /usr/local/syscmf/* 在/etc/rc.local中新增如下内容: su – oracle /usr/local/syscmf/oracle.sh 删除原来的: su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctl start" su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/dbstart start" 6, 关于数据库删除重新安装的问题: 把ORACLE安装目录删除及/etc/ora*.*删除就行了 #rm –f /etc/ora*.* 7,关于在LINUX中运行管理软件$oemapp #su – oracle $oemapp console |
Oracle 目前缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter database character set ZHS16GBK ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改sys用户下的PROPS$表的方法,也会给字符集的变更留下很多潜在的问题.linux下进行如下的操作来修改字符集:
sqlplus /nolog sql>conn / as sysdba sql>shutdown immediate sql>startup mount sql>alter system enable restricted session ; sql>alter system set JOB_QUEUE_PROCESSES=0; sql>alter system set AQ_TM_PROCESSES=0; sql>alter database open ; sql>alter database character set internal_use ZHS16GBK ; sql>shutdown immediate sql>startup |
5.配置LAMP
系统自带安装http php mysql软件包,进行配置如下: Apache配置 修改/etc/httpd/conf/httpd.conf内容如下: Listen 82 ServerName 127.0.0.1:82 DocumentRoot "/var/www/html" <Directory "/var/www/html"> 注意:系统已经有两个httpd服务进程. 用户分别是:xxxx apache 请确保 /usr/local/apache2/bin/apachectl start /etc/init.d/httpd start 此两个服务自启动. Mysql设置 Mysql>create ftpdb; Mysql>grant all privileges on ftpdb.* to ftpuser@localhost identified by “xxxx”; Mysql>grant all privileges on *.* to root@’%’ identified by “xxxx”; Mysql>flush privileges; Mysql>exit 请确保 /etc/init.d/mysqld start 此服务自启动. LAMP服务环境配置完毕. |
配合工程实施与建立ftp帐号相关联,方便维护与管理,我这里选择了Proftpd与数据库结合的方式来实现的.
创建Ftpdb结构: Mysql>use ftpdb; Mysql> Create TABLE `ftpgroup` ( `groupname` varchar(16) NOT NULL default '', `gid` smallint(6) NOT NULL default '5500', `members` varchar(16) NOT NULL default '', KEY `groupname` (`groupname`) ) ; Mysql> Create TABLE `ftpquotalimits` ( `name` varchar(30) default NULL, `quota_type` enum('user','group','class','all') NOT NULL default 'user', `per_session` enum('false','true') NOT NULL default 'false', `limit_type` enum('soft','hard') NOT NULL default 'soft', `bytes_in_avail` float NOT NULL default '0', `bytes_out_avail` float NOT NULL default '0', `bytes_xfer_avail` float NOT NULL default '0', `files_in_avail` int(10) unsigned NOT NULL default '0', `files_out_avail` int(10) unsigned NOT NULL default '0', `files_xfer_avail` int(10) unsigned NOT NULL default '0' ) ; Mysql> Create TABLE `ftpquotatallies` ( `name` varchar(30) NOT NULL default '', `quota_type` enum('user','group','class','all') NOT NULL default 'user', `bytes_in_used` float NOT NULL default '0', `bytes_out_used` float NOT NULL default '0', `bytes_xfer_used` float NOT NULL default '0', `files_in_used` int(10) unsigned NOT NULL default '0', `files_out_used` int(10) unsigned NOT NULL default '0', `files_xfer_used` int(10) unsigned NOT NULL default '0' ) ; Mysql> Create TABLE `ftpuser` ( `id` int(10) unsigned NOT NULL auto_increment, `userid` varchar(32) NOT NULL default '', `passwd` varchar(32) NOT NULL default '', `uid` smallint(6) NOT NULL default '5500', `gid` smallint(6) NOT NULL default '5500', `homedir` varchar(255) NOT NULL default '', `shell` varchar(16) NOT NULL default '/sbin/nologin', `count` int(11) NOT NULL default '0', `accessed` datetime NOT NULL default '0000-00-00 00:00:00', `modified` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ; Mysql> Insert INTO `ftpgroup` |