天天看點

在CentOS 7伺服器中使用Jexus釋出.net core webapi

環境:

 伺服器:CentOS 7 64位

.net core 2.1

Jexus獨立版

官網:https://www.jexus.org/

在CentOS 7伺服器中使用Jexus釋出.net core webapi
按照官網安裝獨立版指令:curl https://jexus.org/release/x64/install.sh|sudo sh 

[root@localhost ~]# curl https://jexus.org/release/x64/install.sh|sudo sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   398  100   398    0     0    228      0  0:00:01  0:00:01 --:--:--   228
sh:行7: wget: 未找到指令
tar (child): jexus-6.1-x64.tar.gz:無法 open: 沒有那個檔案或目錄
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
cp: 無法擷取"jexus" 的檔案狀态(stat): 沒有那個檔案或目錄
sh: 第 10 行:cd: /usr/jexus: 沒有那個檔案或目錄
chmod: 無法通路"/usr/jexus/jws": 沒有那個檔案或目錄
sh:行12: /usr/jexus/jws: 沒有那個檔案或目錄
sh: 第 16 行:cd: /usr/jexus: 沒有那個檔案或目錄
OK, Jexus has been installed in /usr/jexus.      
在CentOS 7伺服器中使用Jexus釋出.net core webapi

如提示wget: 未找到指令則需要先安裝wget,用來下載下傳Jexus。

CentOS安裝wget:yum install wget

[root@localhost ~]# yum install wget
已加載插件:fastestmirror
Determining fastest mirrors
epel/x86_64/metalink                                                                    | 6.1 kB  00:00:00     
 * base: mirrors.163.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                    | 3.6 kB  00:00:00     
epel                                                                                    | 5.3 kB  00:00:00     
extras                                                                                  | 3.4 kB  00:00:00     
packages-microsoft-com-prod                                                             | 2.9 kB  00:00:00     
updates                                                                                 | 3.4 kB  00:00:00     
epel/x86_64/primary_db         FAILED                                          
http://fedora.cs.nctu.edu.tw/epel/7/x86_64/repodata/f36c8c0adcbde109e842436bc378f32c2cbcc6c06be1bff16765ab782fc1e6f0-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found
正在嘗試其它鏡像。
To address this issue please refer to the below wiki article 

https://wiki.centos.org/yum-errors

If above article doesn't help to resolve this issue please use https://bugs.centos.org/.

(1/5): extras/7/x86_64/primary_db                                                       | 200 kB  00:00:00     
(2/5): epel/x86_64/updateinfo                                                           | 977 kB  00:00:00     
(3/5): updates/7/x86_64/primary_db                                                      | 5.0 MB  00:00:01     
(4/5): packages-microsoft-com-prod/primary_db                                           | 170 kB  00:00:01     
(5/5): epel/x86_64/primary_db                                                           | 6.7 MB  00:00:03     
正在解決依賴關系
--> 正在檢查事務
---> 軟體包 wget.x86_64.0.1.14-18.el7_6.1 将被 安裝
--> 解決依賴關系完成

依賴關系解決

===============================================================================================================
 Package               架構                    版本                             源                        大小
===============================================================================================================
正在安裝:
 wget                  x86_64                  1.14-18.el7_6.1                  updates                  547 k

事務概要
===============================================================================================================
安裝  1 軟體包

總下載下傳量:547 k
安裝大小:2.0 M      

Is this ok [y/d/N]: y

在CentOS 7伺服器中使用Jexus釋出.net core webapi

安裝完後輸入y

然後安裝jexus.

在CentOS 7伺服器中使用Jexus釋出.net core webapi

安裝成功會提示:

OK, Jexus has been installed in /usr/jexus.

可以看到Jexus的安裝目錄是/usr/jexus

檢視Jexus本部指令:/usr/jexus/jws -V

在CentOS 7伺服器中使用Jexus釋出.net core webapi

Jexus網站配置目錄為/usr/jexus/siteconf/

打開Xshell上面的Xfpt,可以進入該目錄,下面有個default的檔案,這個就是配置網站的檔案,一個網站一個該配置檔案。

在CentOS 7伺服器中使用Jexus釋出.net core webapi

 使用Xftp的記事本打開該檔案

port=80  #網站端口

root=/ /var/www/default #網站目錄

hosts=* #OR your.com,*.your.com  #網站域名

因為我使用的伺服器80端口已經使用了,把該default裡的内容都注釋掉,重建立一個檔案web60的配置檔案

在CentOS 7伺服器中使用Jexus釋出.net core webapi

通過Xftp上傳一個html頁面到該路徑

在CentOS 7伺服器中使用Jexus釋出.net core webapi

然後到Xshell中啟動Jexus:

在CentOS 7伺服器中使用Jexus釋出.net core webapi

啟動指令:sh /usr/jexus/jws start

重新開機指令:sh /usr/jexus/jws restart

啟動成功,在浏覽器中輸入改IP及端口,可以看到Jexus已經托管該網站。

在CentOS 7伺服器中使用Jexus釋出.net core webapi

CentOS下安裝.net core 運作時可以參考微軟的官方文檔:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install

1.注冊.net core 

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm      

