“Linux 上 .NET Core”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
docker>Evan
 
(导入1个版本)

2019年10月14日 (一) 13:48的版本

plan and optimize

数据库读取这块有办法提速没,不做缓存的情况下

加索引

合理建表 也就是sql 语句优化

取消dns查询 关键字段建立索引 确保索引用上 表分区 队列操作 比较常的

索引这个最基本的,基本上上千万级别查询都没问题的,亿级别的分表分库处理。 最好的优化方式是钱。。。。



开启 MySQL query cache,加快数据库读取速度

先在外网机上上个pg

pre env

用.net core去开发后端 会暴露n个web服务器和n个socket服务器 全部.net core的

https://www.mysql.com/products/connector/

这个是.net fx的

.net core是另外的

DB

Postgresql


db 备份

postgresql 硬盘上ssd 那应该是db 独立为一台机器

第一种方法:通过PostgreSQL的环境变量参数来实现保存密码

cat pgsql_backup.sh

#!/bin/bash
export PGPASSWORD="123456"
su -  postgres
-bash-4.2$ /usr/bin/pg_dump  -U postgres  awen > /data/pgsql.backup.sql 
-bash: /data/pgsql.backup.sql: 权限不够
-bash-4.2$ /usr/bin/pg_dump  -U postgres  awen > pgsql.backup.sql 


注意的点 1. 要 切换到postgres用户
         2. 备份的目录得是postgres用户有权限的地方

postgrepsql参考

PostgreSQL

PostgreSQL Greenplum 培训视频分享

PostgreSQL的备份与还原-good

postgreSQL进程检测与数据库备份脚本

一种简单的PostgreSQL备份脚本(无须手动输入密码)

PostgreSQL 9.6.0 手册

PostgreSQL新手入门 postgresql YUM Installation

Postgresql数据库运维笔记

CentOS7 PostgreSQL安装

PostgreSQL 有哪些经典入门书籍

PostgreSQL在阿里的应用


Linux下定时备份Postgresql数据库

Postgresql笔记

常用命令

su - postgres
postgres=# \du
                             角色列表
 角色名称 |                    属性                    | 成员属于 
----------+--------------------------------------------+----------
 awen     | 超级用户                                   | {}
 postgres | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS | {}

postgres=# \l
                                     数据库列表
   名称    |  拥有者  | 字元编码 |  校对规则   |    Ctype    |       存取权限        
-----------+----------+----------+-------------+-------------+-----------------------
 awen      | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 行记录)

.NET CORE

ASP.NET Core

发布ASP.NET Core程序到Linux生产环境

ASP.NET Core 2.0笔记(1):CentOS下.net core2 sdk nginx、sup

.NET Core全面扫盲贴

Linux 上 .NET Core

.NET Core 入门

.net core install

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

#sudo yum update #可以不要的
yum makecache
sudo yum -y install libunwind libicu
sudo yum  -y install dotnet-sdk-2.1.2


#me
mkdir webapi
dotnet new webapi
dotnet  run



dotnet new console -o hwapp
cd hwappdotnet run

warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Error -99 EADDRNOTAVAIL address not available'.


#if asp.net 
dotnet new razor -o aspnetcoreapp
cd aspnetcoreapp
dotnet run

Browse to http://localhost:5000

Docker 部署dotnetcore

部署asp.net core

配置守护服务(Supervisor) 这个 暂时启动有问题 

:ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。

为了解决这个问题,我们需要有一个程序来监听ASP.NET Core 应用程序的状况。在应用程序停止运行的时候立即重新启动。这边我们用到了Supervisor这个工具,Supervisor使用Python开发的。

安装Supervisor

yum install python-setuptools
easy_install supervisor #or yum 

yum install epel-release
yum install -y supervisor

配置Supervisor

mkdir /etc/supervisor

#echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改supervisord.conf文件,

vim  /etc/supervisor/supervisord.conf
将文件尾部的配置(表示加载配置文件目录下的配置文件)
修改为

