环境:

服务器:CentOS 7 64位

.net core 2.1

Jexus独立版

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

按照官网安装独立版命令: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
:: :: --:--:--
sh:行7: wget: 未找到命令
tar (child): jexus-6.1-x64.tar.gz:无法 open: 没有那个文件或目录
tar (child): Error is not recoverable: exiting now
tar: Child returned status
tar: Error is not recoverable: exiting now
cp: 无法获取"jexus" 的文件状态(stat): 没有那个文件或目录
sh: 第 行:cd: /usr/jexus: 没有那个文件或目录
chmod: 无法访问"/usr/jexus/jws": 没有那个文件或目录
sh:行12: /usr/jexus/jws: 没有那个文件或目录
sh: 第 行: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 ::
* base: mirrors..com
* epel: mirror01.idc.hinet.net
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB ::
epel | 5.3 kB ::
extras | 3.4 kB ::
packages-microsoft-com-prod | 2.9 kB ::
updates | 3.4 kB ::
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/. (/): extras//x86_64/primary_db | kB ::
(/): epel/x86_64/updateinfo | kB ::
(/): updates//x86_64/primary_db | 5.0 MB ::
(/): packages-microsoft-com-prod/primary_db | kB ::
(/): epel/x86_64/primary_db | 6.7 MB ::
正在解决依赖关系
--> 正在检查事务
---> 软件包 wget.x86_64.0.1.-.el7_6. 将被 安装
--> 解决依赖关系完成 依赖关系解决 ===============================================================================================================
Package 架构 版本 源 大小
===============================================================================================================
正在安装:
wget x86_64 1.14-.el7_6. updates k 事务概要
===============================================================================================================
安装 软件包 总下载量: 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=                           # 外部访问的端口号,可以改成你想要的端口号,外部访问通过 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=; # Asp.Net Core应用程序所使用的端口号,如果在程序中使用了UsrUrls自定义端口则使用UsrUrls中填写的端口(不建议使用UsrUrls自定义端口),
# 在没有使用UsrUrls自定义端口的情况下端口号设置为 ,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=

# Jexus 默认访问的工作目录
root=/ /web78/ # 应用程序的工作根目录(全路径),反向代理也需要指定 # 反向代理设置:
# 路径是"/"即根目录,也可以设置一个虚拟路径,如:reproxy=/api/ http://api.abc.com/
reproxy=/ 127.0.0.1:, 127.0.0.1:, 127.0.0.1:

参考资料:

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

在CentOS 7服务器中使用Jexus发布.net core webapi的更多相关文章

  1. 发布 .Net Core WebAPI 应用程序到 Docker

    目录 1. 创建 .net core webapi 项目 2. 编译应用 3. 创建 Dockerfile 文件 4. 上传文件到服务器 5. 生成Docker Image 6. 在Docker Co ...

  2. 在服务器中无法自宿主启动一个webapi项目,引出查看系统端口是否被占用

    在windows server下启动一个webapi的.net core项目报错 如下图: 让我以为服务器还需要别的配置.后来发现原来是线程被占用了. 在windows下查看某线程是否被占用的命令如下 ...

  3. 在CentOS 8 Linux中安装使用Cockpit服务器管理软件

    在本文中,我们将帮助您在CentOS 8服务器中安装Cockpit Web 控制台,以管理和监视本地系统以及网络环境中的Linux服务器.您还将学习如何将远程Linux主机添加到Cockpit并在Ce ...

  4. CentOS FTP服务器系统套件全面讲解

    对大家推荐很好使用的CentOS FTP系统,像让大家对CentOS FTP系统有所了解,然后对CentOS FTP系统全面讲解介绍,希望对大家有用. 1.vsFTPd,目前常用CentOS FTP服 ...

  5. 如何发布二次开发后的openfire源码到linux服务器中

    这篇文章是在你已经down了openfire的源码,然后在本地跑起来了,再然后开发了一个自己的插件,想要发布到服务器上.ok这时候出现了一个问题,怎么才能发布到服务器上呢?别急往下看: 1.运行ant ...

  6. .NetCore下使用IdentityServer4 & JwtBearer认证授权在CentOS Docker容器中运行遇到的坑及填坑

    今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.Add ...

  7. 在离线环境中发布.NET Core至Windows Server 2008

    在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...

  8. Redis在游戏服务器中的应用

    排行榜游戏服务器中涉及到很多排行信息,比如玩家等级排名.金钱排名.战斗力排名等.一般情况下仅需要取排名的前N名就可以了,这时可以利用数据库的排序功能,或者自己维护一个元素数量有限的top集合.但是有时 ...

  9. SQL SERVER2000中订阅与发布的具体操作

    同步过程 一.准备工作,如果完成则可跳过. 1.内网DB服务器作为发布服务器,外网DB服务器作为订阅服务器. 发布服务器和订阅服务器上分别创建Windows用户jl,密码jl,隶属于administr ...

随机推荐

  1. 极简 Node.js 入门 - 3.1 File System API 风格

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  2. 注意STL的小细节 2009-05-18 22:18

    STL分容器,算法,跌代器,配置器,适配器,函数对象等. 容器好学好理解.就是vector,list等,这些是常用的,还有些不常用的deque等.算法可以说是STL的精华了,它的功能强大种类繁多,可根 ...

  3. 序列化流(ObjectOutputStream、ObjectInputStream)

    1.序列化流(ObjectOutputStream) package demo10.objstream; /* java.io.ObjectOutputStream extends OutputStr ...

  4. golang安装及vscode编辑器配置

    安装Go语言及搭建Go语言开发环境 下载 下载地址:https://studygolang.com/dl 系统选择: 根据不同系统下载安装包: 安装 Windows MAC安装 点开可执行程序 下一步 ...

  5. Mybatis分页插件: pageHelper的使用及其原理解析

    在实际工作中,很进行列表查询的场景,我们往往都需要做两个步骤:1. 查询所需页数对应数据:2. 统计符合条件的数据总数:而这,又会导致我们必然至少要写2个sql进行操作.这无形中增加了我们的工作量,另 ...

  6. Hive日期、时间转换:YYYY-MM-DD与YYYYMMDD;hh.mm.ss与hhmmss的相互转换

    思路 YYYY-MM-DD与YYYYMMDD:hh-mm-ss与hhmmss的相互转换有两种办法,第一种是利用UNIX时间戳函数,第二种是利用字符串拼接函数. YYYY-MM-DD与YYYYMMDD相 ...

  7. Ajax、XMLHttpRequest、JSONP的区别

    来自2020年搜狗的笔试题,第一题就不会

  8. 使用tensorflow2识别4位验证码及思考总结

    在学习了CNN之后,自己想去做一个验证码识别,网上找了很多资料,杂七杂八的一大堆,但是好多是tf1写的,对tf1不太熟悉,有点看不懂,于是自己去摸索吧. 摸索的过程是异常艰难呀,一开始我直接用capt ...

  9. 构建docker私有仓库+k8s-pod应用

    环境版本系统:centos7.4docker-compose version 1.26.2docker-py version: 4.3.0CPython version: 2.7.5docker-ve ...

  10. 0827考试 T1

    Description ​ 有一棵树,每个点有一个权值,找到一个权值最大的"乙烷"模型. ​ "乙烷"模型是指: ​ 其中黑点表示可以有0个或多个点. Samp ...