VSCode开发ASP.NET WEBAPI环境

码绒 2024-08-06 13:33:02 阅读 98

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

OracleLinux_7_9 Stopped 2

(11)确认处于Stopped状态,否则运行下列命令后重新执行(10)步骤

wsl --terminate OracleLinux_7_9

(12)执行下列命令将子系统备份至D盘

wsl --export OracleLinux_7_9 D:\OracleLinux_7_9.tar

(13)卸载C盘的OracleLinux_7_9系统,命令如下

wsl --unregister OracleLinux_7_9

(14)在D盘创建文件夹OracleLinux-Sys并将备份的系统(OracleLinux_7_9.tar)恢复到文件夹

wsl --import OracleLinux_7_9 D:\OracleLinux-Sys D:\OracleLinux_7_9.tar --version 2

(15)在Microsoft Store安装Windows Terminal

(16)关闭Windows PowerShell打开Windows Terminal,默认会打开Windows Terminal,可以再增加一个OracleLinux_7_9命令窗口,在命令窗口设置root用户密码,命令如下

passwd

[root@DESKTOP-AKD562M ~]# passwd

Changing password for user root.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

(17)从OracleLinux-R7-U9-Server-x86_64-dvd.iso光盘镜像中获得repodata和Packages文件夹复制到D盘

(18)在Windows Terminal的OracleLinux_7_9命令窗口进入/mnt下创建IOS文件夹,并进入IOS文件夹,执行命令

cp …/d/repodata ./ -r

cp …/d/Packages ./ -r

(19)在Windows Terminal的OracleLinux_7_9命令窗口执行如下命令

vim /etc/yum.repos.d/oracle-linux-ol7.repo

修改

[ol7_latest]

name=Oracle Linux

r

e

l

e

a

s

e

v

e

r

L

a

t

e

s

t

(

releasever Latest (

releaseverLatest(basearch)

baseurl=https://yum

o

c

i

r

e

g

i

o

n

.

ociregion.

ociregion.ocidomain/repo/OracleLinux/OL7/latest/$basearch/

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

gpgcheck=1

enabled=0

增加

[ol7_local]

name=Oracle Linux

r

e

l

e

a

s

e

v

e

r

L

o

c

a

l

(

releasever Local (

releaseverLocal(basearch)

baseurl=file:///mnt/IOS/

enabled=1

执行

yum clean all

yum makecache(报错改后缀名)

(20)在Windows Terminal的OracleLinux_7_9命令窗口进入/mnt下创建rpm文件夹,并进入rpm文件夹,执行命令

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.4.9-3.1.el7.x86_64.rpm

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-20.10.9-3.el7.x86_64.rpm

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-20.10.9-3.el7.x86_64.rpm

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-rootless-extras-20.10.9-3.el7.x86_64.rpm

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-scan-plugin-0.8.0-3.el7.x86_64.rpm

wget https://www.rpmfind.net/linux/centos/7.9.2009/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm

wget https://www.rpmfind.net/linux/centos/7.9.2009/extras/x86_64/Packages/fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm

wget https://www.rpmfind.net/linux/centos/7.9.2009/extras/x86_64/Packages/slirp4netns-0.4.3-4.el7_8.x86_64.rpm

wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/fuse3-libs-3.6.1-4.el7.x86_64.rpm

(21)在Windows Terminal的OracleLinux_7_9命令窗口进入/mnt/rpm目录下执行命令安装docker

yum localinstall -y *.rpm

(22)解决systemctl无效的操作,新增vim /etc/wsl.conf如下内容后

[boot]

systemd=true

(23)在Windows Terminal的Windows PowerShell执行命令

wsl --terminate OracleLinux_7_9

(24)在Windows Terminal新增OracleLinux_7_9命令窗口开启系统运行下列命令启动docker

systemctl enable docker

systemctl start docker

systemctl status docker

(25)拉取mysql8.3.0镜像

docker pull mysql:8.3.0

(26)增加mysql用户进入用户家目录

useradd mysql

passwd mysql

(27)创建数据持久化目录

mkdir -p /home/mysql/data

mkdir -p /home/mysql/logs

mkdir -p /home/mysql/conf

(28)编辑配置文件my.cnf,命令内容如下

vim /home/mysql/conf/my.cnf

#客户端设置

[client]

#客户端连接端口

port=3306

#客户端连接MySQLD通过mysql.sock文件进行通信(在同一台机器上)

socket=/var/run/mysqld/mysqld.sock

#设置MySQL客户端默认字符集

default-character-set=utf8mb4

#用mysql命令登陆数据库时的默认设置

[mysql]

设置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”

}

}

},



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。