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