在CentOS 7服务器中使用Jexus发布.net core webapi
环境:
服务器:CentOS 7 64位
.net core 2.1
Jexus独立版

按照官网安装独立版命令: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://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的更多相关文章
- 发布 .Net Core WebAPI 应用程序到 Docker
目录 1. 创建 .net core webapi 项目 2. 编译应用 3. 创建 Dockerfile 文件 4. 上传文件到服务器 5. 生成Docker Image 6. 在Docker Co ...
- 在服务器中无法自宿主启动一个webapi项目,引出查看系统端口是否被占用
在windows server下启动一个webapi的.net core项目报错 如下图: 让我以为服务器还需要别的配置.后来发现原来是线程被占用了. 在windows下查看某线程是否被占用的命令如下 ...
- 在CentOS 8 Linux中安装使用Cockpit服务器管理软件
在本文中,我们将帮助您在CentOS 8服务器中安装Cockpit Web 控制台,以管理和监视本地系统以及网络环境中的Linux服务器.您还将学习如何将远程Linux主机添加到Cockpit并在Ce ...
- CentOS FTP服务器系统套件全面讲解
对大家推荐很好使用的CentOS FTP系统,像让大家对CentOS FTP系统有所了解,然后对CentOS FTP系统全面讲解介绍,希望对大家有用. 1.vsFTPd,目前常用CentOS FTP服 ...
- 如何发布二次开发后的openfire源码到linux服务器中
这篇文章是在你已经down了openfire的源码,然后在本地跑起来了,再然后开发了一个自己的插件,想要发布到服务器上.ok这时候出现了一个问题,怎么才能发布到服务器上呢?别急往下看: 1.运行ant ...
- .NetCore下使用IdentityServer4 & JwtBearer认证授权在CentOS Docker容器中运行遇到的坑及填坑
今天我把WebAPI部署到CentOS Docker容器中运行,发现原有在Windows下允许的JWTBearer配置出现了问题 在Window下我一直使用这个配置,没有问题 services.Add ...
- 在离线环境中发布.NET Core至Windows Server 2008
在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...
- Redis在游戏服务器中的应用
排行榜游戏服务器中涉及到很多排行信息,比如玩家等级排名.金钱排名.战斗力排名等.一般情况下仅需要取排名的前N名就可以了,这时可以利用数据库的排序功能,或者自己维护一个元素数量有限的top集合.但是有时 ...
- SQL SERVER2000中订阅与发布的具体操作
同步过程 一.准备工作,如果完成则可跳过. 1.内网DB服务器作为发布服务器,外网DB服务器作为订阅服务器. 发布服务器和订阅服务器上分别创建Windows用户jl,密码jl,隶属于administr ...
随机推荐
- centos go 安装 使用
#goland 确保能ping通百度[root@z my_project]# vi /etc/resolv.conf# Generated by NetworkManagersearch locald ...
- Golang笔记整理--第二天
一. 标识符 Go语言标识符构成规则:开头第一个字符必须是字母或者是下划线,后面可以跟任意多个字符,数子或者下划线,并且区分大小写. 例: _aa11 //合法标识符 aa11 //合法标识符 _aa ...
- Java不可重入锁和可重入锁的简单理解
基础知识 Java多线程的wait()方法和notify()方法 这两个方法是成对出现和使用的,要执行这两个方法,有一个前提就是,当前线程必须获其对象的monitor(俗称“锁”),否则会抛出Ille ...
- redis 过期策略你知道多少,看完文章你会不自觉说喔哦
Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除.你可以想象 Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割. 你还可以进一步站在死神的角度 ...
- ucore lab2
CPU在如下时刻会检查特权级 访问数据段 访问页 进入中断服务例程(ISR) RPL位于段寄存器 DS ES FS GS CPL位于CS SS DPL位于段描述符表/门描述符 访问门时: CPL< ...
- rcp
rcp的命令 rcp,远程文件复制.rcp既可以在本地主机和远程主机之间进行文件复制,也可以用于在两个远程主机之间进行文件复制.除了复制文件外,rcp也可以用于目录复制,只需要加参数-r. rcp的命 ...
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
某日中午,午睡正香的时候,接到系统的报警电话,提示生产某物理机异常宕机了,目前该物理机已恢复,需要重启上面部署的应用. 这时瞬间没有了睡意,登上堡垒机,快速重启了应用,系统恢复正常.本想着继续午睡,但 ...
- Vue 开发技巧总结
博客地址:https://ainyi.com/95 本人玩了 Vue 两年多,在此总结一下开发时的一些技巧和方法 自定义组件 v-model v-model 是 Vue 提供的一个语法糖,它本质上是 ...
- HttPServletRequest 对象 基本应用
HttPServletRequest 对象 基本应用 防盗链 获取Referer这个消息头,判断Referer是不是从指定页面来的.如果不是从指定页面的,跳转回指定页面. 这可以用于保证页面广告的观看 ...
- 前端修仙之路---一、如何用gulp搭建一套web前端开发框架
引言 相信从事web前端开发的朋友都知道,现在流行的Vue.AngularJS等框架中,它们都有独立的脚手架来创建项目,比如Vue有vue-cli,Angular有angula-cli.脚手架可以一键 ...