環境:
伺服器:CentOS 7 64位
.net core 2.1
Jexus獨立版
官網:https://www.jexus.org/
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3YDMwcDN1gzNtEDM1cDMxMzNxMDM2ATOxAjMtkzMxgTM08CX2ATOxAjMvwVOzEDOxQzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
[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.
如提示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
安裝完後輸入y
然後安裝jexus.
安裝成功會提示:
OK, Jexus has been installed in /usr/jexus.
可以看到Jexus的安裝目錄是/usr/jexus
檢視Jexus本部指令:/usr/jexus/jws -V
Jexus網站配置目錄為/usr/jexus/siteconf/
打開Xshell上面的Xfpt,可以進入該目錄,下面有個default的檔案,這個就是配置網站的檔案,一個網站一個該配置檔案。
使用Xftp的記事本打開該檔案
port=80 #網站端口
root=/ /var/www/default #網站目錄
hosts=* #OR your.com,*.your.com #網站域名
因為我使用的伺服器80端口已經使用了,把該default裡的内容都注釋掉,重建立一個檔案web60的配置檔案
通過Xftp上傳一個html頁面到該路徑
然後到Xshell中啟動Jexus:
啟動指令:sh /usr/jexus/jws start
重新開機指令:sh /usr/jexus/jws restart
啟動成功,在浏覽器中輸入改IP及端口,可以看到Jexus已經托管該網站。
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樣式
設定.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
});
釋出網站,部署模式選架構依賴,目标運作時選可移植。
将檔案通過ftp上傳到伺服器
在xshell運作改網站:dotnet 程式集名稱.dll,運作成功,直接在浏覽器打開發現無法通路,這是伺服器防火牆沒開放該端口。
另起一個終端标簽,使用curl通路該API,可以成功傳回資料。
curl http://localhost:5002/api/values
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位址
将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
添加服務:systemctl enable jexus.service
啟動Jexus服務:systemctl start jexus.service
檢視Jexus服務狀态:systemctl status jexus.service
狀态為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