1. 程式人生 > >.Net Core2.0秒殺CMS部署到Centos7.3遇到的坑,酸爽呀

.Net Core2.0秒殺CMS部署到Centos7.3遇到的坑,酸爽呀

一、Centos7.3的安裝

開啟VirtualBox,點選新建,如下圖所示:

點選“下一步”,彈出下面的對話方塊,調整記憶體大小,建議設定為2G,這樣操作更流暢點

 設定好,點選“OK”,再點選“啟動”,就進入到Centos的安裝介面,

 

點選“軟體選擇”,彈出下面的介面,選擇下面圖中所標註的,測試環境沒必要最小化安裝,這樣對於我這樣的菜鳥來說,操作方便點。

 

 點選“網路和主機名”,彈出下面的提示框,點選“開啟”:

選擇好之後,就等待安裝,安裝的到最後會讓你設定root賬號的密碼,建議設定一下,右邊的建立使用者暫時先不設定,到此已經安裝成功了,重啟一下即可。這裡我就一筆帶過,因為網上都有安裝的教程我就不囉嗦太多。

二、Nginx的安裝

(1)環境除錯確認

  • 確認系統網路
  • 確認yum可用
  • 確認關閉IPtables規則
  • 確認停用selinux

    1)確認網路可用

  

  2)確認yum可用

  

  

  

  yum list|grep gcc  #列出所有的gcc資訊

  

  3)關閉IPTable

  如果你熟悉的話可以不用關,但對於我這樣的菜鳥,我還是先關閉它。

  iptables -L  

  iptables -F  

  iptables -t nat -L

  iptables -t nat -F

  4)關閉SeLinux

  getenforce    檢視SeLinux的狀態,如果不為Disabled則,修改為該狀態

  

  1、臨時關閉(不用重啟機器):

  setenforce 0       ##設定SELinux 成為permissive模式 

       2、修改配置檔案需要重啟機器:

  修改/etc/selinux/config 檔案

  將SELINUX=enforcing改為SELINUX=disabled

  重啟機器即可

  

  這裡我已經修改為了disabled

  建立屬於自己工作的目錄,我的個人習慣:

  cd /opt

  mkdir app download logs work  backup

(2)快速安裝Nginx

  • 新建一個nginx.repo檔案,
    • 把官網中對應的yum源複製到新建的nginx.repo檔案中,並做一下修改:
    • 注意:OS改為:centos         OSRELEASE改為:7

    • 修改完 :wq儲存並退出。
  • 使用:yum list | grep nginx       列出相關版本資訊
  • 使用:yum install nginx   安裝

    安裝完之後,執行下面的命令,可以檢視對應的版本資訊

       

關於Nginx更多的知識以後有機會再給大家介紹,目前只要成功安裝Nginx就OK了。

systemctl start nginx #啟動nginx

systemctl enable nginx #設定nginx的開機啟動

然後在 CentOs系統 開啟瀏覽器 輸入 :192.168.0.109 (使用ifconfig檢視IP)

看到下面 的頁面說明安裝成功,並啟動成功了:

(3)安裝.Net Core SDK(目前是2.0.2版本)

  可以參考微軟的文件,非常詳細:https://www.microsoft.com/net/learn/get-started/linuxcentos

(4)配置防火牆

  •   檢視firewall服務狀態

  systemctl status firewalld

  

  • 檢視firewall的狀態

firewall-cmd --state

  

  • 開啟、重啟、關閉、firewalld.service服務(如果關閉了請開啟)

# 開啟

  service firewalld start

  # 重啟

  service firewalld restart

  # 關閉

  service firewalld stop

  • # 查詢埠是否開放
    firewall-cmd --query-port=8080/tcp
    # 開放80埠(如果想在外面可以訪問到,要開啟80埠)
    firewall-cmd --permanent --add-port=80/tcp
    # 移除埠
    firewall-cmd --permanent --remove-port=8080/tcp

  • #重啟防火牆(修改配置後要重啟防火牆)
    firewall-cmd --reload

  • # 引數解釋
    1、firwall-cmd:是Linux提供的操作firewall的一個工具;
    2、--permanent:表示設定為持久;
    3、--add-port:標識新增的埠;

三、專案釋出並部署

  • 把釋出好的專案,上傳到Centos的/opt/app/demo1/目錄下面:

注意:上面的專案一定要在Startup.cs檔案的Configure方法中新增下面的程式碼:(標紅的部分)

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

