首页logo
  •  

jonllen

金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。

个人档案

jonllen
心情闪存 | 给他留言
妮称:jonllen
来自:中国. 湖南. 湘潭
简述:金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。
博客日历
当前位置: 首页 > Asp.Net > 把网站搬到Linux上

把网站搬到Linux上

分类:Asp.Net

前段时间主机快过期了,最近又在研究SSL证书,因为原来用的虚拟主机不是独立的VPS,不支持自己到网站上配置SSL,心里就捣鼓着想换一台独立的虚拟主机,我网站原来的运行环境是Windows2003 + IIS6.0 + .Net2.0 + MS Access数据,而Windows主机都比较贵,所有后面就想着把网站搬到Linux上,移植到的Linux的运行环境是Ubuntu12 + Apache2 + mono + mysql,自己实践使用mono在Linux运行.Net网站,于是便有出此文。

1.安装apache2

Ubuntu下使用apt-get安装很方便,需要先配置好安装包的源。编辑配置文件增加如下源:

vi /etc/apt/source.list

# 上海交大的源
deb http:
//ftp.sjtu.edu.cn/debian lenny main non-free contrib
deb http:
//ftp.sjtu.edu.cn/debian lenny-proposed-updates main non-free contrib
deb http:
//ftp.sjtu.edu.cn/debian-security lenny/updates main non-free contrib
# 163的源
deb http:
//mirrors.163.com/debian lenny main non-free contrib
deb http:
//mirrors.163.com/debian lenny-proposed-updates main non-free contrib
deb http:
//mirrors.163.com/debian-security lenny/updates main non-free contrib
# 附搜狐的源:
deb http:
//mirrors.sohu.com/ubuntu/ karmic main restricted
deb-src http:
//mirrors.sohu.com/ubuntu/ karmic main restricted
deb http:
//mirrors.sohu.com/ubuntu/ karmic-updates main restricted
deb-src http:
//mirrors.sohu.com/ubuntu/ karmic-updates main restricted
deb http:
//mirrors.sohu.com/ubuntu/ karmic universe
deb-src http:
//mirrors.sohu.com/ubuntu/ karmic universe
deb http:
//mirrors.sohu.com/ubuntu/ karmic-updates universe
deb-src http:
//mirrors.sohu.com/ubuntu/ karmic-updates universe
deb http:
//mirrors.sohu.com/ubuntu/ karmic multiverse
deb-src http:
//mirrors.sohu.com/ubuntu/ karmic multiverse
deb http:
//mirrors.sohu.com/ubuntu/ karmic-updates multiverse
deb-src http:
//mirrors.sohu.com/ubuntu/ karmic-updates multiverse


sudo apt-get update


--解决 公钥签名
gpg --keyserver subkeys
.pgp.net --recv 40976EAF437D05B5
gpg --export --armor 40976EAF437D05B5|sudo apt-key add -

然后再安装Apache2

sudo apt-get install apache2

2.配置mysql

同样使用apt-get安装mysql服务器端,如下:

sudo apt-get install mysql-server

然后修改my.cnf配置文件,允许远程访问mysql,不区分表名大小写,再重启mysql服务。

sudo apt-get install mysql-server

sudo vi
/etc/mysql/my.cnf


# 允许远程访问
#bind-address = 127.0.0.1

# 在[mysqld]下加入一行 不区分表名大小写
lower_case_table_names
= 1


sudo
/etc/init.d/mysql restart

有一次重启mysql后,账户就连不进不去了,必须要用系统登录账户进去修改密码。

mysql -udebian-sys-maint -p

Enter password:
<输入[client]节的密码>
直接使用
/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码

use mysql;
UPDATE user SET Password=PASSWORD('pengjinlong') where USER='root';
FLUSH
PRIVILEGES;

quit;

mysql默认安装的不支持中文模糊查询,需要修改配置来设置默认编码。

--编码设置
sudo vi /etc/mysql/my.cnf


