最近公司須要開發項目能在Linux系統上運行,示例開發項目採用.Net Core + Angular開發;理論上徹底支持跨平臺。html
可是實踐纔是檢驗真理的惟一標準;那麼仍是動手來驗證明現下;過程當中萬一出現什麼問題也算是積累經驗。前端
因爲本次主要驗證項目部署Linux環境,也不想去從新搭建一個虛擬機環境;就使用Win10中Linux子系統(WSL什麼?)python
一、WSL啓用步驟:nginx
最終肯定問題緣由:須要更新Linux內核包(更新包下載地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)c++
下載安裝後,CentOS系統環境準備好了。git
sudo yum update
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1
三、Nginx環境安裝:(部署web項目) github
yum install gcc-c++ yum install pcre pcre-devel yum install zlib zlib-devel yum install openssl openssl--devel
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo yum install nginx
目錄結構:web
配置路徑 | /etc/nginx/ |
錯誤日誌 | /var/log/nginx/error.log |
訪問日誌 | /var/log/nginx/access.log |
默認站點目錄 | /usr/share/nginx/html |
基本命令:json
部署項目到CentOS有多種方式:直接運行、Docker部署(前面學習文章已屢次使用),本次就採用直接運行方式來部署應用。因爲項目採用先後端分離實現,須要分別部署vim
一、將服務端項目文件拷貝到CentOS目錄中:本次部署路徑爲:/home/www/publish
二、修改配置文件:須要使用vim命令(須要單獨安裝)
經過命令進入配置文件編輯:
vim appsettings.json
編輯完成後採用如下命令退出
vim命令 :w 保存但不退出 :wq 保存並退出 :q 退出 :q! 強制退出,不保存 :e! 放棄全部修改,從上次保存文件開始再編輯命令歷史
三、啓動服務
進入項目目錄執行命令:
[root@Coder supervisor]# cd /home/www/publish [root@Coder publish]# dotnet ZLSoft.UnifiedDS.Web.Host.dll --urls http://*:8220
一、將web項目拷貝到:/home/www/web
二、在Nginx配置文件目錄中添加配置文件web.conf
server { listen 8221; server_name 192.168.243.86:8220; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /home/www/web; index index.html index.htm; try_files $uri $uri/ /index.html?$query_string; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
注意: 因爲Angular項目中使用了路由重定向,則須要使用標記內容
三、更新Nginx配置文件:
/usr/sbin/nginx -s reload
服務端運行:
Web項目運行效果:
到此項目已成功運行,可是當我把CentOS命令結束運行,則web服務端中止運行,那麼須要把建立服務實現守護進程
一、安裝supervisor
#安裝python的擴展 yum install python-setuptools #經過python的擴展安裝supervisor easy_install supervisor #創建設置文件夾 mkdir /etc/supervisor mkdir /etc/supervisor/conf.d #設置文件 echo_supervisord_conf > /etc/supervisor/supervisord.conf #修改設置文件(supervisord.d 文件夾下的全部 ini 類型的文件都是配置文件) #在文件/etc/supervisor/supervisord.conf末端 ;files = relative/directory/*.ini 改成 files = conf.d/*.ini
二、建立配置文件:在/etc/supervisor/conf.d目錄下建立publish.conf
[program:publish] command=dotnet ZLSoft.UnifiedDS.Web.Host.dll --urls http://192.168.243.86:8220 #運行命令 directory=/home/www/publish #程序路徑 environment=ASPNETCORE__ENVIRONMENT=Production user=root stopsignal=INT autostart=true #自動啓動 autorestart=true #3秒自動重啓 startsecs=3 stderr_logfile=/var/log/ossoffical.err.log stdout_logfile=/var/log/ossoffical.out.log
三、啓動服務
#進入supervisor目錄 cd /etc/supervisor #啓動supervisord 服務 supervisord -c supervisord.conf
四、開啓守護進程的界面管理功能
#修改配置文件:
vim /etc/supervisord.conf
#取消註釋內容
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; ip_address:port specifier, *:port for all iface
username=user ; default is no username (open server)
password=123 ; default is no password (open server)
#從新加載配置文件
supervisorctl reload
五、supervisorctl 經常使用命令
$ sudo service supervisor stop 中止supervisor服務 $ sudo service supervisor start 啓動supervisor服務 $ supervisorctl shutdown #關閉全部任務 $ supervisorctl stop|start program_name #啓動或中止服務 $ supervisorctl status #查看全部任務狀態
在CentOS系統中運行部署運行項目,主要是Linux相關內容是否熟練:如命令、權限、軟件等相關內容,無論什麼仍是須要孰能生巧,多加練習吧。
另外WSL中的Linux系統仍是不夠全面,暫時沒有服務、防火牆相關功能,因此若是在真實環境中,能夠設置服務開機啓動、以及防火牆相關處理。
因此仍是須要找個完整環境進行學習練習。