.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/

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM