自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET 跨平臺(tái)最佳實(shí)踐

開(kāi)發(fā) 后端
八年的堅(jiān)持?jǐn)巢贿^(guò)領(lǐng)導(dǎo)的固執(zhí),最終還是不得不闊別已經(jīng)成為我第二語(yǔ)言的C#,轉(zhuǎn)戰(zhàn)Java陣營(yíng)。有過(guò)短暫的失落和迷茫,但技術(shù)轉(zhuǎn)型真的沒(méi)有想象中那么難?;仡^審視,其實(shí)單從語(yǔ)言本身來(lái)看,C#確實(shí)比Java更優(yōu)秀(并非C#天生麗質(zhì),而是它站在了巨人的肩膀上)。

前言

八年的堅(jiān)持?jǐn)巢贿^(guò)領(lǐng)導(dǎo)的固執(zhí),最終還是不得不闊別已經(jīng)成為我第二語(yǔ)言的C#,轉(zhuǎn)戰(zhàn)Java陣營(yíng)。有過(guò)短暫的失落和迷茫,但技術(shù)轉(zhuǎn)型真的沒(méi)有想象中那么難?;仡^審視,其實(shí)單從語(yǔ)言本身來(lái)看,C#確實(shí)比Java更優(yōu)秀(并非C#天生麗質(zhì),而是它站在了巨人的肩膀上)。

本文并非為.NET正名而來(lái),而僅僅是分享作者近幾年在ASP.NET跨平臺(tái)方面的研究與實(shí)踐經(jīng)驗(yàn),算是對(duì)八年的.NET之路作一個(gè)階段性的總結(jié)。

.NET技術(shù)自誕生以來(lái),便一直因其跨平臺(tái)能力差而廣受詬病。這里面有微軟有意為之,也有別有用心之人在混淆視聽(tīng)。.NET在一開(kāi)始便是按公開(kāi)的語(yǔ) 言規(guī)范進(jìn)行設(shè)計(jì),隨著微軟的逐漸妥協(xié),.NET Framework已完全開(kāi)源。.NET跨平臺(tái)技術(shù)迎來(lái)了前所未有的機(jī)會(huì),各種.NET跨平臺(tái)技術(shù)必將如雨后春筍般涌現(xiàn)。本文將介紹作者在.NET跨平臺(tái) 方面的最佳實(shí)踐經(jīng)驗(yàn),希望藉以降低.NET跨平臺(tái)的技術(shù)難度,讓.NET真正成為跨平臺(tái)的生產(chǎn)技術(shù)。

環(huán)境

操作系統(tǒng)選擇開(kāi)源社區(qū)較有代表性的Linux服務(wù)器版本CentOS(本文所述的跨平臺(tái)思路可以成功應(yīng)用于絕大多數(shù)的Linux系統(tǒng),也包括國(guó)產(chǎn)操 作系統(tǒng)如中標(biāo)麒麟);技術(shù)平臺(tái)選擇久負(fù)盛名的Mono;Web應(yīng)用中間件選擇中國(guó)制造的Jexus。涉及的環(huán)境與技術(shù)詳細(xì)情況為:

  • 操作系統(tǒng):CentOS_6.4_64bit

  • .NET框架:Mono_4.0.4.1

  • Web應(yīng)用中間件:Jexus_5.6.5

  • 數(shù)據(jù)庫(kù):MySQL_5.1.73

目標(biāo)

本文所述實(shí)踐,將實(shí)現(xiàn)ASP.NET應(yīng)用程序在Linux系統(tǒng)進(jìn)行部署,并作產(chǎn)品化嘗試,使ASP.NET應(yīng)用在Linux平臺(tái)易于部署和維護(hù)。

Web應(yīng)用程序

本文的Web應(yīng)用程序選用ASP.NET MVC 4技術(shù)開(kāi)發(fā),持久層選用ADO.NET Entity Framework 6技術(shù)。你可以在src/demo目錄下找到它。

跨平臺(tái)部署

一、安裝系統(tǒng)

