在CentOS 7服务器中使用Jexus发布.net core webapi
环境:
服务器: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 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() /*.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.linuxdot.net/
https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install
Liunx下使用top命令查看CPU、内存等: