参考《在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache + Mono)》,但由于操作系统版本不一样,个别命令要修改
1、安装apache
sudo apt-get install apache2
2、安装mono及apache支持模块,这里安装很正常,并没有文中提到的卡死情况,应该是已经修复这个bug了。
sudo apt install mono-devel
sudo apt-get install mono-apache-server4
sudo apt-get install libapache2-mod-mono
sudo vim /etc/apache2/mods-available/mod_mono.conf
编辑mod_mono.conf文件,添加“MonoAutoApplication enabled”一行,如下图:
sudo /etc/init.d/apache2 restart
重启apache2,把aspx页面上传至默认路径/var/www/下面,在浏览器输入对应的页面地址,应该是能正常打开。
3、windows平台下网页路径大小写忽略的,但linux下面大小写区分的,如果需要忽略大小写,还需要配置speling模块,参考了《ubuntu上apache大小写不敏感的配置 case insensitive》
sudo vim /etc/apache2/mods-available/speling.conf
输入 CheckSpelling on 到speling.conf文件中,并保存退出:如下图:
sudo a2enmod speling
sudo /etc/init.d/apache2 restart
载入模块,重启apache2即可生效
4、启用https支持,参考了《在Ubuntu系统下的Apache2安装SSL证书》
sudo vim /etc/apache2/sites-available/default-ssl.conf
编辑default-ssl.conf文件,按实际路径修改证书文件路径,我这里没有中间证书,就不做配置。
这里注意,要把证书路径后面的注释要去掉或放单独一行,否则重启apache时会报“SSLCertificateFile takes one argument, SSL Server Certificate file (’/path/to/file’ - PEM or DER encoded)”这样的错误。
将default-ssl.conf映射至/etc/apache2/sites-enabled
目录,实现两者之间的自动关联,启用ssl模块并重启apache使其生效。
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
sudo a2enmod ssl sudo /etc/init.d/apache2 restart
5、配置本地的asp.net StateServer
如果Session模式为StateServer,需要运行一个外接的Session状态管理服务器,Mono/xsp下就有个asp-state的程序用于管理Session状态,但这个程序只能通过命令行运行,无法配置为自动执行的服务,需要稍作修改,源码在此。
先把编译后的两个文件StateServer.exe和StateServer.exe.config放在/var/www/html/目录下,新建一个asp-state.service服务文件,命令如下
sudo nano /etc/systemd/system/asp-state.service
在编辑器中输入如下代码:
[Unit] Description=asp.net StateServer After=network.target [Service] ExecStart=/usr/bin/mono $MONO_OPTIONS "/var/www/html/StateServer.exe" "$@" Restart=always [Install] WantedBy=multi-user.target
保存退出,执行如下命令启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable asp-state
sudo systemctl start asp-state
如何配置服务,参考了《linux-开机启动nodejs脚本》和《Ubuntu/linux c开发(11)执行文件注册服务,开机自启》