最小化安裝CentOS系統(tǒng)。作為實(shí)驗(yàn)環(huán)境,可以考慮選用具有快照功能的虛擬機(jī),作者選用的VMWare虛擬機(jī)進(jìn)行試驗(yàn)。系統(tǒng)安裝在此不再贅述。系統(tǒng)安裝好后,做一個(gè)快照留待后續(xù)驗(yàn)證產(chǎn)品化安裝包正確性所用。

如果你對(duì)跨平臺(tái)部署ASP.NET應(yīng)用的實(shí)現(xiàn)過(guò)程沒(méi)有興趣,只想看結(jié)果的話(huà),可以直接跳過(guò)后續(xù)步驟,直接進(jìn)入產(chǎn)品化章節(jié)的通過(guò)安裝包部署ASP.NET應(yīng)用部分。

二、搭建Linux編譯環(huán)境

由于本文選擇源碼安裝Mono,所以需要先搭建Linux編譯環(huán)境。搭建Linux編譯環(huán)境需要讓系統(tǒng)連接互聯(lián)網(wǎng),并進(jìn)行系統(tǒng)更新。

首先,需要讓你的系統(tǒng)連接互聯(lián)網(wǎng)。此處以VMWare虛擬機(jī)為例講解如何連接互聯(lián)網(wǎng)。VMWare虛擬機(jī)連接互聯(lián)網(wǎng)的方式很多,作者選擇NAT方式,首先需要將虛擬機(jī)網(wǎng)絡(luò)連接方式設(shè)為NAT,如圖 1所示。

          

圖 1 VMWare虛擬機(jī)網(wǎng)絡(luò)連接方式設(shè)置

設(shè)置VMnet8為自動(dòng)獲取IP,如圖 2所示。

圖 設(shè)置VMnet8為自動(dòng)獲取IP地址

然后將Linux虛擬機(jī)設(shè)為DHCP自動(dòng)分配IP,編輯網(wǎng)卡配置文件:

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改該配置文件內(nèi)容如下:

DEVICE=eth0
HWADDR=00:0C:29:F5:09:30
TYPE=Ethernet
UUID=74b949f0-57bb-4baa-a5f2-2c97fb533a8b
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

重啟網(wǎng)絡(luò)服務(wù),讓網(wǎng)卡設(shè)置生效:

[root@localhost ~]# service network restart

確認(rèn)虛擬機(jī)已連接互聯(lián)網(wǎng):

[root@localhost ~]# ping yilin.cnblogs.com
PING yilin.cnblogs.com (42.121.252.58) 56(84) bytes of data.
64 bytes from 42.121.252.58: icmp_seq=1 ttl=128 time=77.7 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=128 time=78.1 ms
64 bytes from 42.121.252.58: icmp_seq=3 ttl=128 time=77.5 ms

更新系統(tǒng):

[root@localhost ~]# yum –y update

安裝Mono源碼安裝需要的組件:

[root@localhost ~]# yum -y install wget glib2-devel libtiff libtiff-devel libjpeg libjpeg-devel giflib giflib-devel libpng libpng-devel libX11 libX11-devel freetype freetype-devel fontconfig fontconfig-devel libexif libexif-devel gcc-c++ gettext unzip zip

三、安裝GDI+組件

安裝Mono之前,需要先安裝其依賴(lài)的GDI+組件。聯(lián)網(wǎng)下載libgdiplus源碼安裝包(如果在Linux系統(tǒng)中直接下載源碼包出現(xiàn)停滯的情 況,請(qǐng)返回Windows系統(tǒng)下載libgdiplus源碼安裝包,并將其上傳到Linux系統(tǒng)相應(yīng)路徑后進(jìn)行安裝。后續(xù)其他組件安裝遇此情況與此雷同, 不再贅述):

[root@localhost ~]# cd /usr
[root@localhost usr]# wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2

解壓libgdiplus源碼安裝包:

[root@localhost usr]# tar jxvf libgdiplus-2.10.tar.bz2

配置libgdiplus組件安裝路徑(這里指定安裝路徑,是為后文產(chǎn)品化制作安裝包做準(zhǔn)備,Mono、Jexus和MySQL安裝也是如此,不再贅述):

