mengxj

CentOS(Linux)搭建Nginx+Mono+Oracle部署asp.net网站



前言:

1)  本测试系统CentOS6.232

2)  所有操作账号都是root

3)  Oracle服务器是oracle 10g

4)  本测试只安装Oracle10g精简版的客户端

1、更新系统

#yum update

2、安装必要的相关库

#yum install gcc gcc-c++ bison pkgconfig glib2-devel gettextmake libpng libpng-devel libjpeg libjpeg-devel libtiff-devel libexif-devellibxml2 libxml2-devel libxml2 libxml2-devel libX11-devel freetype-develfontconfig-devel cairo-devel httpd httpd-devel giflib-devel glibc glibc-develglib2 glib2-devel autoconf freetype freetype-devel zlib zlib-devel bzip2 bzip2-devel

3、下载程序源码包

1Nginx安装包:下载地址:http://nginx.org/en/download.html

2Mono下载:官网:http://download.mono-project.com/sources/mono/(请下载最新版)

3libgdiplus下载:http://download.mono-project.com/sources/libgdiplus/(请下载最新版)

4xsp下载:http://download.mono-project.com/sources/xsp/(请下载最新版)

5xsp下载:http://download.mono-project.com/sources/xsp/(请下载最新版)

6pcre下载(Nginx所需的pcre库):FTP://ftp.csx.cam.ac.uk/pub/software/programming/pcre/(请下最新版)

7Oracle10.2 instant clienthttp://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载:oracle-instantclient-basic-10.2.0.5-1.i386.rpmoracle-instantclient-devel-10.2.0.5-1.i386.rpmoracle-instantclient-jdbc-10.2.0.5-1.i386.rpmoracle-instantclient-sqlplus-10.2.0.5-1.i386.rpm

8)将下载的文件放到centos系统“/usr/local/src/” 目录下

如上第1~6个安装文件可以通过如下命令下载

#cd /usr/local/src/

#wget http://nginx.org/download/nginx-1.1.11.tar.gz

#wget http://download.mono-project.com/sources/mono/mono-2.11.4.tar.bz2

#wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2

#wget http://download.mono-project.com/sources/xsp/xsp-2.10.2.tar.bz2

#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.gz

Oracle 11.2 instant client 需要注册单独下载

4、安装编译Nginx

1)  安装安装Nginx所需的pcre

#cd /usr/local/src/

#tar zxvf pcre-8.31.tar.gz
#cd pcre-8.31/
#./configure
#make && make install

2)  创建www用户和组

#/usr/sbin/groupadd www
#/usr/sbin/useradd -g www www
#mkdir -p /data0/web
#chmod +w /data0/web
#chown -R www:www /data0/web

3)  安装Nginx

#cd /usr/local/src/

#tar zxvf nginx-1.1.11.tar.gz

#cd nginx-1.1.11/
#./configure --user=www --group=www --prefix=/opt/nginx--with-http_stub_status_module --with-http_ssl_module

#make && make install

4)  开放80端口

#iptables -I INPUT -p tcp --dport 80 -j ACCEPT

5)  启动nginx

#cd #

#/opt/nginx/sbin/nginx

//启动时可能报文件缺失错误

/opt/nginx/sbin/nginx: error while loading shared libraries:libpcre.so.1: cannot open shared object file: No such file or directory

#ldd $(which /opt/nginx/sbin/nginx)

linux-gate.so.1 => (0x00212000)

libpthread.so.0 =>/lib/libpthread.so.0 (0x0018b000)

libcrypt.so.1 =>/lib/libcrypt.so.1 (0x0275f000)

libpcre.so.1 => not found

libssl.so.10 =>/usr/lib/libssl.so.10 (0x028c1000)

libcrypto.so.10 =>/usr/lib/libcrypto.so.10 (0x025d0000)

libdl.so.2 =>/lib/libdl.so.2 (0x001a8000)

libz.so.1 =>/lib/libz.so.1 (0x001db000)

libc.so.6 =>/lib/libc.so.6 (0x00246000)

/lib/ld-linux.so.2(0x00169000)

libfreebl3.so =>/lib/libfreebl3.so (0x00101000)

libgssapi_krb5.so.2 =>/lib/libgssapi_krb5.so.2 (0x02880000)

libkrb5.so.3 =>/lib/libkrb5.so.3 (0x024f8000)

libcom_err.so.2 =>/lib/libcom_err.so.2 (0x00a95000)

libk5crypto.so.3 =>/lib/libk5crypto.so.3 (0x00d9b000)

libresolv.so.2 =>/lib/libresolv.so.2 (0x0021d000)

libkrb5support.so.0 =>/lib/libkrb5support.so.0 (0x00d52000)

libkeyutils.so.1 => /lib/libkeyutils.so.1(0x00dc9000)

libselinux.so.1 =>/lib/libselinux.so.1 (0x001ad000)

# cd /lib

# ln libpcre.so.0.0.1 libpcre.so.1

# /opt/nginx/sbin/nginx

# ps -ef |grep nginx

6)  在浏览器上输入访问地址 http://192.168.1.1/(根据个人本机地址页定),正常会看到默认nginx页面

5、 安装编译Mono

1)  安装libgdiplus

#cd /usr/local/src/

#tar -jxvf libgdiplus-2.10.tar.bz2
#cd libgdiplus-2.10
#./configure --prefix=/opt/mono
#make && make install
#echo "/opt/mono/lib" > /etc/ld.so.conf.d/mono.conf
#ldconfig

