在Linux(Ubuntu/openSUSE/CentOS)下安排ASP.NET(Apache + Mono)

  转载自:http://114.xixik.com/regex/

【题外话】

  正则表明式(英文:Regular Expression)在统计机科学中,是指一个用来
描述如故配合一多元符合某个句法规则的字符串的单个字符串。

闲的俗气竟然想尝试测试自己做的序列在不同操作系统上的习性表现,所以决定尝试在Linux上配备Apache和Mono的环境。由于平时很少接触Linux,所以从网上找了几篇著作(附在相关链接中)尝试,部署的经过也绝不一帆风顺,所以就根据自己在Azure上安排的场地再次举办了整理,希望对很少接触Linux的同桌有所补助。以下有所操作均在Azure上的虚拟机里部署,如若在本地或者虚拟机里布置,可能率先还亟需安排网卡设置等。

一、常用正则表达式

 

  • 正则表达式用于字符串处理、表单验证等场面,实用高效。现将一部分常用的表明式收集于此,以备不时之需。
  • 用户名:/^[a-z0-9_-]{3,16}$/   
  • 密码:/^[a-z0-9_-]{6,18}$/
  • 十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
  • 电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
  • URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w
    \.-]*)*\/?$/
  • IP 地址:
    /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][
    0-9]|[01]?[0-9][0-9]?)$/
  • HTML
    标签:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
  • Unicode 编码中的汉字范围:/^[u4e00-u9fa5],{0,}$/
  • 匹配粤语字符的正则表明式: [\u4e00-\u9fa5]
    • 评注:匹配闽南语还真是个高烧的事,有了这么些表明式就好办了
  • 分外双字节字符(包括汉字在内):[^\x00-\xff]
    • 评注:能够用来计量字符串的长短(一个双字节字符长度计 2,ASCII
      字符计 1)
  • 匹配空白行的正则表明式:\n\s*\r
    • 评注:可以用来删除空白行
  • 匹配 HTML
    标记的正则表明式:<(\S*?)[^>]*>.*?</\1>|<.*?
    />

    • 评注:网上流传的版本太不好,下边这多少个也单独能匹配部分,对于复杂的嵌套标记依旧不能
  • 匹配首尾空白字符的正则表明式:^\s*|\s*$

    • 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表明式
  • 非凡 Email 地址的正则表明式:
    \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    • 评注:表单验证时很实用
  • 匹配网址 URL 的正则表明式:[a-zA-z]+://[^\s]*
    • 评注:网上流传的本子效果很有限,下边那些核心得以满足急需
  • 至极帐号是否合法(字母起头,允许 5-16 字节,允许字母数字下划线):
    ^[a-zA-Z][a-zA-Z0-9_]{4,15}$

    • 评注:表单验证时很实用
  • 配合国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
    • 评注:匹配格局如 0511-4405222 或 021-87888822
  • 匹配腾讯 QQ 号:[1-9][0-9]{4,}
    • 评注:腾讯 QQ 号从 10000 开始
  • 异常中国大洲邮编:[1-9]\d{5}(?!\d)
    • 评注:中国次大陆邮编为 6 位数字
  • 匹配身份证:\d{15}|\d{18}
    • 评注:中国新大陆的身份证为 15 位或 18 位
  • 匹配 ip 地址:\d+\.\d+\.\d+\.\d+
    • 评注:提取 ip 地址时有用
  • 很是特定数字:
    • ^[1-9]\d*$ //匹配正整数
    • ^-[1-9]\d*$ //匹配负整数
    • ^-?[1-9]\d*$  //匹配整数
    • ^[1-9]\d*|0$   //匹配非负整数 (正整数 + 0)   
    • ^-[1-9]\d*|0$  //匹配非正整数(负整数 + 0)
    • ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
    • ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
    • ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
      //匹配浮点数
    • ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
      //匹配非负浮点数(正浮点数 + 0)
    • ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
      //匹配非正浮点数(负浮 点数 + 0)
    • 评注:处理大量多少时有用,具体应用时只顾修正

【随笔索引】

 

  1. 在Ubuntu下安装Apache
  2. 在Ubuntu下安装Mono
  3. 在Ubuntu下部署ASP.NET网站
  4. 在openSUSE下的操作
  5. 在CentOS下的操作
  6. 有关链接
  • 分外特定字符串:

    • ^[A-Za-z]+$  //匹配由 26 个英文字母组成的字符串
    • ^[A-Z]+$      //匹配由 26 个英文字母的大写组成的字符串
    • ^[a-z]+$       //匹配由 26 个英文字母的小写组成的字符串
    • ^[A-Za-z0-9]+$ //匹配由数字和 26 个英文字母组成的字符串
    • ^\w+$ //匹配由数字、26 个英文字母或者下划线组成的字符串

 

  二、表明式全集