[root@localhost usr]# cd libgdiplus-2.10
[root@localhost libgdiplus-2.10]# ./configure --prefix=/usr/apollo/hostd/mono/

編譯libgdiplus源碼:

[root@localhost libgdiplus-2.10]# make

安裝libgdiplus組件:

[root@localhost libgdiplus-2.10]# make install

四、安裝Mono

Mono是Linux平臺(tái)的.NET Framework實(shí)現(xiàn),是.NET程序移植到Linux平臺(tái)的不二選擇。首先,聯(lián)網(wǎng)下載Mono源碼安裝包:

[root@localhost libgdiplus-2.10]# cd /usr
[root@localhost usr]# wget http://download.mono-project.com/sources/mono/mono-4.0.4.1.tar.bz2

解壓Mono源碼安裝包:

[root@localhost usr]# tar jxvf mono-4.0.4.1.tar.bz2

配置Mono安裝路徑:

[root@localhost usr]# cd mono-4.0.4
[root@localhost mono-4.0.4]# ./configure --prefix=/usr/apollo/hostd/mono

編譯Mono源碼(此過(guò)程耗時(shí)一般為半小時(shí)到一小時(shí),視系統(tǒng)軟硬件配置而定):

[root@localhost mono-4.0.4]# make

安裝Mono:

[root@localhost mono-4.0.4]# make install

通過(guò)查看Mono版本,確認(rèn)Mono是否安裝成功(出現(xiàn)如下的版本信息表示Mono安裝成功):

[root@localhost mono-4.0.4]# cd /usr/apollo/hostd/mono/bin/
[root@localhost bin]# ./mono -V
Mono JIT compiler version 4.0.4 (Stable 4.0.4.1/5ab4c0d Fri Oct 30 06:56:35 CST 2015)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            sgen

五、安裝Jexus

Jexus是國(guó)人開(kāi)發(fā)的Linux平臺(tái)上的ASP.NET Web應(yīng)用中間件,類(lèi)似于Windows平臺(tái)的IIS。實(shí)踐證明Jexus安裝簡(jiǎn)單,運(yùn)行穩(wěn)定,是Linux平臺(tái)架設(shè)ASP.NET應(yīng)用的不錯(cuò)選擇。首先,聯(lián)網(wǎng)下載Jexus安裝包:

[root@localhost ~]# cd /usr
[root@localhost usr]# wget http://www.linuxdot.net/down/jexus-5.6.5.tar.gz

解壓Jexus安裝包:

[root@localhost usr]# tar zxvf jexus-5.6.5.tar.gz

修改Jexus安裝路徑:

[root@localhost usr]# cd jexus-5.6.5
[root@localhost jexus-5.6.5]# vi install

#!/bin/sh

SRC_DIR=$(cd $(dirname $0);pwd)
DAT_DIR=${SRC_DIR}/data
JWS_DIR='/usr/apollo/hostd/jexus'

安裝Jexus:

[root@localhost jexus-5.6.5]# sudo ./install

修改Jexus關(guān)于mono路徑的配置:

[root@localhost jexus-5.6.5]# cd /usr/apollo/hostd/jexus
[root@localhost jexus]# vi jws

#!/bin/sh

JWS_HOME=$(cd $(dirname $0);pwd)

export LANG="zh_CN.UTF-8"
export PATH=/usr/bin:${JWS_HOME}/../mono/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:${JWS_HOME}/../mono/lib:$LD_LIBRARY_PATH

啟動(dòng)Jexus服務(wù),測(cè)試Jexus安裝是否正確:

[root@localhost jexus]# ./jws start

設(shè)置Jexus服務(wù)開(kāi)機(jī)自啟動(dòng),增加如下高亮行::

[root@localhost jexus]# vi /etc/rc.d/rc.local

touch /var/lock/subsys/local
/usr/apollo/hostd/jexus/jws start

修改該文件權(quán)限并重啟:

[root@localhost jexus]# chmod +x /etc/rc.d/rc.local

六、部署網(wǎng)站

創(chuàng)建網(wǎng)站目錄:

