0


VSCode开发ASP.NET WEBAPI环境

1.WINDOWS10系统WSL2安装Oracle Linux 7.9子系统(包含DOCKER以及使用DOCKER部署MYSQL-8.3.0)
(1)在管理员的Windows PowerShell执行命令(打开“适用于Linux的Windows子系统”)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
(2)在管理员的Windows PowerShell执行命令(打开“虚拟机平台”)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
(3)重启电脑
(4)设置WSL默认版本
wsl --set-default-version 2
(5)更新WSL
wsl --update
(6)重启WSL
wsl --shutdown
(7)重启电脑
(8)查看可以安装Linux版本(DSN配置成114.114.114.114)
wsl --list --online
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.5 openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed openSUSE Tumbleweed
(9)安装Oracle Linux 7.9
wsl --install -d OracleLinux_7_9
PS C:\Users\Administrator> wsl --install -d OracleLinux_7_9
正在安装: Oracle Linux 7.9
已安装 Oracle Linux 7.9。
正在启动 Oracle Linux 7.9…
Installing, this may take a few minutes…
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: ybjk
Changing password for user ybjk.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
Installation successful!
[ybjk@DESKTOP-AKD562M ~]$
(10)重新打开Windows PowerShell查看子系统状态
wsl -l -v
PS C:\Users\Administrator> wsl -l -v
NAME STATE VERSION

设置MySQL客户端默认字符集

default-character-set=utf8mb4
#客户端连接MySQLD通过mysql.sock文件进行通信(在同一台机器上)
socket=/var/run/mysqld/mysqld.sock
#关闭自动补全sql命令功能
no-auto-rehash
#服务端设置
[mysqld]
#Mysql服务唯一编号区分主从
server-id=1
#服务端口号
port=3306
#用户
user=mysql
#允许远程访问
bind-address=0.0.0.0
#服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4
#大小写敏感0,1和2不敏感,linux默认只能0
lower_case_table_names=0
#自动提交,执行修改语句时1不用手动提交
autocommit=1

创建新表时将使用的默认存储引擎

default-storage-engine=InnoDB
#数据存放目录
basedir=/var/lib
datadir=/var/lib/mysql
pid-file=/var/run/mysqld/mysqld.pid
#客户端连接MySQLD通过mysql.sock文件进行通信(在同一台机器上)
socket=/var/run/mysqld/mysqld.sock
#日志文件
log-error=/var/run/mysqld/mysql.log

设置时区为东八区

default-time-zone = ‘+8:00’

MySQL事务隔离

transaction_isolation = REPEATABLE-READ

允许最大连接数 默认:151,注意服务器内存cpu

max_connections=1000
#负责阻止过多尝试失败的客户端以防止暴力破解密码
max_connect_errors = 6000
#超过最大连接数会将请求放入back_log堆栈内
#back_log限于系统对到来的TCP/IP连接的侦听队列的大小,超过无效。
#如果等待连接的数量超过back_log,将不被授予连接资源。
back_log = 600
#mysql打开文件描述符的限制,最大连接数的五倍
open_files_limit = 5000
#表缓存文件描述符数量
table_open_cache = 4000
#单个sql数据大于1g或者产生的binlog文件大于1g报错
max_allowed_packet=1G
#只能使用IP地址检查客户端登录
skip_name_resolve=1

控制内存临时表的最大值,超过限值后就往硬盘写tmpdir(/tmp)

tmp_table_size = 2048M

是对查询的内存临时表排序或分组形成的heap表

max_heap_table_size = 2048M
#一个事务没有提交时产生的日志到Cache中,等提交时把日志持久化磁盘。
binlog_cache_size = 12M

binlog 配置二进制日志路径

log_bin = /var/lib/mysql/binlog

binlog 配置二进制日志最大

max_binlog_size=1024M

日志自动过期清理秒数

binlog_expire_logs_seconds=86400

binlog 配置二进制日志格式

binlog-format = ROW
#不是每次写入时都将binlog与硬盘同步系统崩溃binlog丢失语句
#binlog在每N次binlog写入后与硬盘同步与InnoDB配合
sync_binlog =1

#读取表按数据文件顺序扫描缓存
read_buffer_size = 8M

MySQL的随机读缓冲区大小。

read_rnd_buffer_size = 8M
#MySQL执行排序使用的缓冲大小。
sort_buffer_size = 8M

联合查询操作所能使用的缓冲区大小

join_buffer_size = 8M
#重新利用保存在缓存中线程的数量,重新连接
thread_cache_size = 8
#使用键高速缓存来缓存索引内存1/4
key_buffer_size = 1024M
#全文索引最小索引长度默认4
ft_min_word_len=4

#设置InnoDB引擎最多可以同时打开缓冲池(Buffer Pool)中的表文件数量的变量
innodb_open_files=4096
#InnoDB使用一个缓冲池来保存索引和原始数据内存3/4
innodb_buffer_pool_size = 512M

innodb使用后台线程处理数据页上的读写请求,根据CPU核数设置默认是4

#假如CPU是2颗8核的就是8和8读比写多10和6
#范围1-64双核2-4每项四核4-8每项
innodb_write_io_threads = 4
innodb_read_io_threads = 4

默认设置为0表示不限制并发数

innodb_thread_concurrency = 0
#设置为 1 时表示使用单独的清除线程清楚InnoDB无用数据
innodb_purge_threads = 1
#把log buffer刷到文件系统中(osbuffer)去调文件系统“flush”将缓存刷新到磁盘上去
#0表示每隔一秒
#1表示每次事务提交最终写入磁盘耗IO
#2表示每次事务提交刷入文件系统数据库出问题文件系统好减少IO
innodb_flush_log_at_trx_commit = 2
#此参数确定些日志文件所用的内存大小以M为单位
innodb_log_buffer_size = 16M
#此参数确定数据日志文件的大小大性能好也会增加故障恢复时间
innodb_log_file_size = 48M
#提高性能MySQL可以以循环方式将日志文件写到多个文件MySQL8.0默认为2
innodb_log_files_in_group = 2

innodb主线程刷新缓存池中的数据脏数据比例小于90%

innodb_max_dirty_pages_pct = 90

InnoDB事务在被回滚之前可以等待一个锁定的超时秒数

innodb_lock_wait_timeout = 60

#命令行进入终端mysql -uroot -p进入
#如果没有操作的时间超过了interactive_time设置的时间就会自动断开
interactive_timeout = 28800
#当一个客户端连接到MySQL数据库后没有操作数据库保留连接的时间
#中途操作时间另算
wait_timeout = 28800

#开启慢查询日志
#慢查询日志记录了执行时间超过long_query_time秒的查询
slow_query_log=1

慢查询日志位置(不会自动删除)

