Install Oracle 11G on Centos Linux 7

Make sure SElinux DISABLED.

Add groups and user:

groupadd -g 501 oinstall
groupadd -g 502 dba
useradd -u 502 -g oinstall -G dba oracle
passwd oracle
Add kernel parameters

vi /etc/sysctl.conf

kernel.shmmni = 4096  
kernel.shmmax = 4398046511104 
kernel.shmall = 1073741824 
kernel.sem = 250 32000 100 128 

fs.aio-max-nr = 1048576 
fs.file-max = 6815744 

net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 
net.core.rmem_max = 4194304 
net.core.wmem_default = 262144 
net.core.wmem_max = 1048586

Apply kernel parameters

sysctl -p
Set shell limits for user oracle

vi  /etc/security/limits.conf

oracle   soft   nproc    131072 
oracle   hard   nproc    131072 
oracle   soft   nofile   131072 
oracle   hard   nofile   131072 
oracle   soft   core     unlimited 
oracle   hard   core     unlimited 
oracle   soft   memlock  50000000 
oracle   hard   memlock  50000000
The “/etc/hosts” file must contain a fully qualified server name.

127.0.0.1    db.yourhost.com

and verify by ping db.yourhost.com

64 bytes from db.yourhost.com (127.0.0.1): icmp_seq=1 ttl=64 time=0.080 ms
vi /home/oracle/.bash_profile

# Oracle Settings 

export TMP=/tmp 
export ORACLE_HOSTNAME=db.yourhost.com 
export ORACLE_UNQNAME=orcl 
export ORACLE_BASE=/home/oracle/app/oracle 
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 
export ORACLE_SID=orcl
PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; 
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; 

alias cdob='cd $ORACLE_BASE' 
alias cdoh='cd $ORACLE_HOME' 
alias tns='cd $ORACLE_HOME/network/admin' 
alias envo='env | grep ORACLE' 

umask 022
Check packages which are missing:(and install them)

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \ elfutils-libelf \ elfutils-libelf-devel \ gcc \ gcc-c++ \ glibc \ glibc-common \ glibc-devel \ glibc-headers \ ksh \ libaio \ libaio-devel \ libgcc \ libstdc++ \ libstdc++-devel \ make \ sysstat \ unixODBC \ unixODBC-devel

Finally, go into the unzipped database dir,(with GUI)

./runInstaller

自动化运维之SaltStack

  1. SaltStack分Master和minion端,也就是服务端和客户端。
  2. 我们一般选择C/S模式运行它,当网络环境局限性较大时,例如防火墙需过滤流量,限制端口使用,则使用SSH tunnel运行它。
  3. 下面我们以例子来说明,服务端IP地址为192.168.0.1,客户端IP地址为192.168.0.2 – 192.168.0.9
安装epel:yum install epel-release -y
在192.168.0.1上,
从EPEL安装saltstack服务端:yum install salt-master -y && service salt-master start

在192.168.0.2 - 192.168.0.9上
从EPEL安装saltstack客户端(监控端):yum install salt-minion -y && vi /etc/salt/minion
在192.168.0.2 - 192.168.0.9上,修改配置文件中的服务端IP地址,客户端需要知道服务端IP地址,也可以使用主机名,使用主机名时,需要在内网DNS上设置解析或设置本地hosts解析。

vi /etc/salt/minion 去掉#号并添加服务端IP地址
#master: 192.168.0.1

& service restart salt-minion

注意:所有服务器的主机名,必须合理解析,简单的办法是,每台主机把自己的主机名在本地hosts当中指向127.0.0.1,或者在内网DNS中对每个主机名进行正确的解析。
接下来进行pki部分的操作,我们需要在服务端中,设置允许访问服务端的客户端,

cd /etc/salt/pki/master
salt-key

可以看到,配置好且启动后的客户端会连接服务端,但是会出现在Unaccepted keys,需要进行一个允许的操作,下面我们是批量操作,允许所有未接受的主机状态变更为接受。

salt-key -A

然后挨个点一下Y
 测试一下连接,salt '*' test.ping,正常的主机会显示True值。
常用:
salt '*' sys.doc > /home/www/salt.txt
salt '*' test.ping
salt '*' cmd.run 'ping www.qq.com -c 5'
salt '*' cmd.run 'pa uaxw|grep java'
salt '*' grains.get ip_interfaces:eth0
salt -G os:CentOS cmd.run 'w' 
salt '*' service.available nginx
salt '*' service.reload nginx
salt '*' service.status nginx
salt '*' network.active_tcp

DNS记录修改