app.UseAuthentication();//注意新增這段程式碼就是想說明,如果有該段程式碼,則新增的程式碼一定要在該程式碼的前面新增,如果沒有需求則可以去掉,上面的專案中是沒有改段程式碼的
  • Nginx的配置

  修改下面目錄中的default.conf檔案:

  

  內容替換為:

  

  • 配置守護服務(supervisor)
 yum install python-setuptools
 easy_install supervisor 
 mkdir /etc/supervisor
 echo_supervisord_conf > /etc/supervisor/supervisord.conf 

  修改:supervisord.conf 

  

  修改內容為最後面的部分:

  

  其中files= conf.d/*.conf修改為:files = supervisord.d/*.ini

      在再改目錄下面建立一個目錄,如下圖所示:

  

  進入上面建立的目錄裡面,新建一個檔案:MiaoSha.ini

  

  內容為:

  

  修改完之後,執行下面的命令:

  supervisord -c /etc/supervisor/supervisord.conf

  supervisorctl reload

  好了,現在可以在瀏覽器中輸入:192.168.0.109:80,即可訪問,但是我想開機的時候,就啟動,需要做一下的配置:

  • 配置Supervisor開機啟動

  開啟目錄 /etc/systemd/system/ 新建檔案 miaosha.service

  

  內容:

  

  然後執行:

  systemctl enable miaosha.service

  systemctl start miaosha.service

  systemctl status miaosha.service

  

  如果上圖中出現同樣的結果,說明已經配置成功,我們重啟電腦,不用dotnet MiaoSha.Admin.dll了,即可在虛擬機器中訪問:192.168.0.109而且也可以在外面的瀏覽器中訪問,下面展示這兩種訪問結果:

  在虛擬機器中訪問:

  

  本地訪問:

  

四、總結

在部署的時候,也參考了 “ 農碼一生” 的相關文章,但怎麼也配置不成功,一直報502錯誤,後來參考了官網的配置,和自己摸索,終於部署成功,遇到很多坑,建議大家不要只看,動起手來,你就會知道其中的酸爽!好了,分享到這裡吧,希望對你有幫助!

五、問題

 後面會把寫好的專案部署到阿里雲上,如果遇到問題,會第一時間更新。

(1)首先感謝那些幫助我的人,很感謝!沒有你們的幫助可能我會消耗更多的時間。

狀態:已解決

時間:2017年11月14日晚

問題:站點可以訪問,js css jpg載入不出來報404 

解決辦法:

           1)首先我們看看釋出的這個專案程式碼 Program.cs和Startup.cs檔案的程式碼:

 public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .UseUrls("http://localhost:5000")
                .Build();
    }
 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
          
            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });

            app.UseStaticFiles();
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Login}/{action=Login}/{id?}");
            });
        }

     2)Nginx的配置

    

     3)訪問結果:(圖片、js、css、json檔案404,即使你再路徑前面加上wwwroot還是報404)

            

出現問題的原因是很多的,在保證你程式碼總的圖片路徑是正確的前提下,可能的原因是:反向代理的路徑下找不到檔案,需要單獨指定js css檔案的訪問路徑。

修改Nginx的配置如下(重啟Nginx):

注意:root後面的路徑,之前我的路徑沒有加上wwwroot/ 還是報404,加上之後再訪問就沒有問題了,可以在上面的()裡面新增你的靜態資原始檔的字尾名,這樣Nginx就可以直接轉發請求的靜態資原始檔。

expires  1d 表示快取的時間,如果這些靜態資源基本上沒有變化的話,可以把該值設定大點。

(2)

狀態:已解決

時間:2017年11月15日晚

問題:在配置supervisor時,配置完成,啟動時遇到:cannot unlink stable.sock什麼之類是問題

解決辦法:重新安裝supervisor,具體可以參考:

  • 配置守護服務(supervisor)配置節

 (3)

狀態:已解決

時間:2017年11月26日11:56:12

問題:Centos7.3手欠更新一下最新的.Net Core SDK 2.0.3,使用dotnet -version  發現:bash  dotnet 未找到命令

原因:微軟的pkg包居然沒有新增環境變數, 也沒有軟連線dotnet

解決辦法:更新了是不是還需要再安裝一下,於是就重新安裝了一遍,但是還報上面的錯誤。最後添加了一下軟連線

step1:

step2:

step3:

 

注意:是把第二個:usr/share/dotnet/dotnet  掛到  /usr/local/bin/dotnet

作者:郭崢

出處:http://www.cnblogs.com/runningsmallguo/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。