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

1、Centos7.3的安裝

打開VirtualBox,點擊新建,以下圖所示:css

點擊「下一步」,彈出下面的對話框,調整內存大小,建議設置爲2G,這樣操做更流暢點python

 設置好,點擊「OK」,再點擊「啓動」,就進入到Centos的安裝界面,linux

 

 

點擊「軟件選擇」,彈出下面的界面,選擇下面圖中所標註的,測試環境不必最小化安裝,這樣對於我這樣的菜鳥來講,操做方便點。nginx

 

 點擊「網絡和主機名」,彈出下面的提示框,點擊「開啓」:json

選擇好以後,就等待安裝,安裝的到最後會讓你設置root帳號的密碼,建議設置一下,右邊的建立用戶暫時先不設置,到此已經安裝成功了,重啓一下便可。這裏我就一筆帶過,由於網上都有安裝的教程我就不囉嗦太多。centos

2、Nginx的安裝

(1)環境調試確認瀏覽器

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

    1)確認網絡可用緩存

  

  2)確認yum可用bash

  

  

  

 

  yum list|grep gcc  #列出全部的gcc信息網絡

  

 

  3)關閉IPTable

  若是你熟悉的話能夠不用關,但對於我這樣的菜鳥,我仍是先關閉它。

  iptables -L  

  iptables -F  

  iptables -t nat -L

  iptables -t nat -F

  4)關閉SeLinux

  getenforce    查看SeLinux的狀態,若是不爲Disabled則,修改成該狀態

  

  一、臨時關閉(不用重啓機器):

  setenforce 0       ##設置SELinux 成爲permissive模式 

       二、修改配置文件須要重啓機器:

  修改/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

  •  

    # 參數解釋
    一、firwall-cmd:是Linux提供的操做firewall的一個工具;
    二、--permanent:表示設置爲持久;
    三、--add-port:標識添加的端口;

 

3、項目發佈並部署

  • 把發佈好的項目,上傳到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並且也能夠在外面的瀏覽器中訪問,下面展現這兩種訪問結果:

  在虛擬機中訪問:

  

 

  本地訪問:

  

 

 

4、總結

在部署的時候,也參考了 「 農碼一輩子」 的相關文章,但怎麼也配置不成功,一直報502錯誤,後來參考了官網的配置,和本身摸索,終於部署成功,遇到不少坑,建議你們不要只看,動起手來,你就會知道其中的酸爽!好了,分享到這裏吧,但願對你有幫助!

5、問題

 後面會把寫好的項目部署到阿里雲上,若是遇到問題,會第一時間更新。

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

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

相關文章
相關標籤/搜索