2015-11-20 13:44:56: (211.167.81.106) 删除记录 A 记录 电信 线路 w2 值 106.39.81.254 (91257279)
2015-11-20 13:44:56: (211.167.81.106) 删除记录 A 记录 默认 线路 w2 值 211.144.36.110 (18009339)
2015-11-20 13:44:49: (211.167.81.106) 删除记录 A 记录 电信 线路 w3 值 106.39.87.11 (91257237)
2015-11-20 13:44:49: (211.167.81.106) 删除记录 A 记录 默认 线路 w3 值 211.144.36.97 (91257224)
2015-11-20 13:44:25: (211.167.81.106) 删除记录 A 记录 默认 线路 w1 值 211.144.141.124 (18009616)
2015-11-20 12:58:39: (211.167.81.106) 删除记录 CNAME 记录 默认 线路 jjdt 值 3c2f4e00611905e5.cdn.jiashule.com. (125494740)
2015-11-20 12:58:35: (211.167.81.106) 启用解析 A 记录 电信 线路 jjdt 值 106.39.87.3 (disabled) (91208794)
2015-11-20 12:58:34: (211.167.81.106) 启用解析 A 记录 默认 线路 jjdt 值 218.246.20.89 (disabled) (1542516)
2015-11-20 12:58:33: (211.167.81.106) 暂停解析 CNAME 记录 默认 线路 jjdt 值 3c2f4e00611905e5.cdn.jiashule.com. (enabled) (125494740)

各类加速服务均可使用获取真实IP地址的模块

Cloudflare很happy的为大家开发了这个模块,改改就可以用了。

wget https://www.cloudflare.com/static/misc/mod_cloudflare/mod_cloudflare.c

以下配置适用于国内各大CDN加速服务
#define CF_DEFAULT_IP_HEADER “X-Forwarded-For”
#define CF_DEFAULT_TRUSTED_PROXY {“119.188.14.0/24″,”119.188.132.0/24″,”61.155.149.0/24″,”61.182.137.0/24″,”222.216.190.0/24″,”183.60.235.0/24″,”117.34.28.0/24″,”119.167.246.0/24″,”42.236.7.0/24″,”183.61.236.0/24″,”117.27.149.0/24″,”59.51.81.0/24”}
#define CF_DEFAULT_TRUSTED_PROXY_COUNT 12

/usr/local/httpd/bin/apxs -a -i -c mod_cloudflare.c

为Postfix添加TLS支持

近来邮件服务器上暴破的机器人越来越多,居然还破了几个用户的密码,用来发送垃圾邮件,好贱!琢磨着怎么改进一下这种情况,但是除了限制访问频率,似乎没有别的好方法,顺便把smtp和pop3都改为了ssl支持,也就是smtps和pop3s。

由于原有的邮件系统架设于courier-imap+postfix,所以启用pop3s是很简单的事情,两步操作即可:

1,生成crt:/usr/local/share/courier-imap/mkpop3dcert,执行完成后,会在当前目录生成一个被叫做pop3d.pem的文件。

2,启动courier-imap-pop3d-ssl即可,当然了,同时关闭掉courier-imap-pop3d。

接下来我们启用postfix的smtps,首先当然是生成crt,由于postfix要求有CA crt,所以呢,不能生成一个self-verification的crt,必须先整一个CA,这个流程和之前生成Openvpn证书的类似,这里就不多说了。

证书生成之后呢,我们添加一点点配置到postfix的main.cf里面:

#################TLS Support################
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = no
smtp_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtp_tls_cert_file = /usr/local/etc/postfix/certs/servercert.pem
smtp_tls_key_file = /usr/local/etc/postfix/certs/serverkey.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/certs/servercert.pem
smtpd_tls_key_file = /usr/local/etc/postfix/certs/serverkey.pem
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 3
smtpd_starttls_timeout = 60s

然后还需要修改一下master.cf,在smtp监听那一行下面,添加smtps的监听:

smtps inet n – n – – smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

最后,重启一下postfix,设置客户端就可以了,465和995哦亲!不要设置错了哦亲!

Postfix Packages for Solaris 10

由于sendmail一直有个myhostname 的问题,必须要修改系统参数,才能让sendmail发送合法的邮件,然而,因为业务需要,有些服务器的主机名一旦设置完成,就不太方便修改,真是有点低级趣味,postfix可以在main.cf中设置hostname,这样就方便得多,于是安装一只postfix就很有必要了,在Linux上的安装很简单,在Solaris上却是麻烦不断,于是干脆找了一个二进制包:http://ihsan.dogan.ch/postfix/

首先当然要卸载系统自带的sendmail:

# svcadm disable sendmail
# pkgrm SUNWsndmu
# pkgrm SUNWsndmr

