centos6.2 64位上配置oracle客户端

新项目为了使用php连接oracle数据库,对几台php服务器进行了oracle拓展支持的安装,搜了一下网上现有的几篇centos配置oracle的文章,其实都是有问题的.结合了相关搜索结果进行了整理,给出最完美的解决方案如下:

1. 下载oracle官方的rpm包 

http://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm

http://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

这两个下载地址都很恶心地被oracle墙在用户登录验证成功之后才能下载,所以你要去注册很恶心的oracleID(虽然是免费注册的.)直接wget来的将会是一个错误页面.

 

2.查看一下两个包的默认安装路径

rpm -qpl oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

rpm -qpl oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm

一般正常情况下,默认安装路径为:

oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm:

/usr/bin/sqlplus64
/usr/lib/oracle/11.2/client64/bin/sqlplus
/usr/lib/oracle/11.2/client64/lib/glogin.sql
/usr/lib/oracle/11.2/client64/lib/libsqlplus.so
/usr/lib/oracle/11.2/client64/lib/libsqlplusic.so

 

oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm:

/usr/lib/oracle/11.2/client64/bin/adrci
/usr/lib/oracle/11.2/client64/bin/genezi
/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1
/usr/lib/oracle/11.2/client64/lib/libnnz11.so
/usr/lib/oracle/11.2/client64/lib/libocci.so.11.1
/usr/lib/oracle/11.2/client64/lib/libociei.so
/usr/lib/oracle/11.2/client64/lib/libocijdbc11.so
/usr/lib/oracle/11.2/client64/lib/ojdbc5.jar
/usr/lib/oracle/11.2/client64/lib/ojdbc6.jar
/usr/lib/oracle/11.2/client64/lib/xstreams.jar

 

3.修改全局环境变量

nano /etc/profile
# Oracle InstantClient PATH by Daishengxiang 2013/04/06 2:56
export PATH=$PATH:/usr/lib/oracle/11.2/client64/bin
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2
export TNS_ADMIN=/usr/lib/oracle/11.2/network/admin

 

4.创建配置文件

mkdir /usr/lib/oracle/11.2/network/admin

nano /usr/lib/oracle/11.2/network/admin/tnsnames.ora

 

其中tnsnames.ora的内容可以从oracle server那边直接拷贝过来,形式如同:

PRODB2 =
    (DESCRIPTION =
            (ADDRESS_LIST =
                    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.3.103.1)(PORT = 1521))
            )
            (CONNECT_DATA =
                    (SERVER=DEDICATED)
                    (SID = PRODB2)
            )
    )

 

最后,通过sqlplus测试连接oracle,通过连接.证明配置成功有效

 

Read More

在nginx环境下discuz x2.5出现上传附件出错upload error:413的解决方法

实际上这条错误信息来源于nginx,而不是dz论坛程序本身设置有误.413 Request Entity Too Large 413错误是请求实体过大,那么通过修改nginx的最大整体请求大小可以解决此问题

经过调试研究给出解决方案如下

在nginx.conf增加 client_max_body_size的相关设置, 这个的默认是1m,可以增加到10m或更多,但是至少应该大于discuz后台设置的文件上传最大值;

然后再需要特别注意的是,php.ini文件中的

post_max_size = 10M
upload_max_filesize = 5M

分别需要对应改大,我现在使用的设置大小如上.

至此413错误问题解决.

Read More

gentoo下用emerge安装memcache以及pecl-memcache

gentoo下安装memcache的方法和网上常用的介绍方法略有出入,如果不希望自己编译安装采用emerge统一管理的话,记得执行如下命令

先执行 emerge memcache

之后在emerge pecl-memcache  安装pecl-memcache,即将其安装为php的拓展后并自动重载conf

然后将php-cgi重启一下,安装so easy全部完成了

不用采用网上说的自己去pecl网站下memcache包再自己编译的方法,这样不利于后面的软件统一管理升级.

 

备注:安装完memcache之后,即使memcache启动成功并且配置都ok了,有的童鞋在discuz!x2里面显示的还是php拓展不支持的原因就是因为没有安装为拓展并设置php.ini所以交给pecl去统一配置安装去最方便的.

Read More

Nginx在多核至强cpu服务器上的性能优化-LNMP环境性能优化第一篇

今天真是阳光明媚的好天气啊~~在工作室坐等开会,忙里偷闲把服务器性能优化的事情顺便做一做哈,这里记录一下,给广大童鞋作为参考~

 

话说虽然使我们自己的服务器,其实接管过来的时间也不久,对硬件不甚了解…于是我第一步做了这个事情…..

1. cat /proc/cpuinfo

查看到服务器的CPU是E5335,百度了一下他的参数,确定了需要优化的核心数量.以及优化方向(ps:他是至强的U我还是知道的… 所以肯定是走intel的优化)

 

2.nano /etc/nginx/nginx.conf

进入正题,修改nginx配置信息.

(1)首行找到 worker_processes 1;

数值根据cpu核心数对应改为4.

这里注意一个问题,worker_processes不建议超过8,因为即使你是多路多核的server,开多了反而不稳定了.而且性能完全没有提升了.

 

(2)增加一行: worker_cpu_affinity 0001 0010 0100 1000;

这里解释一下为每个cpu分配进程的设置,这里的0代表核心关闭,1代表开启相信很多童鞋都懂的,然后我想特别注释一下的就是这个数字的位数对应你cpu的实际核心数,4核心就是四位,每一位的数值对应一个核心的状态,双核就是01 10两个咯,八核对应的就有00000001这样的设置参数.

 

(3)worker_rlimit_nofile 1024;

一个nginx进程打开的最多文件描述符数目;

设置值前先运行命令 ulimit -n查看,我们服务器返回的是1024,于是填好数值后,pass

 

(4)use epoll;

使用epoll的i/o操作方式,具体到底use什么合适呢,我找到了一篇排版很混乱的参考文章.

http://www.kvm.la/2012/01/15/426.html

同时将use epoll加入events大括号内.

 

(5)nano /etc/sysctl.conf

内核优化配置

 

直接拷贝网上的..以后有空在微调之

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000

 

敲入 /sbin/sysctl -p 立即生效内核配置更改.

 

 

OK,现弄这些,马上开会了,以后继续补充研究~

Read More