【三、在Ubuntu下部署ASP.NET网站】
在Windows上部署网站可以通过远程桌面直接把网站或打包好的网站复制过去,在Linux下其实SSH不光可以支持命令行,还可以支持文件传输,我这里使用免费开源的Filezilla(https://filezilla-project.org/),Filezilla支持FTP和SSH两种协议,在站点管理器中选择SFTP协议,然后把登陆类型设置为正常,输入用户名和密码即可登录。
登录后默认的路径为/home/用户名/,就跟命令行下默认的目录一致。Apache的默认路径在/var/www/,可以在这之下找到index.html,也就是那个“It works”的网页。不过这个目录一般用户的权限为无法写入,所以无法将网站直接部署到这个目录下。当然你可以在PuTTY下将这个目录的权限修改后再上传,不过其实还可以有更简单的方式,就是将打包文件上传到用户目录下然后再解压缩到这个目录下。
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,这里推荐使用官方提供的,页面打开后如下图所示:
可以选择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把很多依赖库都装上了,如果按上述命令的话只有以下部件被安装:
所以可能还有很多需要的组件没有安装,比如需要连接Oracle数据库时,可能提示找不到System.Data.OracleClient程序集,需要安装“mono-data-oracle”,到时候可以根据出现的错误再安装。其实也可以根据通配符安装“mono*”,把跟mono有关的都安装上,不过这样也会装很多不需要的组件。