一、在OpenEuler上搭建.NET运行环境
基于包管理器安装
- 添加Microsoft软件源:运行命令
sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm
,将Microsoft软件源添加到系统中,以便后续能够从该源安装.NET相关的包。 - 安装.NET运行时或SDK:若只需要运行.NET应用程序,可安装运行时。比如安装ASP.NET Core运行时,执行
sudo dnf install aspnetcore-runtime-8.0
。如果要进行.NET开发,则安装SDK,命令为sudo dnf install dotnet-sdk-8.0
。可根据实际需求替换版本号。 - 验证安装:安装完成后,可以通过
dotnet --info
命令来查看.NET的安装信息,确认是否安装成功。也可以使用dotnet --list-runtimes
查看已安装的运行时列表。
基于二进制文件安装
- 下载.NET二进制文件:从.NET官方网站下载适合OpenEuler系统的.NET二进制文件,例如
dotnet-sdk-8.0.203-linux-x64.tar.gz
。 - 解压文件:创建一个目录用于存放解压后的文件,如
mkdir -p $HOME/dotnet
,然后解压下载的文件到该目录,tar zxf dotnet-sdk-8.0.203-linux-x64.tar.gz -C $HOME/dotnet
。 - 配置环境变量:如果使用
bash
shell,将环境变量添加到~/.bashrc
文件,执行echo 'export DOTNET_ROOT=$HOME/dotnet' >> ~/.bashrc
和echo 'export PATH=$PATH:$HOME/dotnet' >> ~/.bashrc
。若是zsh
shell,则添加到~/.zshrc
文件。添加完后执行source ~/.bashrc
或source ~/.zshrc
使环境变量生效。 - 验证安装:使用
dotnet --info
或dotnet --list-runtimes
命令验证安装是否成功。
基于容器安装
- 拉取.NET容器镜像:可以从openeuler-docker-images等镜像仓库拉取.NET相关的容器镜像,例如
docker pull openeuler/dotnet-aspnet:8.0.3-oe2203sp3
。 - 运行容器:使用
docker run
命令来运行容器,如docker run -it --name dotnet-aspnet-container openeuler/dotnet-aspnet:8.0.3-oe2203sp3
,可以根据实际需求添加端口映射、挂载数据卷等参数。
二、在OpenEuler上部署基于.NET的应用程序
准备工作
- 安装.NET运行时环境:确保OpenEuler系统已安装适合应用程序版本的.NET运行时。如果应用程序是基于.NET Core 3.1开发的,需安装.NET Core 3.1运行时;若基于.NET 8开发,则安装.NET 8运行时。可通过包管理器或二进制文件的方式安装,具体操作参考上文。
- 获取应用程序文件:将基于.NET的应用程序文件(包括.dll文件、相关配置文件等)准备好,可以通过从代码仓库拉取、从本地复制或通过网络传输等方式获取到OpenEuler服务器上的指定目录,如
/opt/apps/myapp
。
配置应用程序
- 配置文件修改:根据实际部署环境,修改应用程序的配置文件,如
appsettings.json
。可能需要修改数据库连接字符串、日志路径、缓存配置等信息。比如将数据库连接字符串中的服务器地址修改为实际的数据库服务器地址。 - 环境变量设置:根据应用程序需求,设置相应的环境变量。如果应用程序需要读取某个环境变量来确定运行模式,可以使用
sudo vim /etc/profile
命令打开配置文件,在文件末尾添加export MY_APP_ENV=production
,保存并退出后,执行sudo source /etc/profile
使环境变量生效。
部署应用程序
- 使用dotnet命令运行:进入应用程序所在目录,使用
dotnet
命令运行应用程序。例如应用程序的主项目文件是MyApp.dll
,则执行dotnet MyApp.dll
。若应用程序有特定的启动参数,可在命令后添加,如dotnet MyApp.dll --server.urls=http://localhost:5000
。 - 作为服务运行:为了便于管理和监控,可以将应用程序配置为系统服务。创建一个.service文件,如
sudo vim /etc/systemd/system/myapp.service
,在文件中输入以下内容:
[Unit]
Description=My.NET Application
After=network.target
[Service]
WorkingDirectory=/opt/apps/myapp
ExecStart=/usr/bin/dotnet /opt/apps/myapp/MyApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=myapp
User=root
Group=root
[Install]
WantedBy=multi-user.target
保存并退出后,执行sudo systemctl enable myapp.service
将服务设置为开机自启,然后使用sudo systemctl start myapp.service
启动服务。
验证与监控
- 验证应用程序:在浏览器中输入应用程序的访问地址,如
http://localhost:5000
,查看应用程序是否正常运行,能否正确显示页面和执行相关功能。也可以使用curl
命令进行测试,如curl http://localhost:5000/api/values
,检查是否能获取到正确的响应数据。 - 监控应用程序:可以使用
systemctl status myapp.service
命令查看服务的运行状态和日志信息。还可以结合ELK(Elasticsearch、Logstash、Kibana)等日志管理工具来收集和分析应用程序的日志,以便及时发现和解决问题。