【一、在Ubuntu下安装Apache】

  正则表明式有多种不同的风骨。下表是在 PCRE
中元字符及其在正则表明式上下 文中的行为的一个完好无损列表:

Ubuntu
Server安装将来,默认没有图形界面,其实在Linux不用图形界面也很容易就足以开展安排。在Azure上配置好Ubuntu
Server(这里运用Azure上提供的Ubuntu Server 12.04
LTS,2013/6/24)未来,会自行配置好SSH的22端口,大家得以一贯运用SSH工具连接服务器,那里运用免费开源的PuTTY(http://www.putty.org/)。假使在Azure上部署的采纳密码连接主机则那里平素输入地方点击“Open”即可,假若还上传了SSH密钥,则还应在Connection/SSH/Auth里采取相应的密钥才得以连续。

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
. 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[.\n]”的模式。
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d 匹配一个数字字符。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^\f\n\r\t\v]。
\t 匹配一个制表符。等价于\x09和\cI。
\v 匹配一个垂直制表符。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
\xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。.
\num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。
\nml 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(?)。

语言 1

  以下是以 PHP 的语法所写的以身作则

一连后输入设置的用户名和密码即可登录Ubuntu系统,会并发如下图的命令行,我们所做的几乎所有工作都是通过命令行操作的。

  验证字符串是否只含数字与英文,字符串长度并在 4~16 个字符之间

语言 2

1 <?php
2 
3 $str = 'a1234';
4 if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) {
5 echo "驗證成功"; } else {
6 
7 echo "驗證失敗"; }
8 
9 ?>

简易的台湾身份证字号验证

1 <?php
2 
3 $str = 'a1234';
4 if (preg_match("/^\w[12]\d{8}$/", $str)) {
5 echo "驗證成功"; } else {
6 
7 echo "驗證失敗"; }
8 
9 ?>

在Ubuntu下安装软件其实特别方便,Ubuntu提供了apt-get工具,可以应用该工具直接下载安装软件。

 

在Linux里,系统最高权力账户为root账户,而默认登录的账户并非root账户,例如不享有安装程序等权限,然而同Windows一样都提供了晋级权限的主意,就是sudo命令,在实施的每条命令前增长“sudo
”,即可以root账户的权力履行。在率先次采用sudo时会要求输入当前账户的密码,确认后即可在一段时间(默认5分钟)内尔y用sudo命令都不需要输入密码,一段时间没有利用后则需要再行输入密码。

以下示例是用 Perl 语言写的,与地点的演示成效雷同

率先我们设置Apache,输入下列命令,之后会指示是否安装等,输入Y继续。软件包详情:http://packages.ubuntu.com/quantal/apache2

print $str = “a1234” =~ m:^[a-zA-Z0-9]{4,16}$: ? “COMFIRM” :
“FAILED”;

print $str = “a1234″ =~ m”^\w[12]\d{8}$” ? “COMFIRM” : “INVAILD”;

sudo apt-get install apache2

三、怎样写出高效率的正则表明式

语言 3

  假如纯粹是为了挑衅自己的正则水平,用来促成部分神效(例如利用正则表明式
总计质数、解线性方程),效用不是题材;假若所写的正则表达式只是为了满 足
一五回、几十次的运作,优化与否区别也不太大。可是,假若所写的正则说明式
会百万次、千万次地运转,功用就是很大的题材了。我这边总括了几条提高正则
表 达式运行功用的阅历(工作中学到的,看书学来的,自己的咀嚼),贴在这里。如果你有其他的经验而这边没有提及,欢迎赐教。

等候一段时间后,Apache就会活动安装配置好,这时候可以安排好Azure上的80端口,配置好后使用浏览器访问服务器的地点可以看来如下图的擢升,表达安装成功。

 为行文方便,先定义两个概念。

语言 4

  误匹配:指正则表明式所匹配的内容范围超出了所急需限制,有些公文明明不符
合要求,不过被所写的正则式“击中了”。例如,假使采取\d{11}来匹配 11 位
的手机号,\d{11}不单能匹配正确的手机号,它还会匹配 98765432100 这样的分明不是手机号的字符串。我们把这么的匹配称之为误匹配。

 

  漏匹配:指正则表明式所匹配的内容所确定的范围太狭隘,有些公文确实是所需
