因为今天很不在状态所以就把以前写的东西拷上去了
也许是有点乱,将就着也能看
配置服务器
首先是选件,我用的是HPML150,放到现在已经是很慢了,两个至强CPU,支持5个内存扩展槽(我的是2G内存),一个磁盘阵列卡(有的叫raid卡或是SCSI卡,其实这个名词我也没搞太明白),3个SCSI硬盘,原来的3块都有坏道用不了了,结果换了3块,花了不少银子。这里要说明一下,我做的是raid5,至少需要3块硬盘,开始我也很纳闷,后来做完之后发现可用磁盘容量才100G,少了一块硬盘的容量,才知道原来是做备份用的,这样才能保证数据的安全性,如果5块硬盘做的raid坏2块就启动不起来了,如果有块盘坏了,也会导致进不去系统,这个是折磨我很长时间才发现的问题。进入阵列卡的配置就能看到他的型号,他还能读出磁盘的数量,这里我们可以(按插入键)格式化磁盘,创建磁盘阵列,一旦创建好,就不能更改,如果更改那么数据就都没有了,很恐怖的。一溜回车下去,就完成了配置。如果是阵列卡坏了找个相同型号的换上去就可以直接用,这点做的很好,数据是可以保留下来的。
安装系统
完成后开始安装系统,和window相似,放入光盘根据选项提示一步步操作,有点要注意的是1 swap是交换分区,一般是内存的两倍,但我又看到一个人说最大不超过2G,我也不知道是不是真的,就直接给了2G。 2 主板的板载网卡坏掉了,加了个独立千兆网卡(可不便宜啊),所以在配置网络的时候有两个选项eth0和eth1,这时候要选后边的,3安装包的时候,如果不在乎那么点磁盘容量的话选全部安装,我是挑选安装的,所以在安装oracle的时候总是出问题,(一会在后面详细说),忘了说一句我的是企业版的红帽4,#uname –a查看版本号,和时间。
安装oracle
先要做些配置,而且linux下的安装文件和windows下的安装文件是不一样的,一定要找适当的版本。
需要增加oracle用户和组
#useradd oracle
#passwd Password 增加用户
#groupadd dba 增加dba组
#vi /etc/group
dba:x:502: 改为 dba:x:502:oracle 502是组的编号
#mkdir oracle 建一个文件夹,来做安装目录
#chown oracle.oracle /oracle 给/oracle这个文件夹安装oracle的权限,名字可以随意取
# init 5 进入图形界面,oracle10须在图形界面下安装。
打开一个命令窗口,
# xhost + 赋予oracle用户打开图形界面的权限
# su oracle 以oracle的身份安装
$ cd database/ 进入安装包目录
$ ls
doc install response runInstaller stage welcome.html
$./runInstaller
然后就很windows下安装一样了,速度还是很快的
# vi /etc/oratab
写入:
Sid:/oracle/product/ 10.2.0 /db_1:Y 这里建一个oratab文件写入sid和安装后的文件目录,也就是oraclehome
#vi /etc/profile 这里是环境变量
加入
export ORACLE_HOME=/oracle/product/ 10.2.0 /db_1 (oracle的安装路径)
export ORACLE_SID=sid (oracle的库名称)
检查dbstart文件中的 oracle_home_listener路径是否跟ORACLE_HOME的路径一致;
检查network/admin 目录中是否有sqlnet.ora、listener.ora、tnsname.ora等文件及其配置
检查 /etc/hosts 文件,看主机名与ip地址是否正确。
最好到oracle的bin下
$su oracle
$./dbstart
Ok了
我安装的时候遇到了很多问题,其中在安装数据库的时候出现错误
Ora-12547:TNS: lost contact 我都点了忽略
装完之后 oradata下是空的,很郁闷,后来一位大哥告诉我缺了一些必要的包,我又
rpm –ivh xxxx.rmp了这些包,才可以安装,为此很是郁闷
rpm -ivh compat-db- 4.1.25 -9.i386.rpm
rpm -ivh openmotif21- 2.1.30 -11.RHEL4.2.i386.rpm
rpm -ivh 1-libXp- 1.0.0 -8.1.el5.i386.rpm
rpm -ivh compat-gcc-32- 3.2.3 -47.3.i386.rpm
rpm -ivh compat-gcc-32-c++- 3.2.3 -47.3.i386.rpm
rpm -ivh compat-libgcc-296-2.96-132.7.2.i386.rpm
rpm -ivh compat-libstdc++-33- 3.2.3 -47.3.i386.rpm
接下来安装 jdk
这个就比较容易了
#tar xvf xxx.tar或#tar zxvf xxx.tar.gz
#cp –a /xxxx /xxx
Ok了,呵呵
安装Tomcat
和jdk的安装是一样的
只是要添加点环境变量
# vi startup.sh
加入
export JAVA_HOME=/test/jdk 1.5.0 _11-test 这里是jdk的home
export TOMCAT_HOME=/test/tomcat 5.5.23 -test 这里是tomcat的home
# vi shutdown.sh 同上
又需要的还有改下端口,这个就不多说了
安装apache
解包后
# ls
httpd- 2.2.4 httpd-2.2.4.tar.gz
# cd httpd- 2.2.4
[root@test httpd- 2.2.4 ]# ./configure --prefix=/test/apache2.2.4 --with-mpm=prefork (进程模式,稳定)
或者
[root@test httpd- 2.2.4 ]# ./configure --prefix=/test/apache2.2.4 --with-mpm=worker (进程、线程混合模式,省内存)
也可以#./configure 这样就默认安装到了/usr/loacl下 prefix是安装目录 后面的是进程模式
然后
# make 很长时间,我是没看明白搞了些什么
# make install 这个是很快
# make clean 清楚安装过程中的文件,我猜测
# ./apachectl start
打开浏览器访问,能看到apache页面,安装完毕。
然后是配置
apache配置文件主要有4个,位于conf目录下的httpd.conf,位于conf/extra目录下的httpd-default.conf、httpd-mpm.conf、httpd-vhosts.conf
# vi httpd.conf
#ServerName www.example.com:80 去掉前面#,改成主站的域名
DocumentRoot "/test/apache 2.2.4 /htdocs" 改成网站页面文件所在的目录
<Directory "/test/apache 2.2.4 /htdocs"> 改成网站页面文件所在的目录
#Include conf/extra/httpd-mpm.conf 去掉前面#
#Include conf/extra/httpd-vhosts.conf 去掉前面#
#Include conf/extra/httpd-default.conf 去掉前面#
# cd extra/
# vi httpd-default.conf
ServerTokens Full 改成ServerTokens Prod
# vi httpd-mpm.conf
进程模式修改:
<IfModule mpm_prefork_module>
ServerLimit 1000 (加入这一行,数值可更大些)
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150 (网站访问量大的话,把这个值改大)
MaxRequestsPerChild 0 (把这个值改一下,比如10000,会使apache更加稳定)
</IfModule>
进程、线程混合模式修改:
<IfModule mpm_worker_module>
ServerLimit 20 (加入这一行,数值可更大些)
StartServers 2
MaxClients 150 (网站访问量大的话,把这个值改大)
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0 (把这个值改一下,比如5000,会使混合模式的apache更加稳定)
</IfModule>
注意混合模式的数值大小关系:ServerLimit >= (MaxClients/ThreadsPerChild)
# vi httpd-vhosts.conf
NameVirtualHost *:80 (端口应与 httpd.conf 文件中的端口号一致)
加入需要的虚拟站点,默认的主站点应放在第一个
<VirtualHost *:80>
ServerAdmin webmaster@163.com
DocumentRoot /www/webapps/
ServerName www.163.com
ErrorLog logs/news163._log
CustomLog logs/news163ess_log common
</VirtualHost>
如果虚拟站点与主站点不在同一个目录下的话,可能会因权限而无法访问,应加入一段授权:
<VirtualHost *:80>
…….
<Directory "/other/thai">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
这些也可以写到httpd.conf中
安装squid
这个也是web的加速代理,我感觉比 apache好,不过有个缺点是不能指定他的默认目录,他自己指定的是root,而apache可以随意指定网站的所在的目录,或许是我还没搞透。
Linux有自带的squid,但据说不是很好,加上我的linux版本过低就没有用
# tar -zxvf squid-2.6.STABLE6.tar.gz
#./configure --prefix=/test/squid 2.6.6
# make
# make install
和apache一样,配置
# cd /test/squid 2.6.6 /etc
# vi squid.conf
##
#
# 版本号:squid-2.6.STABLE6
#
##
visible_hostname www.test.com
http_port 123.123.123.123:80 vhost vport (ip地址和端口)
cache_mem 300 MB (用于缓存的内存)
cache_dir ufs /test/squid 2.6.6 /var/cache 5000 16 256 (用于缓存的硬盘目录)
coredump_dir /test/squid 2.6.6 /var/cache
cache_swap_low 92
cache_swap_high 95
# 错误页面:
error_directory /test/squid 2.6.6 /share/errors/Simplify_Chinese
cache_mgr webmaster@test.com
maximum_object_size 512 KB
maximum_object_size_in_memory 64 KB
# 关闭处于半关闭状态的TCP连接
half_closed_clients off
# 下列服务禁用缓存:
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin /?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
# 定义访问日志格式:
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
# 设置访问日志文件路径及格式:(common格式与apache默认日志格式相同)
access_log /test/squid 2.6.6 /var/logs/access.log common
logfile_rotate 100
# 去除缓存日志:
cache_store_log none
# 刷新时间:
refresh_pattern -i /.htm$ 0 50% 10080
refresh_pattern -i /.html$ 0 50% 10080
refresh_pattern -i /.shtml$ 0 50% 10080
refresh_pattern -i /.gif$ 0 50% 10080
refresh_pattern -i /.swf$ 0 50% 10080
refresh_pattern -i /.jpg$ 0 50% 10080
refresh_pattern -i /.png$ 0 50% 10080
refresh_pattern -i /.bmp$ 0 50% 10080
refresh_pattern -i /.js$ 0 50% 10080
refresh_pattern -i /.jsp$ 0 50% 10080
refresh_pattern -i /.php$ 0 50% 10080
refresh_pattern -i /.asp$ 0 50% 10080
refresh_pattern -i /.doc$ 0 50% 10080
refresh_pattern -i /.ppt$ 0 50% 10080
refresh_pattern -i /.xls$ 0 50% 10080
refresh_pattern -i /.pdf$ 0 50% 10080
refresh_pattern -i /.rar$ 0 50% 10080
refresh_pattern -i /.zip$ 0 50% 10080
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 10080
# 定义广域网ip范围:
acl all src 0.0.0 .0/0.0.0.0
# 仅允许来自本机地址的缓存管理请求:
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
http_access allow manager localhost
http_access deny manager
acl to_localhost dst 127.0.0.0/8
# 允许删除缓存:
acl AdminBoxes src 127.0.0.1 123.123.123.123
acl Purge method PURGE
http_access allow AdminBoxes Purge
http_access deny Purge
# 定义安全端口:
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
# 允许访问已定义安全端口,拒绝访问非安全端口:
http_access allow Safe_ports
http_access deny !Safe_ports
# 仅允许加密请求到安全端口443:
http_access deny CONNECT !SSL_ports
# 允许已定义目标地址(被反向代理主机),拒绝非定义目标地址:
acl webSites dst 123.123.123.0/24
http_access allow webSites
http_access deny !webSites
# 允许已定义客户地址,拒绝非定义客户地址:
acl visitors src 0.0.0 .0/0.0.0.0
http_access allow visitors
http_access deny !visitors
http_reply_access allow visitors
icp_access allow visitors
#################
#
# 反向代理begin
#
cache_peer 192.168.0.10 parent 81 0 no-query originserver name=testserver81
cache_peer_domain testserver81 testserver81
cache_peer_domain testserver81 test181
cache_peer_domain testserver81 test281
cache_peer_domain testserver81 test381
cache_peer 192.168.0.10 parent 82 0 no-query originserver name=testserver82
cache_peer_domain testserver82 testserver82
cache_peer_domain testserver82 test182
cache_peer_domain testserver82 test282
cache_peer_domain testserver82 test382
#
# 反向代理end
#
配置文件很多
[root@test etc]#cd ../sbin
[root@test sbin]# ./squid -z 初始化缓存目录
[root@test sbin]# ./squid -D & 启动
[root@test sbin]# ./squid -k shutdowon 关闭
[root@test sbin]# ./squid -k reconfigure 重载配置
完成
环境配置好后就要加载运行程序
首先是数据库的导入导出,这里写的详细些
#su oracle 切换到oracle,用户这里必须要用oracle用户才能操作
$cd /oracle/db_1/bin 到数据库的 bin下
$./dbstart 启动数据库,这里会生成一个启动日志文件,在db_1下
$./sqlplus 启动sqlplus
在用户名的地方输入 /as sysdba 用dba的身份登陆
Sql>create user UserName identified by PassWord; 新建个用户 UserName
Sql>grant create session to UserName; 创建个session付给用户 Username
Sql>grant dba to UserName; 要导入数据需要给用户一个dba权限
Sql>create tablespace TableSpace datafile=’/db/db.dbf’ size 500M autoextend on 创建一个表空间
Sql>alter user UserName quota unlimited on TableSpace; 把表空间付给用户来使用
基本上也就建立好了
当然也可以在grant用户一些 view , connect,resource 给用户
从另一个表中导出数据
$./exp username/password file=/test/data.dmp full=y
这个语句下有些提示操作,最好是选择导出用户(还要加那些参数,以后补上)
$./imp username/password file=/db/db.dmp full=y statistics=none
这个是全部导入
还有导出个别表
$./exp username/password file=/xxx.dmp tables=( tablenames);
$./imp username/password file/xxx.dmp tables=(tablenames,tablenames);
随系统启动而启动程序,修改
# cd /etc/ic.d/
# vi rc.local 修改这个文件,加入要随机启动的程序
touch /var/lock/subsys/local 这个是自带的不要动,下面的是需要自己添加的
su - oracle -c "/database/oracle/product/ 10.2.0 /db_1/bin/dbstart"
/usr/local/apache2/bin/apachectl start
/www/tomcat/bin/startup.sh
/www/tomcat-trs/bin/startup.sh
自动备份数据库
首先建一个可执行文件,如databaseback.sh
加入
rq=` /bin/date +%Y%m%d ` 这里是取得服务器的时间并按照一定格式20080112
su - oracle -c "/database/oracle/product/ 10.2.0 /db_1/bin/exp username/password file=/xxx$rq.dmp" 导出并改名
# crontab –e
加入,如
05 * * * * /database/oraclebackup/oraclebackup.sh 执行备份文件
20 * * * * /database/oraclebackup/changefilename.sh 这是个改名的,我给写到一起了
1 * * * * /root/output/output-bytes.sh 这是执行流量统计
下面是output-bytes.sh的内容
thedate=`/bin/date +%Y%m%d`
thetime=`/bin/date +%H:%M:%S`
NowIs=$thedate.$thetime
/bin/echo "$NowIs" >> /root/output/output-bytes.txt
/sbin/iptables -L -v -n | grep OUTPUT >> /root/output/output-bytes.txt
/bin/echo -e "##/n##" >> /root/output/output-bytes.txt
/etc/init.d/iptables restart