.net core 部署麒麟系统+达梦 Supervisor进程守护 redis
离线模式下进行的部署。
其中Supervisor原文参考:python3下离线安装Supervisor
.Net Core SDK
原来的系统是.net core 3.1框架,下面是.net core 3.1为例:
安装
# 创建目录
mkdir -p /usr/local/dotnet
# 上传下载的文件到上传的目录下
# 解压安装包
tar zxf dotnet-sdk-3.1.426-linux-arm64.tar.gz -C /usr/local/dotnet
# 添加dotnet快捷方式
ln -s /usr/local/dotnet/dotnet /usr/local/bin
# 查看安装情况
dotnet –info
Supervisor
涉及文件:meld3-2.0.1 setuptools-68.2.2 supervisor-4.2.5
官网相关文件下载地址
百度网盘下载 提取码:zh5w
安装步骤
- 下载并下载setuptools。
#下载最新安装包,并上传。
#解压
tar -xvf setuptools-68.2.2.tar.gz
#安装
cd setuptools-68.2.2/
python3 setup.py install
- 下载并安装meld3
#下载安装包,并上传
#解压
tar -zxvf meld3-2.0.1.tar.gz
#安装
sudo python setup.py install
#更新一下配置
ldconfig
- 下载并安装supervisor。
#下载最新安装包,并上传。
#解压
tar -xvf supervisor-4.2.5.tar.gz
#安装
cd supervisor-4.2.5/
python3 setup.py install
- 使用echo_supervisord_conf生成配置文件
# 创建目录
mkdir /etc/supervisor
# echo_supervisor_conf程序(用来生成初始配置文件,文件名可以自定义)来初始化一个配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
# 修改supervisor.conf配置信息,目的是为了创建一个supervisor进程配置文件加载目录,让supervisor自动加载该目录下.ini后缀的文件作为服务配置
[include]
files = /etc/supervisor/conf.d/*.ini
- 开启supervisord服务并查看是否正常
supervisord -c /etc/supervisor/supervisord.conf
ps -fe | grep supervisord
- 修改配置文件
vim /etc/supervisor/supervisord.conf
原文中还有一些对其临时目录内容的修改,避免临时文件夹被删除。
- 添加项目配置文件
mkdir -p /etc/supervisor/conf.d
vim /etc/supervisor/conf.d/自己的项目名.conf
然后根据自己项目情况添加配置文件;日志文件路径不存在的,需要自己先创建,否则下面开启服务时会报错。
# 1 SmartCityApi
[program:xxxx]
# 2 程序在该路径下运行
directory=/home/wwwroot/xxxx/
#运行用户root
user = root
# 3 运行
command=dotnet xxxx.dll
#在supervisord 启动的时候也自动启动
autostart = true
#启动 1 秒后没有异常退出,就当作已经正常启动了
startsecs = 0
# 停止等待时间
stopwaitsecs=10
#程序异常退出后自动重启
autorestart = true
#启动失败自动重试次数,默认是 3
startretries = 100
# 4 日志文件若文件夹不存在需新建
stdout_logfile=/var/xxx/xxxx.log
# 5 错误日志
stderr_logfile=/var/xxx/xxxx.log
#设置环境变量
environment=ASPNETCORE_ENVIRONMENT=Development
supervisorctl update
更新一下;
- 其他相关命令
#查看进程状态
supervisorctl status
#查看程序日志打印信息
supervisorctl tail -f xxxx
#启动
#停止
#更新
开机自动启动
Nginx(麒麟)
无法访问互联网的情况下安装;
安装&启动
- 上传文件到服务器;
- 依次执行:
# 安装依赖
yum -y install zlib zlib-devel pcre-devel openssl openssl-devel
# 解压缩
tar -zxvf nginx-1.25.3.tar.gz
# 进入解压后的目录
cd nginx-1.25.3/
# 执行配置
./configure
# 编译安装(默认安装在/usr/local/nginx)
make
make install
-
安装完成后,使用whereis nginx即可查看安装路径。
-
进入nginx安装目录;
-
执行
./nginx
,ps aux | grep nginx
查看启动状态。
反向代理
- 跳转配置文件所在目录。
- 修改配置文件。
- 重新加载配置文件
./nginx -s reload
开机自启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
修改/etc/rc.d/rc.local文件 :vi /etc/rc.d/rc.local
添加 /usr/local/nginx/sbin/nginx
. 然后保存退出 :qw
。
Nginx(Windows)
- 下载完成后,解压缩,运行cmd,使用命令进行操作,不要直接双击nginx.exe。
- 使用命令到达nginx的加压缩后的目录。
cd C:\Users\Administrator\Downloads\nginx-1.25.3
- 启动nginx服务
start nginx
- 查看任务进程是否存在,dos或者任务详情中均可查看。没有查看解压目录下的日志文件。
tasklist /fi "imagename eq nginx.exe"
未正常启动查看启动目录下的日志文件。
常见的错误
(1)端口号被占用
(2)nginx文件夹路径含中文
-
修改配置文件,根据本地需要更改配置文件;
修改完成后保存,使用以下命令nginx -t -c /Users/Administrator/Downloads/nginx-1.25.3/conf/nginx.conf
检查一下配置文件是否正确,后面是nginx.conf文件的路径,successful就说明正确了;
重启nginxnginx -s reload
-
配置说明
#user nobody;
#==工作进程数,一般设置为cpu核心数
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
#==最大连接数,一般设置为cpu*2048
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
#==客户端链接超时时间
keepalive_timeout 65;
#gzip on;
#当配置多个server节点时,默认server names的缓存区大小就不够了,需要手动设置大一点
server_names_hash_bucket_size 512;
#server表示虚拟主机可以理解为一个站点,可以配置多个server节点搭建多个站点
#每一个请求进来确定使用哪个server由server_name确定
server {
#站点监听端口
listen 8800;
#站点访问域名
server_name localhost;
#编码格式,避免url参数乱码
charset utf-8;
#access_log logs/host.access.log main;
#location用来匹配同一域名下多个URI的访问规则
#比如动态资源如何跳转,静态资源如何跳转等
#location后面跟着的/代表匹配规则
location / {
#站点根目录,可以是相对路径,也可以使绝对路径
root html;
#默认主页
index index.html index.htm;
#转发后端站点地址,一般用于做软负载,轮询后端服务器
#proxy_pass http://10.11.12.237:8080;
#拒绝请求,返回403,一般用于某些目录禁止访问
#deny all;
#允许请求
#allow all;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
#重新定义或者添加发往后端服务器的请求头
#给请求头中添加客户请求主机名
proxy_set_header Host $host;
#给请求头中添加客户端IP
proxy_set_header X-Real-IP $remote_addr;
#将$remote_addr变量值添加在客户端“X-Forwarded-For”请求头的后面,并以逗号分隔。 如果客户端请求未携带“X-Forwarded-For”请求头,$proxy_add_x_forwarded_for变量值将与$remote_addr变量相同
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#给请求头中添加客户端的Cookie
proxy_set_header Cookie $http_cookie;
#将使用代理服务器的主域名和端口号来替换。如果端口是80,可以不加。
proxy_redirect off;
#浏览器对 Cookie 有很多限制,如果 Cookie 的 Domain 部分与当前页面的 Domain 不匹配就无法写入。
#所以如果请求 A 域名,服务器 proxy_pass 到 B 域名,然后 B 服务器输出 Domian=B 的 Cookie,
#前端的页面依然停留在 A 域名上,于是浏览器就无法将 Cookie 写入。
#不仅是域名,浏览器对 Path 也有限制。我们经常会 proxy_pass 到目标服务器的某个 Path 下,
#不把这个 Path 暴露给浏览器。这时候如果目标服务器的 Cookie 写死了 Path 也会出现 Cookie 无法写入的问题。
#设置“Set-Cookie”响应头中的domain属性的替换文本,其值可以为一个字符串、正则表达式的模式或一个引用的变量
#转发后端服务器如果需要Cookie则需要将cookie domain也进行转换,否则前端域名与后端域名不一致cookie就会无法存取
#配置规则:proxy_cookie_domain serverDomain(后端服务器域) nginxDomain(nginx服务器域)
proxy_cookie_domain localhost .testcaigou800.com;
#取消当前配置级别的所有proxy_cookie_domain指令
#proxy_cookie_domain off;
#与后端服务器建立连接的超时时间。一般不可能大于75秒;
proxy_connect_timeout 30;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#当需要对同一端口监听多个域名时,使用如下配置,端口相同域名不同,server_name也可以使用正则进行配置
#但要注意server过多需要手动扩大server_names_hash_bucket_size缓存区大小
server {
listen 80;
server_name www.abc.com;
charset utf-8;
location / {
proxy_pass http://localhost:10001;
}
}
server {
listen 80;
server_name aaa.abc.com;
charset utf-8;
location / {
proxy_pass http://localhost:20002;
}
}
}
Redis
离线安装
- 下载redis:
https://redis.io/download/#redis-downloads
- 解压并安装
#解压安装包
tar -zxvf redis-7.2.3.tar.gz
#make
cd redis-7.2.3
make
#指定目录安装
mkdir -p /usr/local/redis
make PREFIX=/usr/local/redis install
通常情况下:
库的默认路径为 ${PREFIX}/lib
或 ${PREFIX64}
,可通过make LIBDIR=dir install
指定
可执行文件的默认路径为${PREFIX}/bin
,可通过make BINDIR=dir install
指定
- 复制配置文件到/usr/local/redis/bin目录;
cp /home/redis/redis-7.2.3/redis.conf /usr/local/redis/bin/
- 配置环境变量
export PATH=/bin:/usr/bin:$PATH:/usr/local/redis/bin
- 启动Redis
cd /usr/local/redis/bin
./redis-server redis.conf
#后台自启
nohup ./redis-server redis.conf 2>1&
- 设置redis访问权限
#修改配置文件
cd /usr/local/redis/bin
vim redis.conf
- 基本用法
#认证连接redis-server
redis-cli -a password
quit
#连接redis-server
redis-cli
#进行认证
auth password
#设置key-value
set key01 value01
quit
#获取设置的key值
redis-cli -a password get key01
quit
#连接到redis-server指定的数据库
[root@vdevops ~]# redis-cli -a password -n 1
select 2
quit
MySql 迁移达梦数据库(DM8)
数据迁移
- 数据类型映射
根据自己的需要,做类型映射;
- 配置数据源 (mysql-connector-java-5.1.25-bin.jar)
使用默认驱动时若遇到错误时,使用指定驱动,根据mysql版本下载对应的驱动文件。
- 根据工具界面要求一步步操作,一直到最后完成数据迁移;
根据需要在数据类型映射中增加需要的数据类型映射,设置映射后在迁移选项中需求默认数据类型映射。
- 迁移工具结构比较,产生添加/修改sql脚本;
达梦8以上版本支持;
DM&EF反向工程
Scaffold-DbContext
-Connection “Server=localhost; User Id=YOURUSER; PWD=YOURPWD;PORT=5236;schema=XSCHEMA;”
-Provider Pomelo.EntityFrameworkCore.Dm
-OutputDir Models
-Context DMDbConetxt