要的,不过所写的正则没有将这种景观包括在内。例如,使用\d{18}来匹配 18
位的身份证编号,就会挂一漏万结尾是字母 X 的动静。

【二、在Ubuntu下安装Mono】

  写出一条正则表明式,既可能只现出误匹配(条件写得极宽松,其范围大于目的文本),也说不定只现出漏匹配(只描述了对象文本中多种情状种的一种),还可
能既有误匹配又有漏匹配。例如,使用\w+\.com 来匹配.com 结尾的域名,既会
误匹配 abc_.com 这样的字串(合法的域名中不含下划线,\w 包含了下划线这种
意况),又会挂一漏万 ab-c.com 这样的域名(合法域名中可以含中写道,不过\w 不
匹配中写道)。

Linux有个开源的.NET运行时,叫做Mono(http://www.mono-project.com/),可以支撑在Linux上运行.NET应用程序。

  精准的正则表达式意味着既无误匹配且无漏匹配。当然,现实中存在这样的意况:
只可以看到零星数量的文本,按照这么些文件写规则,不过这多少个规则将会用到海 量
的公文中。这种意况下,尽可能地(假诺不是截然地)消除误匹配以及漏匹配,
并提高运行效用,就是大家的目标。本文所指出的经验,紧假如针对这种情景。

仍然按上述情势输入下列命令安装Mono及C#编译器,软件包详情:http://packages.ubuntu.com/quantal/mono-gmcs

  明白语法细节。正则表明式在各类语言中,其语法大致相同,细节各有千秋。明
确所使用语言的正则的语法的底细,是写出不错、高效正则表明式的底蕴。例如,
perl 中与\w 等效的配合范围是[a-zA-Z0-9_];perl
正则式不协理肯定逆序环视 中行使可变的重复(variable repetition inside
lookbehind,例如 (?<=.*)abc),然而.Net
语法是襄助这一风味的;又如,JavaScript 连逆序环
视(Lookbehind,如(?<=ab)c) 都不援助,而 perl 和 python
是襄助的。《理解 正则表明式》第 3
章《正则表明式的特色和门户概览》明确地列出了各大门户正
则的异同,那篇随笔也简要 地列出了三种常用语言、工具中正则的可比。对于
具体使用者而言,至少应该详细询问正在利用的这种工作语言军机大臣则的语法细
节。

sudo apt-get install mono-gmcs

  先粗后精,先加后减。使用正则表明式语法对于目的文本举办描述和范围,可以像画水墨画一样,先大致勾勒出框架,再逐月在局步实现细节。仍举刚才的手机号
的例证,先界定\d{11},总不会错;再细化为 1[358]\d{9}, 就向前迈了一大
步(至于第二位是不是
3、5、8,这里无意深究,只举这样一个例子,表明渐渐细化的进程)。这样做的目标是先去掉漏匹配(刚先河先尽可能多
地配合,做
加法),然后再一点一点地扫除误匹配(做减法)。这样有先有后,在设想时才
不易出错,从而向“不误不漏”这些目的迈进。

设置完后得以输入“mono
-V”查看安装的mono的版本(注意V是大写的),当然也可以写个C#的ConsoleApp看看,可以用下列命令编译C#代码。

  留有余地。所能看到的文本 sample
是少数的,而待匹配检验的公文是海量的,
暂时不可见的。对于这么的意况,在写正则表明 式时要跳出所能见到的文本的
圈子,开拓思路,作出“战略性前瞻”。例如,通常收到这样的垃圾短信:“发
*票”、“发#漂”。如若要写规则屏蔽这样烦人的垃 圾短信,不但要能写出可以相当当前文件的正则表明式 发[*#](?:票|漂),还要可以想到
发.(?:票|漂|
飘)之类可能现身的“变种”。这在切切实实的世界可能会有指向的条条框框,不多言。
这样做的目的是解除漏匹配,延长正则表明式的生命周期。

gmcs test.cs

  明确。具体说来,就是小心用点号这样的元字符,尽可能不用星号和加号这样的
任意量词。只要能确 定范围的,例如\w,就不用用点号;只要可以预测重复次
数的,就无须用任意量词。例如,写析取 twitter 信息的本子,假使一条音信的
xml 正文部分结 构是<span
class=”msg”>…</span>且正文中无尖括号,那么 <span
class=”msg”>[^<]{1,480}</span>这种写法的笔触要好于<span
class=”msg”>.*</span>,原因有二:一是使用[^<],它保证了文本的范围不
会超出下一个低于号所在的职位;二是醒目长度限制,{1,480},其基于是一条
twitter 消息大致能的字符长度限制。当然,480 这一个尺寸是否正确还可推敲,
不过这种思路是值得借鉴的。说得狠一点,“滥用点号、星号和加号是不环保、
不负责任的做法”。

若果程序尚未问题的话则会生成test.exe,可以通过如下命令执行。当然也得以在Windows上编译好exe文件后复制到Linux上执行也是可以的。

  不要让稻草压死骆驼。每使用一个常备括号()而不是非捕获型括号(?:…),就会
保留部分内存等着你再度走访。这样的正则表达式、无限次地运作次数,无异
于一根根稻草的堆加,终于能将骆驼压死。养成合理选拔(?:…)括号的习惯。

mono test.exe

  宁简勿繁。将一条复杂的正则表达式拆分为两条或多条简单的正则表达式,编程
难度会稳中有降,运行功能会提高。例如用来废除行首和行尾空白字符的正则表明式
s/^\s+|\s+$//g;,其运作效率理论上要低于 s/^\s+//g; s/\s+$//g;
。这一个例
子出自《了然正则表明式》第五章,书中对它的褒贬是“它几乎连接最快的,而
且显明最容易领悟”。既快又便于驾驭,何乐而不为?工作中我们还有此外的理
由要将 C==(A|B)这 样的正则表明式拆为 A 和 B 两条表明式分别实施。例如,尽管 A 和 B 这二种情状倘若有一种可以击中所需要的文书形式就会中标匹配,可是固然一旦有一便条表明式 (例如 A)会时有暴发误匹配,那么不论是其余的子表明式
(例如 B)效能如何之高,范围怎么样精准,C 的完整精准度也会因 A 而碰着震慑。

接下去依照自己索要的版本拔取安装Apache对ASP.NET 2.0要么ASP.NET
4.0的支撑,mono-apache-server2为ASP.NET
2.0的帮忙,mono-apache-server4是ASP.NET
4.0,两者可以同时设有,切换需要在Apache的布置文件中切换。软件包详情:http://packages.ubuntu.com/quantal/mono-apache-server2

  巧妙定位。有时候,大家需要配合的 the,是用作单词的 the(两边有空格),
而不是当做单词一片段的 t-h-e 的稳步排列(例如 together 中的 the)。在适
当的时候用上^,$,\b 等等定位锚点,能立竿见影进步找到成功匹配、淘汰不成功
匹配的功能。

sudo apt-get install mono-apache-server2

不知底怎么,安装到终极会卡在那一个地点

语言 5

只好透过Ctrl+Z强制退出,然后输入“sudo
reboot”重启服务器,可是Linux服务器很快就能重启完

然后再设置Apache的模块libapache2-mod-mono即可。当然,mono-gmcs、mono-apache-server2、libapache-mod-mono都是足以联手安装的,不过要专注mono-apache-server2和libapache-mod-mono的依次,假诺mono-apache-server2在libapache-mod-mono之后的话,由于倚重项的来由,libapache-mod-mono会现在机关选取安装mono-apache-server4。而且,如若一起装的话,在上述卡住的职务Ctrl+Z重启后,libapache-mod-mono并不曾布置完成导致成千上万操作无法履行,还亟需举办“sudo
dpkg –configure
-a”这句发号施令才行。软件包详情:http://packages.ubuntu.com/quantal/libapache2-mod-mono

sudo apt-get install libapache2-mod-mono

但是安装完假若打开网站发现仍旧力不从心推行,其实是从未有过布置ASP.NET应用程序。尽管现在支撑电动配置应用程序,不过仍旧需要修改/etc/apache2/mods-available/mod_mono.conf文件。(原文见:http://www.mono-project.com/AutoConfiguration)当然假设您会手动配置应用程序的话也可以在该文件中手动配置应用程序(下同)。

sudo vim /etc/apache2/mods-available/mod_mono.conf

语言 6

按键盘上的i键启用vim的编纂情势,由于mono-server2-hosts.conf文件中曾经对广大参数举办了布置,所以仅需要按图中的添加“MonoAutoApplication
enabled”一行即可。此外,如若你的网站中还有另外的文件格式(比如HttpHandler平日使用.axd),请添加在第一行后面,此外假诺网站默认文件不是index.aspx还索要修改第二行后的文件名。注意,由于Linux是分别轻重缓急写的,所以切记不要把大小写搞错。

假如服务器上还安装了ASP.NET
4.0的襄助(mono-apache-server4),并且需要切换来ASP.NET
4.0,那么仅需要修改最后一行,将2改为4即可。

修改完后按Ctrl+C停止编辑形式,然后按冒号键(:)进入命令模式,输入w保存文件,然后再度按冒号键,再按q键退出vim。

最后执行下述命令重启Apache服务器即可。

sudo /etc/init.d/apache2 restart 

 

【三、在Ubuntu下部署ASP.NET网站】

在Windows上配置网站可以通过远程桌面直接把网站或打包好的网站复制过去,在Linux下实际SSH不光可以襄助命令行,还足以支撑文件传输,我那边运用免费开源的Filezilla(https://filezilla-project.org/),Filezilla协助FTP和SSH二种协议,在站点管理器中甄选SFTP协议,然后把登陆类型设置为常规,输入用户名和密码即可登录。

语言 7

签到后默认的路径为/home/用户名/,就跟命令行下默认的目录一致。Apache的默认路径在/var/www/,可以在这之下找到index.html,也就是极度“It
works”的网页。不过这么些目录一般用户的权能为不可能写入,所以无法将网站一向配置到那一个目录下。当然你可以在PuTTY下将以此目录的权力修改后再上传,但是实在还足以有更简约的艺术,就是将打包文件上传到用户目录下然后再解压缩到这么些目录下。

首先安装zip解压缩程序,软件包详情:http://packages.ubuntu.com/quantal/zip

sudo apt-get install zip

下一场将需要上传的网站打包为zip文件,然后上传到用户目录下(/home/用户名/),然后在命令行中输入就足以了。

sudo unzip 压缩文件名.zip -d /var/www

当然,现在用你的浏览器访问你的服务器地址依旧是“It
works”,我们还要删除index.html就足以了。

sudo rm /var/www/index.html

 

【四、在openSUSE下的操作】

不同的系统运用不同的软件包管理程序,SUSE则提供了一个叫zypper的软件包管理程序,使用也要命有益(这里运用的openSUSE是Azure上提供的openSUSE
12.3)。

率先是设置Apache。

sudo zypper install apache2

与Ubuntu安装过程不同的是,在安装到位后并不曾启动Apache的提醒。所以还亟需手动配置服务自启动。

sudo systemctl enable apache2.service

接下来登时启动Apache。

sudo systemctl start apache2.service 

语言,前日用浏览器就能够访问服务器了。

下一场使用zypper安装Mono了(其中System.Drawing会用到libgdiplus,多语言匡助会用到mono-locale-extras,但是就是如此还有一些零部件没有设置,前面会表明):

sudo zypper install mod_mono libgdiplus mono-locale-extras

接下去需要安排mod_mono,那里推荐使用官方提供的http://go-mono.com/config-mod-mono/,页面打开后如下图所示:

语言 8

可以选拔Virtual
Host或者Application二种形式,第一种可以依照请求的服务器地址设置ASP.NET网站的根路径,第两种可以按照请求的虚拟目录设置ASP.NET网站的根路径。除此之外页面下方还有多少个设置能够自定义,设置完后挑选页面下方的Download下载.conf文件,将文件上传到openSUSE服务器后选择如下命令复制到Apache配置文件夹下:

sudo cp 配置文件名.conf /etc/apache2/conf.d/

此后方可像Ubuntu一样给openSUSE安装上zip解压缩工具(sudo zypper install
zip),将压缩文件解压缩到安装的网站根目录后即可。之后只需要重启Apache服务器后就可以及时访问ASP.NET网站了:

sudo systemctl restart apache2.service

亟待注意的是,这样成功后不像Ubuntu把过多看重库都装上了,假诺按上述命令的话唯有以下部件被装置:

语言 9

据此可能还有为数不少内需的零部件没有设置,比如需要连接Oracle数据库时,可能指示找不到System.Data.OracleClient程序集,需要设置“mono-data-oracle”,到时候可以依据出现的失实再安装。其实也足以依照通配符安装“mono*”,把跟mono有关的都安装上,可是这样也会装很多不需要的机件。

 

【五、在CentOS下的操作】

CentOS的软件管理程序是yum(这里运用的CentOS是Azure上提供的CentOS 6.3)。

第一依然设置Apache。

sudo yum install httpd

与openSUSE类似,安装完需要自己手动配置服务自启动。

sudo chkconfig --levels 235 httpd on

接下来登时启动Apache服务。

sudo /etc/init.d/httpd start

今天再用浏览器访问服务器地址就可以正常访问Http服务器了。

然而CentOS官方尚未打包好的mono的rpm包,所以相比好的法子是友善编译。

首先配置好编译的条件。

sudo yum install gcc gcc-c++ bison pkgconfig glib2-devel gettext make freetype-devel fontconfig-devel libX11-devel libpng-devel libjpeg-devel libtiff-devel giflib-devel libexif-devel cairo-devel httpd-devel

莫不会唤醒需要提升kernel-headers,可是系统或许默认禁止了骨干的包,所以一旦出现上述命令不能实施安装的话,还亟需在上一条命令之后附加“ –disableexcludes=main”,即如下的花样。

sudo yum install gcc gcc-c++ bison pkgconfig glib2-devel gettext make freetype-devel fontconfig-devel libX11-devel libpng-devel libjpeg-devel libtiff-devel giflib-devel libexif-devel cairo-devel httpd-devel --disableexcludes=main

假定全勤安装成功,可以举行下列语句下载需要安装组件的源码包并解压缩。

cd /usr/src/
sudo wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
sudo wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.bz2
sudo wget http://download.mono-project.com/sources/xsp/xsp-2.10.tar.bz2
sudo wget http://download.mono-project.com/sources/mod_mono/mod_mono-2.10.tar.bz2

sudo tar jxf libgdiplus-2.10.tar.bz2
sudo tar jxf mono-2.10.8.tar.bz2
sudo tar jxf xsp-2.10.tar.bz2
sudo tar jxf mod_mono-2.10.tar.bz2

编译并安装libgdiplus。

cd /usr/src/libgdiplus-2.10
sudo ./configure --prefix=/usr
sudo make ; sudo make install

下一场编辑/etc/ld.so.conf文件,添加一行“/usr/lib/”,如下图所示,保存之后再实践如下命令,从而使系统可以将libgdiplus.dll自动映射到对应的so文件中。(原文见:http://www.mono-project.com/DllNotFoundException

语言 10

sudo ldconfig

然后是Mono。

cd /usr/src/mono-2.10.8
sudo ./configure --prefix=/usr
sudo make ; sudo make install

接下去安装xsp。

export PKG_CONFIG_PATH=/usr/lib/pkgconfig
cd /usr/src/xsp-2.10
sudo ./configure --prefix=/usr
sudo make ; sudo make install

接下来安装mod_mono。

cd /usr/src/mod_mono-2.10
sudo ./configure --prefix=/usr
sudo make ; sudo make install

然后再修改“/etc/httpd/conf/mod_mono.conf”这一个文件,与Ubuntu上同名的配备文件配置相同。然则是因为不像Ubuntu下有现成的部署文件,所以需要在文书中添加如下两行,由于设置的时候自动安装了2.0和4.0的襄助,所以能够将如下的2换为4即可启用ASP.NET
4.0:

MonoServerPath "/usr/bin/mod-mono-server2"
MonoAutoApplication enabled

下一场将配备文件复制到Apache的布局文件目录中: 

sudo cp /etc/httpd/conf/mod_mono.conf /etc/httpd/conf.d/

是因为CentOS自带的SELinux的原委,使得Apache不可以连接到mod-mono-server,所以大家后天还索要配备SELinux。当然,这里为了简单就只是禁用SELinux,有趣味的可以自己创立安全策略,使mod-mono-server能够生效。这里修改/etc/sysconfig/selinux文件。将“SELINUX=enforcing”修改为“SELINUX=permissive”或“SELINUX=disabled”,例如下图,保存重启系统即可。

语言 11

自此就足以因而SSH将网站打包上传上去就可以直接访问了。但是需要留意的是,CentOS上的Apache默认的根路径在“/var/www/html”下,当然也可以在“/etc/httpd/conf/httpd.conf”文件中修改存放网站根目录的门道。

 

【六、相关链接】

1、配置linux(apache) + mono 下运行
asp.net:http://www.cnblogs.com/hcl0208/archive/2010/10/25/1860173.html 2、openSUSE上安装Mono并发布ASP.Net程序:http://www.linuxidc.com/Linux/2011-04/34872.htm 3、CentOS 6.0 安装
MONO
2.10.8:http://www.cnblogs.com/aquilahkj/archive/2011/11/03/2234380.html 4、Mono环境下不帮助中文的缓解办法:http://www.cnblogs.com/shanyou/archive/2010/10/08/1846198.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图