[mysql]
#no
-auto-rehash # faster start of mysql but no tab completition
default-character-set=utf8

[mysqld]
character-set-server = utf8

3.安装mono

mono对.Net2.0的支持比较全,做Web服务器需要安装xsp2。

--安装mono运行环境
sudo apt-get install mono-gmcs mono-xsp2 libapache2-mod-mono mono-apache-server2

--启用mono模块
sudo a2enmod mod_mono

安装完成后,我们就可以开始配置.Net网站了,假如网站主目录在/var/www/blog,修改/etc/apache2/sites-enabled/000-default如下:

#修改apache配置文件增加网站配置
sudo vi sites-enabled
/000-default

MonoAutoApplication disabled
AddHandler mono
.aspx ascx .asax .ashx .config .cs .asmx .axd
MonoPath default
"/usr/bin/mono/2.0"
MonoServerPath default
/usr/bin/mod-mono-server2
AddMonoApplications default
"/blog:/var/www/blog"
#文件不需要大小写
MonoSetEnv MONO_IOMAP
=all

<Directory /var/www/blog>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow
,deny
allow from all
SetHandler mono
DirectoryIndex default
.aspx Default.aspx index.aspx index.html
</Directory>


--赋予网站执行权限
chmod -R
755 /var/www/blog

--重启apache服务
sudo
/etc/init.d/apache2 restart

重启apache服务后,如果不出问题使用localhost就能访问网站了,需要注意Liunx系统默认都没安装中文编码,在mono中有中文路径都显示乱码访问不到,需要修改系统配置增加中文语言包。

#增加中文支持

sudo vi
/var/lib/locales/supported.d/local

zh_CN
.UTF-8 UTF-8
en_US
.UTF-8 UTF-8


sudo locale-gen --purge


sudo vi
/etc/default/locale
LANG
="zh_CN.UTF-8"
LANGUAGE
="zh_CN:zh"

4.配置ssl证书

配置apache服务器SSL证书,首先需要启用ssl模块,然后再配置服务器证书和私钥Key。

--启用ssl模块
sudo a2enmod ssl


--创建默认ssl网站配置
sudo ln
-s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl


--增加ssl网站配置
sudo vi
/etc/apache2/sites-enabled


#启用ssl
SSLEngine on

#ssl证书文件
SSLCertificateFile /etc/apache2/ssl/server.crt
#ssl证书私钥
SSLCertificateKeyFile /etc/apache2/ssl/server.key


#证书链
SSLCertificateChainFile /etc/apache2/ssl/ca.crt

#证书验证深度
SSLVerifyDepth 10


#ssl选项
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire

配置好ssl网站重启apache服务,输入https://jonllen.com就能使用安全连接访问网站,如果需要客户端证书,可以将网站配置为双向认证,则要在apache网站配置中指定客户端颁发机构CA证书。

<Directory /var/www/blog/Passport>
SSLVeriFyClient
require
SSLCACertificateFile
/etc/apache2/ssl/ca.crt
</Directory>

这样,在访问需要配置SSL客户端证书路径时,客户端浏览器就会提示需要ca.crt颁发的客户端证书。需要注意服务器端要使用Request.ClientCertificate获取客户端证书,上面SSLOptions选项一定配置,否则会取不到客户端证书数据。

将这个网站移植到Linux上,总体来说使用mono基本能够满足功能,但还是有些地方还需要调整。比如Linux下对Access数据库访问支持不好,需要使用第三方工具或更换成mysql。在使用NHibernate时偶尔也出现了些问题,另外,使用了log4net日志的用mono版本的log4net.dll,日志内容会输出到apache的日志文件中。

标签:Asp.Net
  • posted@ 2013-06-29 17:43
  • update@ 2013-06-30 23:23:52
  • 阅读(4363)
  • 评论(0)

相关文章

评论
暂无任何评论。
发表评论
*必填
回复通知我
*必填

博文推荐