本系列将开始.netcore在Linux上的跨平台之旅,从最初的.netcore在Linux平台上运行示例开始;
一个demo
运行一个.netcore示例
先看下本机安装的dotnet版本信息:
开始构建dotnet demo:
|
|
编译并运行项目:
|
|
将项目发布到指定位置:
|
|
将打包好的应用运行起来:
|
|
但是这时候外部是无法访问的,因为是内网起的应用;
内部可以访问:
我们可以改到0.0.0.0对外全部放开,然后就可以外部访问了,但是一般不推荐这么做;
这时候我们可以用一个nginx代理一个应用程序,我们知道nginx 做的不仅仅是代理,nginx 有安全模块、限流模块、记录等等日志,这样我们就不用在应用程序中实现类似的功能,大大降低了项目的复杂度;
安装Nginx
我这里的环境是Ubuntu18.04系统,可以在线安装nginx, 当然也可以编译安装指定版本nginx。这里因为Nginx 软件包在默认的 Ubuntu 存储库中可用。 安装非常简单,就在线安装下;
|
|
查看nginx版本与服务启动状态:
这时候我们输入ip地址,正常出现了Nginx默认的界面,这表明可以正常使用了,Nginx安装成功;
Nginx代理应用
|
|
然后nginx配置重新加载配置或者重启服务一下:
|
|
创建服务文件
什么是服务文件?
在 Linux 中,还有具有“.service”扩展名的单元配置文件,用于在进程退出时控制守护程序的行为。 这些文件也称为 服务文件、 单元文件和 服务单元文件。
这些服务文件位于以下目录之一:
/usr/lib/systemd/system:存储已下载应用程序的服务文件 /etc/systemd/system/:存储由系统管理员创建的服务文件
这两个分别放什么呢?
比如这种nginx 一般是第三方的程序,就放在/usr/lib/systemd/system下面。
一般yum安装都在里面。
然后/etc/systemd/system/ 这里放的是我们自己的应用程序。
这里就可以在这个目录下写一个:
|
|
上述配置文件的含义解释一下:
- WorkingDirectory 是发布应用程序的目录。
- ExecStart 是启动应用程序的实际命令。
- Restart=always 是不言而喻的。 如果由于某种原因(崩溃、异常等)而停止,则始终会启动此过程。
- RestartSec=10 也是不言而喻的。 进程停止后,将在经过 10 秒后启动。
- SyslogIdentifier 很重要。 它表示“系统日志标识符”。 有关守护程序的信息记录在此名称下的系统日志中。 还可以使用此标识符查找进程的 PID。
- User 是管理服务的用户。 它应存在于系统中,并具有相应的应用程序文件所有权。
- Environment可以在服务文件中设置任意数量的环境变量。
然后这里有一个disable,这个意思是系统重启后不会去启动这个。
设置enable:systemctl enable AspNetCoreDemo
这里就会创建一个链接过去。 这里面的就是开启自启动的。
类似的可以用iptables具体为你的应用做一些访问需求,可以在规则里面配置;
再看Linux
linux 是基于名为procfs的特殊文件系统。在Linux上,可以认为一切皆文件;
通常,数据会在启动时映射到名为 /proc 的装入点。 proc 文件系统充当内核中内部数据结构的接口。 可以使用该文件获取有关系统的信息,并在运行时更改某些内核参数 (sysctl) 。
进程被视为 /proc/ 目录下的文件。 此目录在此处定义为特殊目录:该目录就是保存有关 Linux 系统的所有详细信息,包括其内核、进程和配置参数等。
我们常见的查看内存,可以用free
命令,同时也可以使用:cat /proc/meminfo
又比如查看cpu信息:cat /etc/cpuinfo
可以看到机器的cpu是:Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz
我们来查看进程信息:
这个我们进入13956这个目录里面看一下:
这目录里面就是这个进程运行的数据;
查看cmdline和进程环境变量:
Linux排查
最基础的排查方式就是查看内存,CPU, 硬盘,网络等信息;
首先最耳熟能详的就是top命令;
如果上述显示的信息不能满足我们的查看要求,可以按f去选择自己想要的信息;
通过空格,选择自己需要看的信息。
然后使用man top 查看用法。
top -p xxx 查看某一个进程,然后有个比较好用的是 top -Hp xxx
这个是查看线程模式:
可以观察到线程的运行情况。
如果运行太多,可以使用U来查看某个用户的进程。
|
|
如果查看正在使用cpu的进程可以使用-i,比如 top -i -u root 这样查看。
类似的还有很多性能观察工具htop, vmstat, procinfo, gnome-system-monitor, mpstat等等可用, 可以多方面多维度的观察Linux的性能指标;