[include]
files = relative/directory/*.ini

把;files = relative/directory/*.ini改为files = conf.d/*.conf

保存并退出

c.执行supervisorctl reload命令使配置文件生效。(ps:如果服务已启动,修改配置文件可用“supervisorctl reload”命令来使其生效)

d.在/etc/supervisor/下创建conf.d文件夹,及ProjectName.conf(以项目名称命名的)
 mkdir -p  /etc/supervisor/conf.d
vi /etc/supervisor/conf.d/ProjectName.conf
 
 
e.打开ProjectName.conf文件,添加内容如下:
[program:ProjectName]
command=dotnet ConsoleApp1.dll ;
directory=/data/wawa_test1/publish;
autorestart=true ;
autostart=true ;
stderr_logfile=/data/logs/ProjectName.err.log ;
stdout_logfile=/data/logs/ProjectName.out.log ;
environment=ASPNETCORE_ENVIRONMENT=Production;
user=root ;
stopsignal=INT
startsecs=1;


##下面为解说
[program: ProjectName]
command=dotnet ProjectName.dll ; 运行程序的命令
directory=/root/Publishing/PublishOutput/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/ProjectName.err.log ; 错误日志文件
stdout_logfile=/var/log/ProjectName.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔


service  supervisord start 

supervisord -c /etc/supervisor/ supervisord.conf
ps -ef | grep ProjectName


err
[root@_111_centos publish]# supervisord -c /etc/supervisor/supervisord.conf
Error: invalid literal for long() with base 10: '1;' in section 'program:ProjectName' (file: '/etc/supervisor/conf.d/ProjectName.conf')


配置对ASP.NET Core应用的守护

创建一个 farmhomeapp.conf文件
内容大概如下 

[program:ProjectName]
command=dotnet farmhome.dll ; 运行程序的命令
directory=/home/wwwroot/farmhome/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/WebApplication1.err.log ; 错误日志文件
stdout_logfile=/var/log/WebApplication1.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT


运行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf

[root@VM_130_111_centos hosts]# ps -ef | grep super
root      6864     1  0 10:04 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

linux服务启动形式

http://www.cnblogs.com/dudu/p/run-aspnet-core-website-as-service-on-linux.html

https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction?tabs=aspnetcore2x 可以通过systemctl 启动

配置Supervisor开机启动

新建一个“supervisord.service”文件

vim /usr/lib/systemd/system/supervisord.service

内容如下

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]0

执行命令:systemctl enable supervisord 设定开机启动

执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

Supervisor安装与配置(Linux/Unix进程管理工具)

Linux Supervisor的安装与使用入门

使用Supervisor简化进程管理工作 http://www.qingpingshan.com/m/view.php?aid=318910


postgresql YUM Installation

run app

[root@Vntos data]# dotnet  ConsoleApp1.dll 
A fatal error was encountered. The library 'libhostpolicy.so' required to execute the application was not found in '/data/'.

err

PS D:\ChuckLu\Git\GitHub\KerryJiang\IrvineCSharpCourses> dotnet restore
MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file.

这个命令需要在项目或者解决方案下运行才有效

然后叫老谢 重打个包就好  应该都是他那边的问题 

http://www.cnblogs.com/chucklu/p/7095919.html


Get Started with ASP.NET Core

Install .NET and build your first app on CentOS

Install .NET and build your first app on Docker

服务的注册和发现 Consul

可能用这个做负载均衡

https://www.consul.io Consul入门

nginx

server {
    listen 80;
     
    server_name 192.168.30.108;
 
    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }
}

知识扩展

微软开发的.NET平台编程语言
C#,一个以C++和Java语法为基础开发的一个全新的面向对象语言,是.NET开发的首选语言。
Visual Basic .NET,一个加强了面向对象支持的,支持多线程的Visual Basic版本。
C++/CLI,一个C++的.NET平台版本变种。
JScript .NET,一个编译版本的MicrosoftJScript语言。
J#,一个对应于Java和J++(微软自己开发的Java变种)的.NET平台版本,但是由于知识产权问题,目前微软公司已经停止其开发应用。
F#,ML语言家族的一员。
Microsoft Small Basic

.NET Core中的包、元包与框架

参考