ASP.NET Core2.0發布有一陣子了,這是.NET 開源跨平台的一個重大里程碑, 也意味着比1.0版本要更加成熟。目前.net core具有開源、跨平台、靈活部署、模塊化架構等等特性,吸引着一大批開發者。筆者也開始加入擁抱.net core大軍,那就搭建一個個人網站吧!
首先申明的是,這應該是一個長期的項目,我會不定期的更新,持續集成,慢慢的把想要的新功能疊加到網站上。這也是積累的過程,我希望通過文章分享給博友們,也歡迎你們關注我,與我一同討論,共同進步!
話不多說,咱們開始~
部署環境
服務器環境
- 操作系統:Windows Server 2008 R2
- 數據庫:SQL Server 2012
開發環境
- VS 2017
這里為了搭建公網可以訪問的網站,服務器我用的是XX雲服務器(自帶Server 2008系統,提供公網IP)。當然大家只是想練練手不想花錢,也沒關系,本地運行調試也好,有些遠程配置內容可以直接跳過。
有了服務器,我們還需要搭建數據庫。這里我選的是SQL Server 2012 Express版(帶數據庫管理工具,大概700M),對應中小型應用就夠了。主要因為雲服務器CPU、內存、磁盤是在太珍貴了,盡量夠用就好,不用最新或功能最全的版本。
SQL Server安裝與配置
運行SQL Server 安裝包,按照提示一步步安裝即可,默認安裝是包含客戶單SDK和管理工具,安裝完畢后,SQL Server會自動生成一個數據庫實例;打開菜單中SQL Server Management Studio,連接數據庫實例,可以看到能正常訪問數據庫。當然,這樣訪問本地的數據庫沒問題,但是我們需要外網遠程訪問數據庫,所以需要做些配置:
第1步,我們選中數據庫實例,右鍵-->屬性-->選中 安全性
因為遠程訪問就不能僅僅通過Windows身份驗證了,這里我們選中SQL Server和Windows身份驗證模式;
第2步,選中 連接,確認“允許遠程連接到此服務器”選中;
第3步,數據庫實例-->安全性-->登錄名-->sa右鍵屬性
將超級管理員sa密碼設置一下,並將sa用戶啟用;
第6步,我們可以關閉SQL Server Management Studio,打開SQL Server 配置管理器
選中MSSQLSERVER的的協議,將TCP/IP協議狀態改成已啟用(默認是禁用),完畢后我們重啟SQL Server;
TCP/IP屬性,切換IP地址頁簽,確認TCP端口是否是1433,如果不是,如下配置:
至此,SQL Server的相關配置已經設置完畢,但還是不能支持遠程訪問,我們還需要設置一下服務器防火牆。
服務器防火牆配置
打開服務器管理器,選中防火牆配置,里面有“入站規則”,點擊進去;
選中“新建規則...”
規則類型選擇端口:
協議選擇TCP協議,端口號輸入1433(SQL Server默認端口)
下一步,選擇“允許連接”
下一步,規則配置文件,全選
最后,輸入規則名稱,取名“SQL Server 端口”,點擊完成,可以看到我們的添加的規則已在防火牆允許訪問范圍了。
測試遠程訪問數據庫
在本地機器上打開VS 2017,找到視圖-服務器資源管理器--數據連接,右鍵-->添加連接;
更改數據源,選擇Microsoft SQL Server ;
服務器名,輸入雲服務器的IP地址,選擇SQL Server身份驗證,敲入之前設置的用戶名和密碼,就可以加載遠程數據庫實例下的所有數據庫。這樣我們連遠程數據庫就沒有問題了。
IIS環境和.NET Core Windows Server Hosting配置
為了在服務器上運行我們的網站,首先需要配置IIS。
Server 2008上,添加"角色",選中“Web 服務器”,完成IIS安裝。
一般的.net發布的網站,現在就可以配置運行了,但是.net core與傳統的Asp.Net程序不同,Asp.Net Core App使用了Kestrel Server。Kestrel是一個跨平台的Web Server,與IIS一樣負責請求的監聽、接收和響應,但沒有IIS豐富的管理功能,仍需要由IIS來處理一些前置工作。
所以這塊我們還需要安裝IIS到Kestrel server的反向代理:.NET Core Windows Server Hosting bundle
安裝完成后,需要重啟一下機器,然后我們就可以正式的搭.net core網站了。
創建Asp.net Core Web項目
准備工作做完后,我們終於可以開始建項目了,打開VS 2017,文件-->項目,創建Asp.net Core Web項目,點擊確定;
這里默認選擇.net core 2.0環境,Web 應用程序(模型視圖控制器),注意,這里的身份驗證,我選擇了個人用戶賬戶,主要是方便用戶和角色管理,和身份驗證。后面有單獨的章節,專門跟大家探討一下這塊的知識。確定后,VS 自動幫我們生成好可運行的項目代碼。
這時候,我們就要通過連接遠程服務器上的數據庫,通過Code First方式,生成數據庫表結構了。
先在數據庫中實例中,創建一個數據庫,命名為MyWebSite:
在本地VS中,通過之前服務器資源管理器的配置,我們看到可以連接MyWebSite這個數據庫,並測試連接成功。
點確定建立數據連接,右鍵-->屬性,可以查看連接字符串,拷貝一下這個連接字符串
Data Source=180.*.*.89;Initial Catalog=MyWebSite;User ID=sa;Password=***********
打開項目配置文件appsettings.json:
把默認的連接字符串用上面字符串替換如下:
"ConnectionStrings": { "DefaultConnection": "Data Source=180.*.*.89;Initial Catalog=MyWebSite;User ID=sa;Password=*******" },
這樣,數據庫連接就配置好了。因為選擇的是個人身份驗證的項目,所以VS幫我們生成好了對應的實體類和數據庫遷移,我們所要做的,是要數據庫更新,來生成相應的表結構。
打開工具-->Nuget包管理器-->程序包管理器控制台
輸入update-database並運行,成功后,我們回頭看看遠程的MyWebSite數據庫,幫我們自動生成了所有的表結構
接下來,我們ctrl+F5運行一下,網站正常啟動如下:
發布網站到服務器
網站本地運行沒問題了,我們繼續后續發布的操作,項目右鍵,選擇“發布...”,暫時我們選擇本地文件夾(后面項目管理的時候,我們再配置遠程發布),將發布后生成的文件拷貝到雲服務器上,這里放到c:\MyWebSite目錄中。
IIS管理中,選中網站,把默認的Default Web Site停用,因為它占用了80端口,跟我們要搭建的沖突;
右鍵-->添加網站
如下圖配置,用80端口,HTTP默認訪問端口。
點確定,這樣我們的網站至此,成功搭建!
用用瀏覽器,輸入外網IP地址訪問我們的雲服務器(如果不能正常訪問,請檢查防火牆是否開放了80端口,按照之前設置一下就行):
ok,完美~