然后在线安装,作者提供了四种版本的postfix,我这里只需要Sparc平台的版本:

# pkgadd -d http://ihsan.dogan.ch/postfix/downloads/CNDpostfix-2.8.4,REV=110727-SunOS5.10-sparc.pkg CNDpostfix

当然,也可以下载来安装,装完之后呢把postfix添加到系统服务:

# svcadm enable svc:/network/postfix:default

然后呢修改一下/etc/postfix/main.cf,添加一行就可以了,把需要添加的发送主机名填进去:

myhostname = mail.qq.com

当然了还要重启一下postfix:svcadm restart postfix

Linux系统管理入门必须经历的三步

Linux系统管理员如何入门?这是很多Linux新手们关心的问题。一位CentOS的开发者,在英国伦敦工作的系统管理员Karanbir Singh近日撰写了一篇博文,对Linux新人如何进入Linux sysadmin的世界进行了阐述。以下为全文译文:

SA,大神与装机男:运维的工作到底啥样儿?

我们常常会看到这样的问题:面对 Linux 系统管理这个庞大的世界,应该从哪里开始?说实话,我觉得这个问题不存在一个清晰明确的答案。Linux 认证并非最理想的选择。你可以去参加一些培训课程,比如 RHCE。但是,如果没有任何背景信息而去参加培训,你可能无法享受到培训带来的好处,因为所有课程都有一个前提假设:你已经掌握了一些基本知识。

熟悉Linux以及发行版

一个开始系统管理员学习的方法是抓起一本相关主题的书来看(编辑推荐:51CTO读书频道的Linux版块有很多相关图书的样章)。然后安装几 个 Linux 版本(参考:几个比较知名的发行版),然后在你喜欢的版本上搞一些 VM 设置(参考:Linux下三大免费桌面虚拟机评测)。从一个版本开始,然后继续使用这个版本,至少用上几个月。但是,一旦熟悉了那些基础知识,你就要转向 其他发行版本,看看其他版本是如何工作的,这一点也非常重要。无论使用哪个版本,不同之处仅仅在于一些设计和平台常见通讯。最根本的操作系统还是 Linux,这一点不会改变。

使用一个新的平台时,有一点非常重要:你必须真正地投入进去。对此,有一个简单的方法:看看你现在正在做的事情,无论使用哪个平台,试着在这台 Linux 计算机上使用相同的方式去做系统的事情。掌握了那些基础的知识和操作之后,以后你就应该将这个 Linux 版本作为常用的工作平台。从低等级管理能力方面来看,这种方式并不会让你学到太多;不过,它可以让你学会从用户的角度来思考问题。

我一直都认为,最优秀的管理员一定是从用户的角度,从开发者的角度,然后从平台(和管理员)的角度,对问题进行思考。最后我们还要记住,计算机是用来工作的,而管理员的角色就是确保计算机能够充分发挥能力来完成工作。不要迷失了方向:目标仍然是做某件工作。

熟悉相关的应用程序/服务

我最初接触 Linux 的那段时间,常常会感觉很难与其他人的应用程序建立一种关联,很难弄清楚他们如何使用他们的计算机和网络。之所以很困难,因为我没有处于他们所在的位置, 甚至连跟上最新的情况都很困难。在寻找那种亲身体验的机会时,我认识到,和一个应用程序建立关联的最好方式就是加入他们的邮件列表。这样,你就可以看到其 他人遇到的问题,你也可以提出自己的问题,比如为什么那个事情要用那种特别的方式来解决,你还可以查看其他人贴出的 bug 报告。这些信息都清楚了展示了在“真实世界”中人们是如何使用这个应用程序的,这将为提供一个很好的根基。大约 14 年之后,我仍然认为特定程序的用户小组是学习一个应用程序的最好场所,你可以了解到如何对它进行管理,最好的部署方式,还有开发者/用户如何看待这个应用 程序的角度。

编写代码

最后,编程和实际写代码的能力也是有益的。不要相信那种到处流传的说法:管理员无需写代码。和周围优秀的系统管理员聊聊(有很多这样的人),你 会发现,几乎每个人都会告诉你,他们 40-60% 时间用于编写脚本,处理应用程序,而脚本的开发知识是有帮助的。我不是说你需要搞一个 Java 认证,但是你要对 bash 的基本编程有很好理解,至少能够使用 python、perl 和 ruby 中的一门语言(必要)。需要了解 unix/c 的传统想法仍然存在,不过现在,并不是有很多系统管理员需要深入到驱动程序开发那个层次,他们需要了解的大多数函数代码可以利用 bash、ruby、perl 或 python 进行很好的处理。