[root@localhost jexus]# cd /usr/apollo/
[root@localhost apollo]# mkdir webapps
[root@localhost apollo]# cd webapps/
[root@localhost webapps]# mkdir default
[root@localhost webapps]# cd default/
[root@localhost default]# touch index.html
[root@localhost default]# vi index.html

<html>
<head>
    <title>ASP.NET跨平臺(tái)最佳實(shí)踐</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
ASP.NET跨平臺(tái)最佳實(shí)踐,看到該頁(yè)面,表示你的第一個(gè)網(wǎng)站已成功部署到Linux系統(tǒng)。
</body>
</html>

修改Jexus網(wǎng)站配置:

  1. [root@localhost default]# cd /usr/apollo/hostd/jexus/siteconf 
  2. [root@localhost siteconf]# vi default 
  3.  
  4. ###################### 
  5. # Web Site: Default 
  6. ######################################## 
  7.  
  8. port=80 
  9. root=/ /usr/apollo/webapps/default 
  10. hosts=*    #OR your.com,*.your.com 
  11. … 

開(kāi)放防火墻80端口:

  1. [root@localhost siteconf]# vi /etc/sysconfig/iptables 
  2.  
  3. # Firewall configuration written by system-config-firewall 
  4. # Manual customization of this file is not recommended. 
  5. *filter 
  6. :INPUT ACCEPT [0:0
  7. :FORWARD ACCEPT [0:0
  8. :OUTPUT ACCEPT [0:0
  9. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
  10. -A INPUT -p icmp -j ACCEPT 
  11. -A INPUT -i lo -j ACCEPT 
  12. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 
  13. -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
  14. -A INPUT -j REJECT --reject-with icmp-host-prohibited 
  15. -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
  16. COMMIT 

重啟iptables,使防火墻設(shè)置生效:

[root@localhost siteconf]# /etc/init.d/iptables restart

重啟Jexus服務(wù):

[root@localhost siteconf]# /usr/apollo/hostd/jexus/jws restart

終端瀏覽器輸入網(wǎng)址http://ip:port/index.html訪問(wèn)網(wǎng)站:

圖 3 ASP.NET網(wǎng)站成功部署到Linux平臺(tái)

七、數(shù)據(jù)庫(kù)

Linux平臺(tái)免費(fèi)關(guān)系數(shù)據(jù)庫(kù)首選當(dāng)然是MySQL,首先下載MySQL源碼安裝包:

[root@localhost siteconf]# cd /usr
[root@localhost usr]# wget http://downloads.mysql.com/archives/get/file/mysql-5.1.72-linux-x86_64-glibc23.tar.gz

解壓MySQL源碼安裝包到指定目錄,并修改目錄名稱(chēng):

  1. [root@localhost usr]# tar zxvf mysql-5.1.72-linux-x86_64-glibc23.tar.gz -C /usr/Apollo 
  2. [root@localhost usr]# cd apollo 
  3. [root@localhost apollo]# mv mysql-5.1.72-linux-x86_64-glibc23 data 

將mysql配置文件拷貝至指定目錄:

  1. [root@localhost apollo]# cd data 
  2. [root@localhost data]# cp support-files/my-medium.cnf /etc/my.cnf 

編輯mysql配置文件,在[client]節(jié)和[mysqld]節(jié)中加入以下高亮行::

  1. [root@localhost data]# vi /etc/my.cnf 
  2.  
  3. [client] 
  4. #password       = your_password 
  5. port            = 3306 
  6. socket          = /tmp/mysql.sock 
  7. default-character-set = utf8 
  8.  
  9. # Here follows entries for some specific programs 
  10.  
  11. # The MySQL server 
  12. [mysqld] 
  13. port            = 3306 
  14. socket          = /tmp/mysql.sock 
  15. skip-locking 
  16. key_buffer_size = 16M 
  17. max_allowed_packet = 1M 
  18. table_open_cache = 64 
  19. sort_buffer_size = 512K 
  20. net_buffer_length = 8K 
  21. read_buffer_size = 256K 
  22. read_rnd_buffer_size = 512K 
  23. myisam_sort_buffer_size = 8M 
  24. basedir = /usr/apollo/data 
  25. datadir = /usr/apollo/data/data 
  26. character-set-server = utf8 
  27. collation-server = utf8_general_ci 
  28. … 

創(chuàng)建mysql組及用戶(hù),并設(shè)定目錄訪問(wèn)權(quán)限:

  1. [root@localhost data]# groupadd mysql 
  2. [root@localhost data]# useradd -g mysql mysql 
  3. [root@localhost data]# chown -R mysql . 
  4. [root@localhost data]# chgrp -R mysql . 
  5. [root@localhost data]# chown -R root . 
  6. [root@localhost data]# chown -R mysql data 

初始化數(shù)據(jù)庫(kù):

[root@localhost data]# scripts/mysql_install_db --user=mysql

運(yùn)行mysql服務(wù):

[root@localhost data]# bin/mysqld_safe --user=mysql &

這種方式啟動(dòng)MySQL是阻塞式的,需要另開(kāi)一個(gè)會(huì)話(huà)登錄Linux系統(tǒng),繼續(xù)后續(xù)操作。

設(shè)置root用戶(hù)密碼:

[root@localhost data]# bin/mysqladmin -uroot password 11111111

設(shè)置mysql服務(wù)開(kāi)機(jī)自動(dòng)啟動(dòng):

[root@localhost data]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost data]# chmod 700 /etc/init.d/mysqld
[root@localhost data]# chkconfig --add mysqld
[root@localhost data]# chkconfig --level 345 mysqld on

現(xiàn)在,可以停止之前會(huì)話(huà)啟動(dòng)的MySQL服務(wù)(快捷鍵Ctrl + C),使用service命令后臺(tái)啟動(dòng)MySQL服務(wù)。

[root@localhost data]# service mysqld start

將mysql命令加入系統(tǒng)環(huán)境變量中,在文件末尾加上以下兩行代碼:

[root@localhost data]# vi /etc/profile

...
PATH=$PATH:/usr/apollo/data/bin
export

執(zhí)行配置,并重啟系統(tǒng),讓環(huán)境變量生效:

[root@localhost data]# source /etc/profile

待Linux系統(tǒng)重啟后,MySQL服務(wù)可以自動(dòng)啟動(dòng),MySQL命令也包含在了環(huán)境變量中。此時(shí),MySQL服務(wù)已經(jīng)可以在本地訪問(wèn)了,可以通過(guò) MySQL命令行創(chuàng)建數(shù)據(jù)庫(kù)、執(zhí)行SQL文件等操作。另外,可以通過(guò)MySQL命令行配置允許遠(yuǎn)程訪問(wèn)MySQL數(shù)據(jù)庫(kù)(當(dāng)網(wǎng)站服務(wù)和MySQL數(shù)據(jù)庫(kù)服 務(wù)在一起時(shí),可以不進(jìn)行該配置):

[root@localhost ~]# mysql -uroot -p11111111
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '11111111' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit;

還需要防火墻開(kāi)放3306端口,編輯防火墻規(guī)則文件,在防火墻規(guī)則文件中添加如下高亮行:

  1. [root@localhost ~]# vi /etc/sysconfig/iptables 
  2.  
  3. # Firewall configuration written by system-config-firewall 
  4. # Manual customization of this file is not recommended. 
  5. *filter 
  6. :INPUT ACCEPT [0:0
  7. :FORWARD ACCEPT [0:0
  8. :OUTPUT ACCEPT [0:0
  9. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
  10. -A INPUT -p icmp -j ACCEPT 
  11. -A INPUT -i lo -j ACCEPT 
  12. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 
  13. -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
  14. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 
  15. -A INPUT -j REJECT --reject-with icmp-host-prohibited 
  16. -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
  17. COMMIT 

重啟防火墻服務(wù):

[root@localhost ~]# /etc/init.d/iptables restart

此時(shí)可以遠(yuǎn)程訪問(wèn)MySQL數(shù)據(jù)庫(kù)了。

八、部署ASP.NET應(yīng)用

本示例提供一個(gè)ASP.NET MVC應(yīng)用,放置在后文制作的tar包webapps目錄下,該示例通過(guò)Entity Framework實(shí)現(xiàn)數(shù)據(jù)庫(kù)的自動(dòng)創(chuàng)建及數(shù)據(jù)的增刪改查。將該目錄上傳至Linux系統(tǒng)的/usr/apollo/webapps目錄下,并配置 Jexus網(wǎng)站配置:

  1. [root@localhost ~]# cd /usr/apollo/hostd/jexus/siteconf/ 
  2. [root@localhost siteconf]# cp default demo 
  3. [root@localhost siteconf]# vi demo 
  4.  
  5. … 
  6. port=8080 
  7. root=/ /usr/apollo/webapps/demo 
  8. hosts=*    #OR your.com,*.your.com 
  9. … 

Jexus支持承載多個(gè)Web站點(diǎn),所以這里新增的demo站點(diǎn)和之前創(chuàng)建的default站點(diǎn)可以共存,僅需配置不同的端口號(hào)即可。同樣的需要開(kāi)放防火墻8080端口:

  1. [root@localhost siteconf]# vi /etc/sysconfig/iptables 
  2.  
  3. # Firewall configuration written by system-config-firewall 
  4. # Manual customization of this file is not recommended. 
  5. *filter 
  6. :INPUT ACCEPT [0:0
  7. :FORWARD ACCEPT [0:0
  8. :OUTPUT ACCEPT [0:0
  9. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
  10. -A INPUT -p icmp -j ACCEPT 
  11. -A INPUT -i lo -j ACCEPT 
  12. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 
  13. -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
  14. -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT 
  15. -A INPUT -j REJECT --reject-with icmp-host-prohibited 
  16. -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
  17. COMMIT 

重啟iptables,使防火墻設(shè)置生效:

[root@localhost siteconf]# /etc/init.d/iptables restart

重啟Jexus服務(wù):

[root@localhost siteconf]# /usr/apollo/hostd/jexus/jws restart

現(xiàn)在可以在終端通過(guò)瀏覽器訪問(wèn)ASP.NET MVC站點(diǎn)了。

圖 4 Linux環(huán)境部署ASP.NET MVC應(yīng)用

產(chǎn)品化

通過(guò)上述一系列步驟,我們實(shí)現(xiàn)了ASP.NET MVC應(yīng)用在Linux平臺(tái)的部署,但這僅僅是技術(shù)預(yù)研,離產(chǎn)品化還有一定的距離。這一系列步驟技術(shù)性太強(qiáng),需要聯(lián)網(wǎng),不易操作,這些對(duì)于生產(chǎn)和用戶(hù)環(huán)境 都是難于實(shí)現(xiàn)的。我們需要將.NET跨平臺(tái)技術(shù)產(chǎn)品化,使得ASP.NET應(yīng)用易于部署。

一、初始化腳本

如前文所述,ASP.NET應(yīng)用在Linux平臺(tái)部署需要設(shè)置防火墻策略、MySQL用戶(hù)與分組、Jexus與MySQL服務(wù)開(kāi)機(jī)自啟動(dòng)等,相當(dāng)繁瑣。我們可以將這些設(shè)置集中在一個(gè)初始化腳本里執(zhí)行。

  1. #!/bin/sh 
  2.  
  3. #echo off 
  4. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 
  5.  
  6. #創(chuàng)建軟鏈接,以支持將應(yīng)用部署到任意目錄 
  7. #ln -s -T $DIR /usr/apollo 
  8.  
  9. #拷貝事先配置好的MySQL配置文件到指定目錄 
  10. cp -f $DIR/conf/my.cnf /etc/my.cnf 
  11.  
  12. #創(chuàng)建MySQL需要的用戶(hù)和用戶(hù)組 
  13. groupadd mysql 
  14. useradd -g mysql mysql 
  15. chown -R root . 
  16. chown -R mysql data 
  17. chgrp -R mysql data 
  18.  
  19. #設(shè)置MySQL服務(wù)開(kāi)機(jī)自啟動(dòng) 
  20. cp $DIR/data/support-files/mysql.server /etc/rc.d/init.d/mysqld 
  21. chmod 700 /etc/init.d/mysqld 
  22. chkconfig --add mysqld 
  23. chkconfig --level 345 mysqld on 
  24.  
  25. #將MySQL命令加入系統(tǒng)環(huán)境變量 
  26. sudo cat $DIR/conf/profile >> /etc/profile 
  27. source /etc/profile 
  28.  
  29. #設(shè)置防火墻策略 
  30. cp -f $DIR/conf/iptables /etc/sysconfig/iptables 
  31.  
  32. #設(shè)置Jexus服務(wù)開(kāi)機(jī)自啟動(dòng) 
  33. sudo cat $DIR/conf/rc.local >> /etc/rc.d/rc.local 
  34. chmod +x /etc/rc.d/rc.local 
  35. chmod a+x $DIR/hostd/jexus/jws 
  36. chmod a+x -R $DIR/hostd/mono/bin 
  37.  
  38. #重啟系統(tǒng) 
  39. reboot 

二、制作安裝包

將Linux平臺(tái)部署ASP.NET應(yīng)用需要的技術(shù)包括Mono、Jexus、MySQL等集成并進(jìn)行打包分發(fā)。

[root@localhost ~]# tar jcvf crossplatform-1.0.0.0-centos6.4-x86_32_64.tar.bz2 /usr/apollo

三、通過(guò)安裝包部署ASP.NET應(yīng)用

至此,Linux平臺(tái)Web應(yīng)用部署包已打好,將其下載到終端。將虛擬機(jī)恢復(fù)到初始安裝快照狀態(tài),然后將終端上的部署包上傳到Linux系統(tǒng)中并解壓:

[root@localhost usr]# tar jxvf crossplatform-1.0.0.0-centos6.4-x86_32_64.tar.bz2

執(zhí)行初始化腳本完成安裝:

[root@localhost usr]# cd apollo
[root@localhost apollo]# sh ./install

在終端通過(guò)瀏覽器訪問(wèn)ASP.NET MVC站點(diǎn),確認(rèn)部署成功。

圖 5 Linux平臺(tái)產(chǎn)品化部署ASP.NET MVC應(yīng)用

總結(jié)

本文詳細(xì)講解了Linux平臺(tái)部署ASP.NET應(yīng)用的最佳實(shí)踐過(guò)程,通過(guò)該實(shí)踐過(guò)程了解了ASP.NET應(yīng)用跨平臺(tái)部署的方方面面,該過(guò)程同樣適 用于其他Linux分發(fā)版本和國(guó)產(chǎn)操作系統(tǒng)。另外,本文對(duì)Linux平臺(tái)部署ASP.NET應(yīng)用進(jìn)行了產(chǎn)品化包裝,制作的安裝包可以直接應(yīng)用于產(chǎn)品打包, 你只需將應(yīng)用放入指定目錄即可。希望本文所闡述的技術(shù)對(duì)你有所幫助。

附件下載:示例源碼+本文PDF版本

附件下載:產(chǎn)品化部署TAR包

責(zé)任編輯:王雪燕 來(lái)源: 張博
相關(guān)推薦

2009-11-02 10:15:53

ASP.NET MVC

2011-09-22 10:58:56

ASP.NET

2009-07-22 18:08:00

ASP.NET跨頁(yè)提交

2009-08-03 14:33:02

.NET平臺(tái)c#ASP.NET

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-22 17:45:35

ASP.NET教程

2009-07-31 09:47:57

ASP.NET緩存

2009-07-27 17:26:39

ASP.NET功能

2009-07-24 14:36:10

ASP.NET跨頁(yè)面?zhèn)?/a>

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門(mén)教程

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2009-07-29 17:11:25

ASP.NET ISA

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-07-28 09:02:32

asp.net aja

2015-06-30 08:37:12

ASP.NET.NET

2009-08-03 13:38:18

ASP.NET編程模型

2009-07-27 14:46:16

XML和ASP.NET

2009-07-23 13:19:51

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)