2)  安装Mono

#cd /usr/local/src/

#tar -jxvf mono-2.11.4.tar.bz2
#cd mono-2.11.4
#./configure --prefix=/opt/mono
#make && make install   
//此处时间较长

#echo exportPKG_CONFIG_PATH=/opt/mono/lib/pkgconfig:$PKG_CONFIG_PATH>>~/.bash_profile
#echo export LD_LIBRARY_PATH=/opt/mono/lib:$LD_LIBRARY_PATH>>~/.bash_profile
#echo export PATH=/opt/mono/bin:$PATH>>~/.bash_profile
#source ~/.bash_profile

3)  输入 mono -V 如有mono版本信息,则安装成功.

4)  安装XSP

#cd /usr/local/src/

#tar -jxvf xsp-2.10.2.tar.bz2

#cd xsp-2.10.2
#./configure --prefix=/opt/mono
#make && make install

6、配置Nginx

#vi /opt/nginx/conf/nginx.conf
server {

listen 80;

server_namelocalhost;

location / {

root /data0/web;

index index.htmlindex.htm;

fastcgi_indexDefault.aspx;

fastcgi_pass127.0.0.1:9000;

include fastcgi_params;

}

}

7、 配置fastcgi_params

#vi /opt/nginx/conf/fastcgi_params //增加下面两行

fastcgi_param PATH_INFO "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

8、安装oracle客户端(Oracle 10.2.0.5 instant client

1)  安装程序包

#cd /usr/local/src/

#rpm -ivh oracle-instantclient-basic-10.2.0.5-1.i386.rpm

#rpm -ivh oracle-instantclient-devel-10.2.0.5-1.i386.rpm

#rpm -ivh oracle-instantclient-jdbc-10.2.0.5-1.i386.rpm

#rpm -ivh oracle-instantclient-sqlplus-10.2.0.5-1.i386.rpm

#vi ~/.bashrc   //增加下面内容

LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/oracle/10.2.0.5/client/lib      //对于64位版本可能是client64

2)  测试

#sqlplus /nolog

系统报错

sqlplus:error while loading shared libraries: libsqlplus.so: cannot open shared objectfile: No such file or directory

3)  修改系统配置(这个得用root用户)

#vi /etc/ld.so.conf   //加入下面一行

/usr/lib/oracle/10.2.0.5/client/lib/
#/sbin/ldconfig

4)  重新运行

# sqlplus /nolog
SQL*Plus: Release 10.2.0.5.0 Production on Fri Sep 14 01:46:032012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL>quit;
成功了

5)  配置TNS连接远程的Oracle(想要连接远程的Oracle数据库得建立TNS

#mkdir -p /usr/lib/oracle/10.2.0.5/network/admin

1)在上面的目录下新建一个tnsnames.ora 文件,文件内容如下

#tnsnames.ora Network Configuration File:/usr/lib/oracle/10.2.0.5/network/admin/tnsnames.ora

#Generated by Oracle configuration tools.

orcl=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT= 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

说明:第一个orcl是本地连接用的标记,第二个orcl是远程服务器的服务名

2)在上面的目录下新建一个sqlnet.ora 文件,文件内容如下

#sqlnet.ora Network Configuration File:/usr/lib/oracle/10.2.0.5/network/admin/sqlnet.ora

#Generated by Oracle configuration tools.

#This file is actually generated by netca. But if customers choose to

#install "Software Only", this file wont exist and without the native

#authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES=(NTS)

NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)

6)  修改环境变量

#vi ~/.bashrc

//增加下面两行
export ORACLE_HOME=/usr/lib/oracle/10.2.0.5
export TNS_ADMIN=/usr/lib/oracle/10.2.0.5/network/admin
//重启一下环境变量,或者用户logout/login一次
#source ~/.bashrc

7)  再测试

#sqlplus myOracleUsername/password@PRODB2

SQL*Plus:Release 10.2.0.5.0 Production on Fri Sep 14 02:16:00 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connectedto:

OracleDatabase 10g Enterprise Edition Release 10.2.0.1.0 - Production

Withthe Partitioning, OLAP and Data Mining options

SQL>

成功。

说明:

1、  如果其他用户需要使用sqlplus,需要在该用户的~/.bashrc文件中添加上面提到的3行环境变量。

2、  Sqlplus查询结果中文可能出现乱码解决

#vi ~/.bash_profile

export NLS_LANG=AMERICAN_AMERICA.UTF8

#source ~/.bash_profile

根据创建数据库时选择的字符集修改NLS_LANG变量

如果是UTF-8exportNLS_LANG=AMERICAN_AMERICA.UTF8

如果是 GBK exportNLS_LANG=american_america.ZHS16GBK

注销后生效

这样再重新进入sqlplus

已经不会是乱码

参考:http://www.wzzjla.com/Html/201208/436.html

9、启动网站

1)  重启nginx

#/opt/nginx/sbin/nginx -s reload

2)  启动 fastcgi_mono服务器

#fastcgi-mono-server2 /applications=/:/data0/web/socket=tcp:127.0.0.1:9000 &

10、             测试

新建一个asp.net Web项目上传至 /data0/web目录下,测试运行。

11、             参数资料

http://down.chinaz.com/server/201112/1493_1.htm

http://www.cnblogs.com/aquilahkj/archive/2011/11/03/2234380.html

http://blog.sina.com.cn/s/blog_5fd26d460100vyuk.html

http://linuxer2012.blog.51cto.com/3345733/801556

 

分类:

技术点:

相关文章: