在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 ...
随机推荐
- 学长小清新题表之UOJ 31.猪猪侠再战括号序列
学长小清新题表之UOJ 31.猪猪侠再战括号序列 题目描述 大家好我是来自百度贴吧的_叫我猪猪侠,英文名叫\(\_CallMeGGBond\). 我不曾上过大学,但这不影响我对离散数学.复杂性分析等领 ...
- Java 泛型(参数化类型)
Java 泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所 ...
- 12c RAC 用Rman 恢复到异机单实例
准备工作 原服务器软件部署:Redhat 6.6 + Oracle 12.2.0.1 rac Oracle12c单实例安装 1.创建恢复服务器,设置大于原库数据大小的磁盘容量.设置相同的服务器主机名参 ...
- Linux权限之/etc/passwd文件
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性.系统管理员经常会接触到这个文件的修改以完成对用户的管理工作.这个文件对所有用户都是可读的.但是L ...
- Spring Cloud Admin健康检查 邮件、钉钉群通知
源码地址:https://github.com/muxiaonong/Spring-Cloud/tree/master/cloudadmin Admin 简介 官方文档:What is Spring ...
- python编译错误ValueError: Complex data not supported
今天在用python跑一个k-means算法与谱聚类算法对比的程序时,谱聚类的图不能出来,编译报错 后来,多亏了这位GitHub用户,找到了解决办法,是因为在运算过程中出现了复数,因此要进行强制转换 ...
- 学习lammps 对in文件的一个概述性心得(转载)
转载自:http://muchong.com/html/201411/8149677.html 写在开头:1.尽量列举了大部分(几乎)的命令2.带星号命令非常重要,大家在看mannual中命令的解释的 ...
- Xposed+X5使用
1.Xposed 2.X5
- SpringBoot中加载XML配置
开篇 在SpringBoot中我们通常都是基于注解来开发的,实话说其实这个功能比较鸡肋,但是,SpringBoot中还是能做到的.所以用不用是一回事,会不会又是另外一回事. 涛锅锅在个人能力能掌握的范 ...
- Tornado + vue.js 前后端分离运行脚本
shell脚本部分: #!/bin/bash 主脚本 (./cem-demo_publish_front) (./cem-demo_publish_backend) #!/bin/bash 后端脚本 ...