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最早由Linus Benedict Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。

  Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:

  Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

  Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing和unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get /dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)

  Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

  Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。

  最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对新硬件的支持没有Linux完备,所以并不适合作为桌面系统。

下面给为选择一个Linux发行版本犯愁的朋友一些建议:

  如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。

  如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!

  如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。

  如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。

  如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。

Apache and PHP FastCGI

虽然Nginx加上php有相当优秀的表现,但是有时候,基于业务需要,不得不用ApachephpApache下有两种运行方式,一种是编译成Apache的模块,一种是以cgi方式运行,cgi则可细分为fastcgi,以模块方式运行,无论Apache还是php出现安全漏洞,需要升级软件版本,都需要同时重新编译二者,这是一个很没有统筹科学的态度,以普通cgi方式运行,配置简单,但比之于fastcgi效率不高,每个脚本执行都需要reload script和php.ini,基本上,这个意思就是说,脚本缓存是无效的,所以,我们需要fastcgi。

需要说明的是,在当前php5.3.6版本中,php-fpm已经包含在源代码中,只需要在编译的时候加入相应参数: –enable-fpm,安装完成后,拷贝/src/php-5.3.6/sapi/fpm/init.d.php-fpm 到/usr/local/bin/,然后chmod +x 就可以了

Usage: /usr/local/bin/init.d.php-fpm {start|stop|force-quit|restart|reload}

当然,你知道配置文件默认放在/usr/local/etc/php-fpm.conf,修修改改就可以start了!

php的配置很简单,但Apache的mod_fastcgi是需要单独下载编译的:
1,下载mod_fastcgi:http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
解压缩了来安装到Apache里面去,例如,我们把Apache安装在了/usr/local/httpd:

tar zxf mod_fastcgi-current.tar.gz
cd mod_fastcgi-2.4.6
cp Makefile.AP2 Makefile
make install top_dir=/usr/local/httpd

2,在配置文件中启用mod_fastcgi,例如我们可以包含一个配置文件在extra目录中,起个名字叫httpd-fastcgi.conf,这个例子呢,我是把php-fpm的socket放在/tmp目录下的:

LoadModule fastcgi_module modules/mod_fastcgi.so
ScriptAlias /php-bin /usr/local/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /php-bin/php-cgi
FastCgiExternalServer /usr/local/bin/php-cgi -socket /tmp/php.sock

当然,基于安全考虑,可以将配置文件单独放在不同的虚拟主机中。