2.更新Linux核心(生成環境慎用)

sudo yum update       

3.安裝.net SDK 

sudo yum install -y dotnet-sdk-2.1      

4.檢視.net core版本(安裝成功後)

dotnet --version      

建立一個.net core的webapi,

設定Json樣式

// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            //全局配置Json序列化處理
            services.AddMvc()
                .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
                .AddJsonOptions(options =>
                    {
                        //忽略循環引用
                        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                        //不使用駝峰樣式的key
                        options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                        //設定時間格式
                        options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                    }
                );
        }      

調試環境需要注釋啟動配置檔案launchSettings.json的$schema屬性去掉預設的Json樣式

在CentOS 7伺服器中使用Jexus釋出.net core webapi

設定.net core api通路的端口

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseUrls("http://*:5002")
                .UseStartup<Startup>()
                /*.UseKestrel(options =>
                {
                    options.Limits.MaxConcurrentUpgradedConnections = 1000;
                })*/
                .ConfigureAppConfiguration((builderContext, configBuilder) =>
                {
                    var env = builderContext.HostingEnvironment;
                    configBuilder.SetBasePath(env.ContentRootPath)
                        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                        .AddEnvironmentVariables();
                    // Add to configuration the Cloudfoundry VCAP settings
                });      

釋出網站,部署模式選架構依賴,目标運作時選可移植。

在CentOS 7伺服器中使用Jexus釋出.net core webapi

将檔案通過ftp上傳到伺服器

在CentOS 7伺服器中使用Jexus釋出.net core webapi

 在xshell運作改網站:dotnet 程式集名稱.dll,運作成功,直接在浏覽器打開發現無法通路,這是伺服器防火牆沒開放該端口。

在CentOS 7伺服器中使用Jexus釋出.net core webapi

另起一個終端标簽,使用curl通路該API,可以成功傳回資料。

curl http://localhost:5002/api/values

在CentOS 7伺服器中使用Jexus釋出.net core webapi

Ctrl+C關閉.net core控制台 ,使用Jexus做外部端口監聽和網站伺服器。(類似Nginx方向代理+Linux程序守護)

建立一個Jexus網站配置

port=70                           # 外部通路的端口号,可以改成你想要的端口号,外部通路通過 ip/域名:端口号 即可通路
root=/ /home/web70/應用程式檔案夾/  # 應用程式的工作根目錄(全路徑)
hosts=*                           #OR your.com,*.your.com # 如果為伺服器設定了DNS解析,則可以填寫解析到伺服器的域名,如:www.myweb.com

AppHost={                         # .net core 網站配置
  cmd=dotnet 應用程式名稱.dll;      # 指令,啟動Asp.Net Core應用要執行的指令

  root=/var/www/應用程式檔案夾/;    # Asp.Net Core應用程式所在的全路徑 

  port=5002;                      # Asp.Net Core應用程式所使用的端口号,如果在程式中使用了UsrUrls自定義端口則使用UsrUrls中填寫的端口(不建議使用UsrUrls自定義端口),
                                  # 在沒有使用UsrUrls自定義端口的情況下端口号設定為 0,Jexus會在運作時與Asp.Net Core進行"協商"具體使用的端口号,避免多個應用配置設定                                  
                    # 端口的麻煩和沖突的風險。                  

}      

重新開機Jexus,然後用浏覽器通路該API位址

在CentOS 7伺服器中使用Jexus釋出.net core webapi
在CentOS 7伺服器中使用Jexus釋出.net core webapi

 将Jexus設定為開機自動啟動

使用xftp打開路徑/usr/lib/systemd/system ,在該路徑下建立服務檔案jexus.service

檔案内容:

[Unit]
Description=jexus
After=network.target
[Service]
Type=forking
ExecStart=/usr/jexus/jws start
ExecReload=/usr/jexus/jws restart
ExecStop=/usr/jexus/jws stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target      
在CentOS 7伺服器中使用Jexus釋出.net core webapi
在CentOS 7伺服器中使用Jexus釋出.net core webapi

添加服務:systemctl enable jexus.service

啟動Jexus服務:systemctl start jexus.service

檢視Jexus服務狀态:systemctl status jexus.service

在CentOS 7伺服器中使用Jexus釋出.net core webapi

狀态為active(running)表示已啟動服務成功。

重新開機伺服器後就會自動啟動Jexus了。 

jexus做負載均衡配置:

port=78

# Jexus 預設通路的工作目錄
root=/ /web78/  # 應用程式的工作根目錄(全路徑),反向代理也需要指定

# 反向代理設定:
# 路徑是"/"即根目錄,也可以設定一個虛拟路徑,如:reproxy=/api/ http://api.abc.com/
reproxy=/ 127.0.0.1:5000, 127.0.0.1:5002, 127.0.0.1:5003      

 參考資料:

https://www.cnblogs.com/nsky/p/10386460.html

https://www.cnblogs.com/alan-lin/p/9817331.html

https://www.linuxdot.net/

https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install

 Liunx下使用top指令檢視CPU、記憶體等:

https://www.cnblogs.com/dragonsuc/p/5512797.html

繼續閱讀