ASP.NET跨平台佳实践
作者:网络转载 发布时间:[ 2015/11/19 16:12:04 ] 推荐标签:C# 测试开发技术 数据库
待Linux系统重启后,MySQL服务可以自动启动,MySQL命令也包含在了环境变量中。此时,MySQL服务已经可以在本地访问了,可以通过MySQL命令行创建数据库、执行SQL文件等操作。另外,可以通过MySQL命令行配置允许远程访问MySQL数据库(当网站服务和MySQL数据库服务在一起时,可以不进行该配置):
[root@localhost ~]# mysql -uroot -p11111111
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '11111111' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit;
还需要防火墙开放3306端口,编辑防火墙规则文件,在防火墙规则文件中添加如下高亮行:
[root@localhost ~]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
重启防火墙服务:
[root@localhost ~]# /etc/init.d/iptables restart
此时可以远程访问MySQL数据库了。
八、部署ASP.NET应用
本示例提供一个ASP.NET MVC应用,放置在后文制作的tar包webapps目录下,该示例通过Entity Framework实现数据库的自动创建及数据的增删改查。将该目录上传至Linux系统的/usr/apollo/webapps目录下,并配置Jexus网站配置:
[root@localhost ~]# cd /usr/apollo/hostd/jexus/siteconf/
[root@localhost siteconf]# cp default demo
[root@localhost siteconf]# vi demo
…
port=8080
root=/ /usr/apollo/webapps/demo
hosts=* #OR your.com,*.your.com
…
Jexus支持承载多个Web站点,所以这里新增的demo站点和之前创建的default站点可以共存,仅需配置不同的端口号即可。同样的需要开放防火墙8080端口:
[root@localhost siteconf]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
重启iptables,使防火墙设置生效:
[root@localhost siteconf]# /etc/init.d/iptables restart
重启Jexus服务:
[root@localhost siteconf]# /usr/apollo/hostd/jexus/jws restart
现在可以在终端通过浏览器访问ASP.NET MVC站点了。
图 4 Linux环境部署ASP.NET MVC应用
产品化
通过上述一系列步骤,我们实现了ASP.NET MVC应用在Linux平台的部署,但这仅仅是技术预研,离产品化还有一定的距离。这一系列步骤技术性太强,需要联网,不易操作,这些对于生产和用户环境都是难于实现的。我们需要将.NET跨平台技术产品化,使得ASP.NET应用易于部署。
一、初始化脚本
如前文所述,ASP.NET应用在Linux平台部署需要设置防火墙策略、MySQL用户与分组、Jexus与MySQL服务开机自启动等,相当繁琐。我们可以将这些设置集中在一个初始化脚本里执行。
#!/bin/sh
#echo off
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
#创建软链接,以支持将应用部署到任意目录
#ln -s -T $DIR /usr/apollo
#拷贝事先配置好的MySQL配置文件到指定目录
cp -f $DIR/conf/my.cnf /etc/my.cnf
#创建MySQL需要的用户和用户组
groupadd mysql
useradd -g mysql mysql
chown -R root .
chown -R mysql data
chgrp -R mysql data
#设置MySQL服务开机自启动
cp $DIR/data/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 700 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
#将MySQL命令加入系统环境变量
sudo cat $DIR/conf/profile >> /etc/profile
source /etc/profile
#设置防火墙策略
cp -f $DIR/conf/iptables /etc/sysconfig/iptables
#设置Jexus服务开机自启动
sudo cat $DIR/conf/rc.local >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
chmod a+x $DIR/hostd/jexus/jws
chmod a+x -R $DIR/hostd/mono/bin
#重启系统
reboot
二、制作安装包
将Linux平台部署ASP.NET应用需要的技术包括Mono、Jexus、MySQL等集成并进行打包分发。
[root@localhost ~]# tar jcvf crossplatform-1.0.0.0-centos6.4-x86_32_64.tar.bz2 /usr/apollo
三、通过安装包部署ASP.NET应用
至此,Linux平台Web应用部署包已打好,将其下载到终端。将虚拟机恢复到初始安装快照状态,然后将终端上的部署包上传到Linux系统中并解压:
[root@localhost usr]# tar jxvf crossplatform-1.0.0.0-centos6.4-x86_32_64.tar.bz2
执行初始化脚本完成安装:
[root@localhost usr]# cd apollo
[root@localhost apollo]# sh ./install
在终端通过浏览器访问ASP.NET MVC站点,确认部署成功。
图 5 Linux平台产品化部署ASP.NET MVC应用
总结
本文详细讲解了Linux平台部署ASP.NET应用的佳实践过程,通过该实践过程了解了ASP.NET应用跨平台部署的方方面面,该过程同样适用于其他Linux分发版本和国产操作系统。另外,本文对Linux平台部署ASP.NET应用进行了产品化包装,制作的安装包可以直接应用于产品打包,你只需将应用放入指定目录即可。希望本文所阐述的技术对你有所帮助。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11