slow_query_log_file = /var/lib/mysql/mysql-slow.log
#设置记录慢查询超时时间
long_query_time = 5
(29)执行下列命令容器化mysql-8.3.0
docker run --privileged=true -p 33060:3306 --name mysql830 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:8.3.0
(30)进入容器,设置数据库
①进入容器
docker exec -it mysql830 /bin/bash
②登录数据库
mysql -uroot -p
Enter password:12345678
③修改密码
alter user ‘root’@‘localhost’ identified by ‘123456’;
④创建数据库
create database jczs;
⑤创建用户
create user ‘ybjk’@’%’ identified by ‘ybjk’;
⑥给用户授权
grant all privileges on jczs.* to ‘ybjk’@’%’;
flush privileges;
(31)DBeaver下载驱动失败,在窗口首选项连接驱动MAVEN添加http://maven.aliyun.com/nexus/content/groups/public/最上,创建连接时下载驱动,驱动属性allowPublicKeyRetrieval true
2.开发环境搭建。安装如下软件
(1)Vscode,从Download Visual Studio Code - Mac, Linux, Windows下载System Installer版本,安装在D:\Vscode目录下,打开侧边栏“EXTENSIONS”面板。在搜索框中输入“Chinese”,查找出“中文简体”插件,点击“install”按钮, 按下“Ctrl+Shift+P”组合键以显示“命令面板”,然后键入“display”以筛选并显示“Configure Display Language”命令。按“Enter”,然后会按区域设置显示安装的语言列表,并突出显示当前语言设置。选择另一个“语言”以切换 UI 语言。
(2)安装wsl,如果系统带有子系统会提示安装此插件
(3)下载 .NET 8.0 SDK (v8.0.201) - Linux x64 Binaries (microsoft.com)开发包
(4)将dotnet-sdk-8.0.201-linux-x64.tar.gz复制到/mnt/dotnet/目录下
mkdir /mnt/dotnet
cd /mnt/dotnet
cp …/d/dotnet-sdk-8.0.201-linux-x64.tar.gz ./
mkdir -p /usr/share/dotnet
tar -xvf dotnet-sdk-8.0.201-linux-x64.tar.gz -C /usr/share/dotnet
ln -s /usr/share/dotnet/dotnet /usr/local/bin
(5)下载https://pan.baidu.com/s/1dMt94wW4JM3kq5lKn7PE6w?pwd=ee7h获得文件net8需要的环境libstdc.so-.6.0.26_c.gz,上传至/mnt/dotnet/目录下解压
cp …/d/net8需要的环境libstdc.so-.6.0.26_c.gz ./
tar -xvf net8需要的环境libstdc.so-.6.0.26_c.gz
(6)如下操作
删除链接
rm /usr/lib64/libstdc++.so.6
复制文件
cp libstdc++.so.6.0x64_cwj/libstdc++.so.6.0.26 /usr/lib64/
删除原版
rm /usr/lib64/libstdc++.so.6.0.19
重新建立链接
ln -s /usr/lib64/libstdc++.so.6.0.26 /usr/lib64/libstdc++.so.6
加载设置
ldconfig
环境变量设置
vim /etc/profile
末尾加上
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
保存后
source /etc/profile
(7)查看dotnet版本
dotnet --version
(8)打开Vscode连接到OracleLinux_7_9,菜单选查看终端,在终端里对WSL子系统的linux操作,这里在root家目录创建
[root@DESKTOP-AKD562M ~]# mkdir Fund.Supervision.Manager
(9)进入到Fund.Supervision.Manager文件夹内
创建解决方案命令
dotnet new sln --name Fund.Supervision.Manager
Vscode打开文件夹Fund.Supervision.Manager
创建WEBAPI项目
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet new webapi -o Fund.Supervision.API --no-https --use-controllers
将Fund.Supervision.API添加到Fund.Supervision.Manager.sln,在sln文件所在目录执行,移除remove
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet sln add ./Fund.Supervision.API/Fund.Supervision.API.csproj
编译命令
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet build
执行命令
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet run --project ./Fund.Supervision.API/Fund.Supervision.API.csproj
创建类库项目
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet new classlib -o Fund.Supervision.Model
将Fund.Supervision.Model添加到Fund.Supervision.Manager.sln,在sln文件所在目录执行,移除remove
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet sln add ./Fund.Supervision.Model/Fund.Supervision.Model.csproj
项目Fund.Supervision.API引用Fund.Supervision.Model项目
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet add ./Fund.Supervision.API/Fund.Supervision.API.csproj reference ./Fund
.Supervision.Model/Fund.Supervision.Model.csproj
在Fund.Supervision.API项目的Program.cs文件中将下列代码从花括号内移出避免发布后没有Swagger
if (app.Environment.IsDevelopment())
{

}
app.UseSwagger();
app.UseSwaggerUI();

重新编译命令
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet build
执行命令
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet run --project ./Fund.Supervision.API/Fund.Supervision.API.csproj
发布程序
[root@DESKTOP-AKD562M Fund.Supervision.Manager]# dotnet publish
创建mkdir /home/ybjk/FSM这个目录下的文件
[root@DESKTOP-AKD562M publish]# pwd
/root/Fund.Supervision.Manager/Fund.Supervision.API/bin/Release/net8.0/publish
复制到/home/ybjk/FSM目录下
Chmod +x Fund.Supervision.API
[root@DESKTOP-AKD562M FSM]# vim appsettings.json
{
“Logging”: {
“LogLevel”: {
“Default”: “Information”,
“Microsoft.AspNetCore”: “Warning”
}
},
“AllowedHosts”: “*”,
“urls”:“http://0.0.0.0:5000”
}
执行./Fund.Supervision.API
在VSCode的扩展插件中,搜索并且安装Nuget Package Manager扩展插件
使用ctrl + shift + p
输入> nuget ,在下拉框中选择>Nuget Package Manager:Add Package
获取版本失败修改/root/.vscode-server/extensions/jmrog.vscode-nuget-package-manager-1.1.6/out/src/actions/add-methods/fetchPackageVersions.js
node_fetch_1.default(

${versionsUrl}${selectedPackageName}/index.json

.toLowerCase(),
安装C#和C# Dev Kit插件
发布后开放到局域网内appsettings.json
“Kestrel”: {
“Endpoints”: {
“Http”: {
“Url”: “http://0.0.0.0:5000”
}
}
},

标签: 经验分享

本文转载自: https://blog.csdn.net/qq_43557976/article/details/138006957
版权归原作者 码绒 所有, 如有侵权,请联系我们删除。

“VSCode开发ASP.NET WEBAPI环境”的评论:

还没有评论