聲明:本人是個小白,博文中的知識都是我從網上歸類總結而來,主要是記錄一下個人學習歷程;若是各位網友有什麼更好的參考資料歡迎推薦。php
最近在學習【騰飛(Jesse)】 大神的 【ASP.NET Core 快速入門】 教程,在看第一章將 .NET Core 應用程序部署到 Linux 系統時,大神的作法是在vmware上安裝 CentOS 系統,而後配置 Nginx 和 .NET Core 運行環境。因爲個人電腦配置比較低,因此我並不想安裝虛擬機,因而就想到了能不能在 win10 的子系統上進行相似的操做呢?雖然之前子系統剛出來的時候我有玩過,可是後面學校學習緊張,後面就慢慢的淡忘了。html
下面我就從linux
一、安裝子系統開始 二、配置 Nginx 環境 三、配置 .NET Core 運行環境 四、發佈項目到 Linux 這幾個開始個人記錄。nginx
打開控制面板搜索啓用和關閉 windows 功能,勾選 適用於 Linux 的 Window 子系統功能,而後就是重啓電腦;重啓電腦後進入 Microsoft Store 搜索 Linux 就能夠找到相關的系統;這裏我如下載 Unbuntu 系統爲例(主要是商店裏沒有 CentOS 系統)。vim
安裝好以後就能夠啓動了。啓動後就能夠進入 Unbuntu 系統了,第一次進入須要設置用戶名和密碼( lwi/123 ),設置好後就可使用了;不過我比較喜歡使用權限最高的 root 帳戶,因而咱們開啓它;輸入命令windows
sudo passwd root
而後須要輸入密碼:123bash
su root
切換時也須要輸入密碼:123(咱們剛纔設置的 root 用戶密碼)。接着咱們來查看一下系統的版本,輸入 lsb_release -a ;這個系統版本在後面咱們安裝 .NET Core 運行環境時須要安裝對應的版本。php7
root@YJ:/var/www/html# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.4 LTS Release: 16.04 Codename: xenial root@YJ:/var/www/html#
sudo apt-get install nginx
而後咱們須要配置一下 Nginx ;將等下須要發佈的網站目錄,映射的端口號等修改一下,因爲本機 IIS 已經佔用了 80 端口,因此 Nginx 的監聽端口我改成了 8080 ,如下就是要用到的一些命令【Nginx 配置文件在 /etc/nginx/sites-available/ 下的 default 文件(其實還有其它地方,這裏我就不詳解了,由於我也不是很清楚,先按着我找到的來配置好了)】:框架
root@YJ:/# cd /etc/nginx/sites-available/ root@YJ:/etc/nginx/sites-available# sudo vim default
用來發布的項目沒有使用新建的 .NET Core Web 項目,而是使用了我最近在學習的【在7樓】大神的 【從零開始搭建本身的.NET Core Api框架】項目(非原項目,是我本身跟着大神的腳步慢慢搭建的)。ide
## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # http://wiki.nginx.org/Pitfalls # http://wiki.nginx.org/QuickStart # http://wiki.nginx.org/Configuration # # Generally, you will want to move this file somewhere, and start with a clean # file but keep this around for reference. Or just disable in sites-enabled. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## # Default server configuration # server { listen 8080 default_server; listen [::]:8080 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; #root /var/www/html; #在這裏配置網站路徑 root /var/www/IIS/RayPI; # Add index.php to the list if you are using PHP #index index.html index.htm index.nginx-debian.html; server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; #設置反向代理 proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # include snippets/fastcgi-php.conf; # # # With php7.0-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php7.0-fpm: # fastcgi_pass unix:/run/php/php7.0-fpm.sock; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # #server { # listen 80; # listen [::]:80; # # server_name example.com; # # root /var/www/example.com; # index index.html; # # location / { # try_files $uri $uri/ =404; # } #}
這一步很簡單,咱們只用到 .NET Core 的官網找到剛纔咱們查到對應的 Ubuntu 版本的 .NET Core 運行環境進行安裝豈可。
安裝完成後 輸入命令:dotnet --info 就能夠查看安裝的 .NET Core 版本信息等.
接着咱們用 VS2017 發佈咱們的項目,並將發佈的文件複製到剛纔建好的文件夾下。先進入 Ubuntu 系統,按 win+R 輸入 bash 就能夠進入系統了,而後咱們切換到 root 用戶(命令:su root ),這裏補充一下,在 Ubuntu 子系統中是能夠直接訪問 win10 的系統文件的,它在 /mnt/ 這個目錄下,因此咱們不用安裝什麼相似 winscap 的軟件來上傳咱們的代碼,咱們能夠直接從 win10 系統盤中直接複製過來 ;固然 Linux 中有配置軟連接的應該也能夠實現 (因爲我不會,因此我這裏就不進行深究了)。下面就是複製的代碼
lwi@YJ:/mnt/c/Users/wl$ su root Password: root@YJ:/mnt/c/Users/wl# cp -r /mnt/d/IIS/RayPI/ /var/www/
走到這一步教程也接近了尾聲。咱們只用把網站運行起來就能夠訪問到了
lwi@YJ:/mnt/c/Users/wl$ su root Password: root@YJ:/mnt/c/Users/wl# cd /var/www/IIS/RayPI/ root@YJ:/var/www/IIS/RayPI# dotnet RayPI.dll Hosting environment: Production Content root path: /var/www/IIS/RayPI Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down. warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] Failed to determine the https port for redirect.
網站運行成功圖:
參考資料:
四、ASP.NET Core快速入門 (視頻收費)