? ? ? 作為一種全新的開源和跨平臺的開發平臺,.NET Core歷經兩年多的開發,終于在于2016年6月27日針對所有主流服務器和桌面操作系統發布了1.0 RTM 版本,新進項目采用了這個嶄新的框架,計劃將其部署在linux平臺下,于是展開了這幾天艱苦卓絕的嘗試,鑒于是linux小白(小白都不算,算白癡),其中艱辛不言而喻,好的是最終成功解決相關問題,分享下相關經驗給大家(其實全球首發是吹牛的)。
一、虛擬機安裝
linux平臺采用centOS 7.1 x64,附官網下載鏈接
下載DVD ISO即可,下載完成后,使用VM虛擬機進行安裝,
安裝完成后重啟進入系統
首先進行網絡連接配置,切換至網絡配置文件目錄
cd /etc/sysconfig/network-script/
[root@localhost network-scripts]# ls
ifcfg-eno16777736? ifdown-ppp? ? ? ifup-ib? ? ? ifup-Team
ifcfg-lo? ? ? ? ? ifdown-routes? ? ifup-ippp? ? ifup-TeamPort
ifdown? ? ? ? ? ? ifdown-sit? ? ? ifup-ipv6? ? ifup-tunnel
ifdown-bnep? ? ? ? ifdown-Team? ? ? ifup-isdn? ? ifup-wireless
ifdown-eth? ? ? ? ifdown-TeamPort? ifup-plip? ? init.ipv6-global
ifdown-ib? ? ? ? ? ifdown-tunnel? ? ifup-plusb? network-functions
ifdown-ippp? ? ? ? ifup? ? ? ? ? ? ifup-post? ? network-functions-ipv6
ifdown-ipv6? ? ? ? ifup-aliases? ? ifup-ppp
ifdown-isdn? ? ? ? ifup-bnep? ? ? ? ifup-routes
ifdown-post? ? ? ? ifup-eth? ? ? ? ifup-sit
此處ifcfg-eno16777736(有可能不一樣名字 ,一般格式為ifcfg-eno***)文件即為當前主機網絡配置文件,對其進行編輯
vim ifcfg-eno16777736
配置如下:
TYPE=Ethernet
BOOTPROTO=none//或static
NAME=eno16777736
NM_CONTROLLED=yes
UUID=5b057938-8a01-4e9f-89db-7620029f6fbb
DEVICE=eno16777736
ONBOOT=yes
DNS1=8.8.8.8//dns地址
HWADDR=00:0C:29:B6:80:B5
IPADDR=192.168.1.16//靜態IP地址
PREFIX=24
GATEWAY=192.168.1.1//網關
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
配置完成后Esc后:wq保存,然后重新啟動網絡服務
service network restart
之后測試網絡是否連通
ping www.baidu.com
好了 ?有返回,ctrl+C退出,網絡設置完成,此處遇到一個坑 在我多次設置網絡后發現因為vm沒有根據僑聯模式適配主機網卡,搞配置折騰了大半天,最后知道真相的我眼淚掉下來。。。。
為什么先配網絡呢 ? 對于沒有圖形化界面 感覺太頭大,配網絡主要為了裝圖形化界面,好 輸入指令警醒圖形化界面安裝
$sudo? yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
根據操作進行選擇確定,安裝完成后
顯示如上,再鍵入指令設置開機啟動圖像化界面
$sudo ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
reboot虛擬機,之后就可以開心的用圖形化了 最起碼復制粘貼方便了好多
二、.net core生產環境配置
進入圖形化界面之后就可以開始干正事了,有不需要圖形化界面的小伙伴可以省略上面的圖形化界面安裝,效果是一樣的、
用于生產環境、當然更追求性能最大化,參考多篇大神作品后覺得使用便攜的方式進行發布會更好,本文主要講解便攜式發布配置
微軟官網給出了便捷的支持與依賴,登錄官網(其實官網步驟很全這里好像沒什么好說的)
https://www.microsoft.com/net/core#centos
首先進行libicu依賴安裝
sudo yum install libunwind libicu
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131(下載sdk壓縮包)
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet(解壓縮)
sudo ln -s /opt/dotnet/dotnet /usr/local/bin(創建鏈接)
完成上面這三步后 鍵入
dotnet --info
上傳之前發布的.net core應用文件夾至/home/wwwroot/(此處可配置Ftp服務器進行上傳,網上教程很多,后續我會補上)
cd /home/wwwroot/WebApp//你應用文件夾
之后鍵入已發布的應用Dll文件
鍵入(此處有一個坑,又是折騰好久,配置完成后直接使用dotnet接文件路徑,打開網站后什么都不顯示,多方查找后不知道原因,后來發現需要先cd進文件目錄,再dotnet文件名,網站正常運行,目前仍不知問題所在,有待后續解決?)
dotnet WebApplication1.dll
如果提示如上提示 證明運行成功但是下面還需要在配置Nginx容器
curl -o? nginx.rpmhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx
輸入:systemctl start nginx來啟動nginx。
輸入:systemctl enable nginx來設置nginx的開機啟動(linux宕機、重啟會自動運行nginx不需要連上去輸入命令)。
防火墻配置
命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(開放80端口)
命令:systemctl restart firewalld(重啟防火墻以使配置即時生效)
之后就可以正常訪問nginx了
接著配置nginx對ASP.NET Core應用的轉發
vim?/etc/nginx/conf.d/default.conf?//修改/etc/nginx/conf.d/default.conf文件。
詳細配置如下
server {
? ?listen 80;
? ?location / {
? ?proxy_passhttp://localhost:5000;
? ?proxy_http_version 1.1;
? ?proxy_set_header Upgrade $http_upgrade;
? ?proxy_set_header Connection keep-alive;
? ?proxy_set_header Host $host;
? ?proxy_cache_bypass $http_upgrade;
? }
}
執行:nginx –s reload使其即時生效
然后執行
yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp
三條指令,將nginx添加至SELinux的白名單
OK,接著dotnet發布文件
未完待續。。。今晚太困了,后續會接上應用守護服務、mysql數據庫安裝及配置、結合EF core框架的相關配置及應用發布、還有一大堆我記不起來。。。