第二章 在Linux上部署.net core
項目目標部署環境:CentOS 7+
項目技術點:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx
開源地址:https://github.com/wmowm/nh.core
上一章已經講解了項目的結構,相對來說比較簡單,適合新手,傳送門
搭建一個通用的.net core項目框架
有小夥伴提問,ORM這塊為什麽不用dapper或者EF,相對來說,NHibernate還是比較陌生,因為我也沒用使用過Dapper或者EF,感興趣的小夥伴,可以弄一個分支,做一個EF的DAL出來,model可以共用
好了,現在開始進入正題,如何將項目部署到linux上面呢?
這裏我一步步來講解,防止大家踩坑,裏面借鑒很多博客資源,衷心的感謝
第一步,在linux上安裝mysql
安裝mysql網上有很多教程,我這裏就不詳細介紹了,我安裝的是mysql5.6,我是懶人,這裏推薦大家一款linux管理軟件appnode,可以一鍵安裝軟件,非常的方便,官網地址:https://www.appnode.com/ 裏面有詳細的安裝教程,群友:簡自豪,推薦的,它可不是狂小狗
相當於一款可視化界面了,非常實用方便,裝好mysql,就來說說裏面的坑
坑1. 開啟遠程訪問權限
默認用戶是root,沒有密碼,但是沒有開通遠程訪問,我們必須新建一個用戶,並開啟遠程訪問
坑2.權限問題
開啟遠程訪問後,通過客戶端可以正常鏈接mysql,此時需要開啟該用戶的權限
這裏推薦這篇博客:https://www.cnblogs.com/zhchoutai/p/6929103.html 我是參考它實現的
坑3.中文亂碼問題
這裏需要修改mysql的配置文件
這裏參考這篇博客:https://www.cnblogs.com/beginner-boy/p/7643541.html
第二步,安裝.net core SDK
坑1.網上的教程很多都是.net core 1.0的安裝教程,如果跟著走,可能你裝的SDK版本不對
這裏推薦安裝官網的教程,進行安裝SDK 傳送門 https://www.microsoft.com/net/learn/get-started/linux/centos 這裏可以根據linux的版本進行選擇
參考博客:http://www.cnblogs.com/GreedyL/p/7422796.html 我基本上是參考這篇博客,進行實現的
第三步,安裝nginx
當你.net core程序可以正常訪問後,此時我們需要把默認的5000端口,映射到外網,這裏借助nginx實現反向代理
安裝nginx肯定是借助appnode一件安裝啦,當然你也可以自己手動安裝,按照教程走,就可以了
坑1.映射靜態資源
因為最開始我部署的是一個mvc項目,當時一些靜態資源無法訪問,如js.img... 這些需要在nginx進行配置,我的配置文件如下
第四步 安裝 supervisord
在控制臺裏運行.net core,當控制臺關閉,我們的程序也對應關閉了,這是我們無法容忍了,所以我們需要把它運行到後臺,而且服務器重啟,也需要後臺程序自動啟動,這裏映入supervisord,它是python開發的
可以繼續參考 http://www.cnblogs.com/GreedyL/p/7422796.html 這篇博客進行安裝,並在配置文件夾寫入我們要啟動的程序,如圖
conf.d裏面放我們要啟動的程序配置信息,當supervisord每次啟動時,這樣程序集也會被啟動,我的配置如下
相對來說,還是非常簡單的,做完這裏恭喜你,你的.net core程序可以在linux上面跑了
今天我實現了webapi的接口,大家可以在mvc項目裏測試的玩玩,效果圖如下
代碼示例:
覺得對你有幫助的,可以在github給我點個星星,非常感謝
開源地址:https://github.com/wmowm/nh.core
後續章節會講解.net core,有不對的地方,歡迎大佬拍磚,以免誤人子弟,不甚感謝!
第二章 在Linux上部署.net core