介绍几个能进去的a站深圳网站运营

news/2025/9/28 3:00:46/文章来源:
介绍几个能进去的a站,深圳网站运营,wordpress只让文章标题,答题助手网站怎么做的一、前言在之前的文章#xff08;ASP.NET Core 实战#xff1a;Linux 小白的 .NET Core 部署之路#xff09;中#xff0c;我介绍了如何在 Linux 环境中安装 .NET Core SDK / .NET Core Runtime、Nginx、MySQL#xff0c;以及如何将我们的 ASP.NET Core MVC 程序部署到 Li… 一、前言  在之前的文章ASP.NET Core 实战Linux 小白的 .NET Core 部署之路中我介绍了如何在 Linux 环境中安装 .NET Core SDK / .NET Core Runtime、Nginx、MySQL以及如何将我们的 ASP.NET Core MVC 程序部署到 Linux 上同时使用 supervisor  守护程序守护我们的 .NET Core 程序。如果你有看过那篇文章并且和我一样是个 Linux 小白用户的话可能第一感觉就是把 .NET Core 项目部署在 IIS 上也挺好。  将 .NET Core 项目部署到 Linux 上如此复杂就没有简单的部署方式吗  你好有的Docker 了解一下~~~  PS这里的示例代码还是采用之前的毕业设计项目在这篇文章发布的时候我已经在程序的仓库中添加了对于 Docker 的支持你可以下载下来自己尝试一下毕竟实践出真知。   代码仓储https://github.com/Lanesra712/Danvic.PSU 二、Step by Step  1、安装 Docker Docker Compose  在代码交付的过程中偶尔会遇到这样的问题在本地测试是好的但是部署到测试环境、生产环境时就出这样那样的问题同时因为本地与测试环境、生产环境之间存在差异我们可能无法在本地复现这些问题那么有没有一种工具可以很好的解决这一问题呢随着历史的车轮不断前行容器技术诞生了。  Docker作为最近几年兴起的一种虚拟化容器技术他可以将我们的运行程序与操作系统做一个隔离例如这里我们需要运行 .NET Core 程序我们不再需要关心底层的操作系统是什么不需要在每台需要需要运行程序的机器上安装程序运行的各种依赖我们可以通过程序打包成镜像的方式将应用程序和该程序的依赖全部置于一个镜像文件中这时只要别的机器上有安装 Docker就可以通过我们打包的这个镜像来运行这个程序。  1.1、卸载 Docker  在安装 Docker 之前我们应该确定当前的机器上是否已经安装好了 Docker为了防止与现在安装的 Docker CE 发生冲突这里我们先卸载掉以前版本的 Docker如果你确定你的机器上并没有安装 Docker 的话此步可以跳过。  在 Linux 中可以使用 \ 加 Enter 在输入很长很长的语句时进行换行这里和后面的命令都是采用这样的方式。sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine  1.2、添加 yum 源  在安装 Docker CE 的方式上我是采用将 Docker CE 的源添加到 yum 源中之后我们就可以直接使用 yum install 安装 Docker CE整个的安装过程如下。# 安装工具包从而可以让我们在 yum 中添加别的仓储源sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2# 设置 docker ce 的稳定库地址sudo yum-config-manager \--add-repo \ https://download.docker.com/linux/centos/docker-ce.repo# 安装 docker cesudo yum install docker-ce docker-ce-cli containerd.io  当我们安装好 Docker 之后我们就可以使用 docker 命令验证我们是否在机器上成功安装了 Docker同时也可以使用 docker --version 命令查看我们安装的 Docker CE 版本。  1.3、设置开机自启  当 Docker 已经在我们的机器上安装完成后我们就可以将 Docker 设置成机器的自启服务这样如果出现服务器重启的情况下我们的 Docker 也可以随服务器的重启自动启动 Docker 服务。# 启动 Docker 服务并允许开机自启sudo systemctl start docker# 查看当前 dokcer 的运行情况sudo systemctl status docker  1.4、Hello World  就像我们在学习一门新的语言时运行的第一句代码几乎都是打印出 Hello World而在 Docker Hub 中也有这么一个镜像在无数的 Docker 教程中安装完 Docker 后第一件事就是拉取这个镜像文件“告诉” Docker我来了。  Docker Hub 是存放镜像的仓库里面包含了许多的镜像文件因为服务器在国外的原因下载的速度可能不理想像国内的阿里云、腾讯云也有提供对于 Docker 镜像的加速器服务你可以按需使用当然你也可以创建属于你的私有镜像仓库。  docker run 命令它会在我们的本地镜像库中先寻找这个镜像然后运行。如果在本地没有找到的话则会自动使用 docker pull 从 Docker Hub 中寻找能找到的话则会自动下载到本地然后运行找不到的话这条命令也就运行失败了。  1.5、安装 Docker Compose  在实际的项目开发中我们可能会有多个应用镜像例如在本篇文章的示例中为了在 Docker 中运行我们的程序我们需要三个镜像应用程序自身镜像、MySQL Server 镜像、以及 Nginx 镜像为了将我们的程序启动起来我们需要手敲各个容器的启动参数环境变量容器命名指定不同容器的链接参数等等一系列的操作又多又烦可能某一步操作失败后程序就无法正常运行。而当我们使用了 Docker Compose 之后我们就可以把这些命令一次性写在 docker-compose.yml 配置文件中以后每次启动我们的应用程序时只需要通过 docker compose 命令就可以自动帮我们完成这些操作。# 从 github 下载 docker compose 二进制文件sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose# 对下载的二进制文件应用可执行权限sudo chmod x /usr/local/bin/docker-compose# 查看 docker compose 版本docker-compose --version  2、构建程序镜像  当我们在服务器上安装好 docker 和 docker compose 之后就可以开始构建我们的程序镜像了。首先我们需要对我们的运行程序添加对于 Docker 的支持。你可以自己手动在 MVC 项目中添加 Dockerfile 文件或是通过右键添加 Docker 支持。  Dockerfile 就像一个执行的清单它告诉 Docker我们这个镜像在构建和运行时需要按照什么样的命令运行。打开 VS 为我们自动创建的 Dockerfile可以看到清晰的分成了四块的内容。  我们知道.NET Core 程序的运行需要依赖于 .NET Core RuntimeCoreCLR因此为了使我们的程序可以运行起来我们需要从 hub 中拉取 runtime 并在 此基础上构建我们的应用镜像。同时为了避免因为基础的环境的不同造成对程序的影响这里的 Runtime 需要同程序开发时的 .NET Core SDK 版本保持一致所以这里我使用的是 .NET Core 2.1 Runtime。  一个镜像中包含了应用程序及其所有的依赖与虚拟机不同的是容器中的每个镜像最终是共享了宿主机的操作系统资源容器作为用户空间中的独立进程运行在主机操作系统上。  PS:图片版权归属于微软的技术文档如有侵权请联系我删除源文件地址什么是 Docker  镜像可以看成一个个小型的“虚拟主机”这里我们在镜像中创建了一个 /app 路径作为我们程序在镜像中的工作目录同时将 80 端口暴露给 Docker从而可以使我们在镜像外面通过端口访问到当前镜像中的运行的程序。FROM microsoft/dotnet:2.1-aspnetcore-runtime AS baseWORKDIR /appEXPOSE 80EXPOSE 443  因为我们的应用是一个多层架构的单体应用最终的 MVC 项目依赖于解决方案中的各个类库以及我们从 Nuget 中下载的各种第三方组件在部署时需要将这些组件打包成 dll 引用。所以这里我们需要使用 .NET Core SDK 中包含的 .NET Core CLI 进行还原和构建。  就像在下面的代码中我们在镜像的内部创建了一个 /src 的路径将当前解决方案下的类库都复制到这个目录下之后通过 dotnet restore 命令还原我们的主程序所依赖的各个组件。当我们还原好依赖的组件后就可以使用 dotnet build 命令生成 Release版本的 dll 文件同时输出到之前创建的 /app 路径下。FROM microsoft/dotnet:2.1-sdk AS buildWORKDIR /srcCOPY [PSU.Site/PSU.Site.csproj, PSU.Site/]COPY [03_Logic/PSU.Domain/PSU.Domain.csproj, 03_Logic/PSU.Domain/]COPY [03_Logic/PSU.Repository/PSU.Repository.csproj, 03_Logic/PSU.Repository/]COPY [01_Entity/PSU.Entity/PSU.Entity.csproj, 01_Entity/PSU.Entity/]COPY [02_Infrastructure/PSU.Utility/PSU.Utility.csproj, 02_Infrastructure/PSU.Utility/]COPY [04_Rule/PSU.Model/PSU.Model.csproj, 04_Rule/PSU.Model/]COPY [02_Infrastructure/PSU.EFCore/PSU.EFCore.csproj, 02_Infrastructure/PSU.EFCore/]COPY [04_Rule/PSU.IService/PSU.IService.csproj, 04_Rule/PSU.IService/]COPY [Controllers.PSU/Controllers.PSU.csproj, Controllers.PSU/]RUN dotnet restore PSU.Site/PSU.Site.csprojCOPY . .WORKDIR /src/PSU.SiteRUN dotnet build PSU.Site.csproj -c Release -o /app  上面一步可以看成我们在使用 VS 生成 Release 版本的解决方案当生成没有出错之后我们就可以进行程序的发布。FROM build AS publishRUN dotnet publish PSU.Site.csproj -c Release -o /app  当已经生成发布文件之后按照我们平时部署在 Windows 上的过程这时就可以通过 IIS 部署运行了因此构建我们应用镜像的最后一步就是通过 dotnet 命令执行我们的程序。FROM base AS finalWORKDIR /appCOPY --frompublish /app .ENTRYPOINT [dotnet, PSU.Site.dll]  似乎到这一步构建程序镜像就结束了按照这样流程做的话就需要我们将整个的解决方案上传到服务器上了可是很多时候我们仅仅是把我们在本地发布好的项目上传到服务器上这与我们现在的构建流程具有很大的不同所以这里我们来修改 Dockerfile 文件从而符合我们的发布流程。  从上面分析 Dockerfile 的过程中不难看出在服务器上构建镜像的第二步、第三步就是我们现在在开发环境中手动完成的部分所以这里我们只需要对这部分进行删除即可修改后的 Dockerfile 如下。FROM microsoft/dotnet:2.1-aspnetcore-runtimeWORKDIR /appCOPY . /app EXPOSE 80ENTRYPOINT [dotnet,PSU.Site.dll]  在修改后的 Dockerfile 中可以看到我们删去了 build 和 release 的过程选择直接将我们 Dockerfile 路径下的文件拷贝到镜像中的 /app 路径下然后直接执行 dotnet 命令运行我们的程序。  为了确保 Dockerfile 与发布后的文件处于同一路径下这里我们需要使用 VS 修改 Dockerfile 的属性值确保会复制到输出的目录下这里选择如果较新则复制即可。  3、编写 docker-compose.yml  当我们构建好应用的镜像对于 Nginx 和 MySQL 我们完全可以从 hub 中拉取下来再执行一些配置即可。所以我们现在就可以编写 docker compose 文件来定义我们的应用镜像运行时需要包含的依赖以及每个镜像的启动顺序。  右键选中 MVC 项目添加一个 docker-compose.yml 文件同样的需要修改该文件的属性以便于该文件可以复制到输出目录下。注意这里的文件名和上文的 Dockerfile 都是特定的你不能做任何的修改。如果你的电脑上已经安装了 Docker for Windows你也可以使用 VS右键添加选中容器业务流程协调程序支持自动对 docker compose 进行配置。  在 yml 文件中我定义了三个镜像psu.site、docker.mysql、docker.nginx。三个镜像的定义中有许多相同的地方都设置了自动重启restart以及都处于同一个桥接网络下psu-net从而达到镜像间的通信。  docker.mysql 是 MySQL 的镜像我们通过环境变量 MYSQL_ROOT_PASSWORD 设置了 MySQL 的数据库连接密码并通过挂载卷的方式将镜像中的数据库文件持久化到我们的服务器本地路径中。同时将镜像的 3306 端口映射到服务器的 3306 端口上。  psu.site 则是我们的程序镜像采用位于 /usr/wwwroot/psu/ 路径下的 Dockerfile 文件进行构建的因为主程序的运行需要依赖于数据库所以这里采用 depends_on 属性使我们的应用镜像依赖于 docker.mysql 镜像即在 docker.mysql 启动后才会启动应用镜像。  docker.nginx 则是我们的 nginx 镜像这里将镜像中的 80 端口和 443 端口都映射到服务器 IP 上因为我们需要配置 Nginx 从而监听我们的程序所以通过挂载卷的方式将本地的 nginx.conf 配置文件用配置映射到镜像中。同时因为我们在构建应用镜像的 Dockerfile 文件时对外暴露了 80 端口所以这里就可以通过 links 属性进行监听如果构建时未暴露端口你可以在 docker compose 文件中通过 Expose 属性暴露镜像中的端口。  Nginx 的配置文件如下这里特别需要注意文件的格式缩进一点小错误都可能导致镜像无法正常运行。如果你和我一样将 nginx.conf 放到程序运行路径下的别忘了修改文件的属性。server { listen 80; location / { proxy_pass http://psu.site; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; }}  一个完整的 docker compose 文件如下包含了三个镜像以及一个桥接网络。version: 3.7services: docker.mysql: image: mysql ports: - 3306:3306 restart: always environment: - MYSQL_ROOT_PASSWORD123456sql volumes: - /usr/mysql:/var/lib/mysql networks: - psu-net psu.site: build: /usr/wwwroot/psu/ restart: always depends_on: - docker.mysql networks: - psu-net docker.nginx: image: nginx ports: - 80:80 - 443:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf links: - psu.site networks: - psu-netnetworks: psu-net: driver: bridge  这里需要注意所有有用到镜像间的通信的地方我们都需要使用镜像名进行指代例如上面的 nginx 的配置文件中我们需要将监听的地址改为镜像名称以及我们需要修改程序的数据库访问字符串的服务器地址修改后的数据库连接字符串如下所示。 ConnectionStrings: { SQLConnection: serverdocker.mysql;databasePSU.Site;userroot;password123456sql;port3306;persistsecurityinfoTrue; }  4、发布部署程序  当我们构建好 docker compose 文件后就可以把整个文件上传到服务器上进行构建 docker 镜像了。这里我将所有的部署文件放在服务器的 /usr/wwwroot/psu/ 路径下这时我们就可以通过 docker compose 命令进行镜像构建。  定位到部署文件在的位置我们可以直接使用下面的命令进行镜像的重新构建启动并链接一个服务相关的容器整个过程都会在后台运行如果你希望看到整个过程的话你可以去掉 -d 参数。# 执行镜像构建启动docker-compose up -d  当 up 命令执行完成后我们就可以通过 ps 命令查看正在运行的容器若有的容器并没有运行起来则可以使用 logs 查看容器的运行日志从而进行排错。# 查看所有正在运行的容器docker-compose ps# 显示容器运行日志docker-compose logs 三、总结    本章主要是介绍了如何通过 docker 容器完整的部署一个可实际使用的 .NET Core 的单体应用相比于之前通过 Linux 部署 .NET Core 应用可以看到整个步骤少了很多也简单很多。文中涉及到了一些 docker 的命令如果你之前并没有接触过 docker 的话可能需要你进一步的了解。当我们将程序打包成一个镜像之后你完全可以将镜像上传到私有镜像仓库中或是直接打包成镜像的压缩文件这样当需要切换部署环境时只需要获取到这个镜像之后即可快速完成部署相比之前极大的方便了我们的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比较好的网页设计网站wordpress 手机顶部悬浮

LabVIEW高精度微小电容测量 在电子工程和科研领域,精确测量微小电容值是一项有一定要求的任务,尤其在涉及到高精度和低成本时。设计了一种基于LabVIEW高精度微小电容测量系统,旨在提供一个既经济又高效的解决方案。 该系统的核心在于使用FD…

石狮市建设局网站普通小程序开发者工具

文章目录 基于C/C的UG二次开发流程1 环境搭建1.1 新建工程1.2 项目属性设置1.3 添加入口函数并生成dll文件1.4 执行程序1.5 ufsta入口1.5.1 创建程序部署目录结构1.5.2 创建菜单文件1.5.3 设置系统环境变量1.5.4 制作对话框1.5.5 创建代码1.5.6 部署和执行 基于C/C的UG二次开发…

成都市金堂县网站建设微信平板专用版ipad版

多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。 多继承时很容易产生命名冲突,即使我们很小心地将所有类…

如何自己做淘宝客推广网站外国人的做视频网站

一、pandas介绍 1、2008年Wes McKinney(韦斯麦金尼)开发出的库 2、专门用于数据分析的开源python库 3、以numpy为基础,借力numpy模块在计算方面性能高的优势 4、基于matplotlib能够简便的画图 5、独特的数据结构 6、也是三个单词组合而…

口碑好的专业网站建设天河网站建设推广

换肤其实也属于插件化专题的一个子话题,之所以单独拿出来,是因为它的处理方式比较特殊,相比插件化而言较简单一些。 系统内置的换肤功能支持 - Theme Android 系统中如果想修改应用的背景色,最简单的就是利用以下Theme相关的属性: 使用这些内置的属性可以实现一定程度上…

做软件赚钱的网站php中网站不同模板后台逻辑代码怎么管理

文章目录前言InterceptorChain保存所有的Interceptor创建四大对象都走ConfigurationInterceptorChain增强对象方法Plugin封装动态代理,让你使用Mybatis拦截器更简单Invocation,让我们能在拦截器中使用动态代理类中的invoke方法中的对象调用时序图小结前言…

基层建设 官方网站WordPress潮流媒体主题

在/ l o g s目录中查找更改时间在7日以前的文件并删除它们: $ find logs/ -type f -mtime 7 -exec rm -f {} \; 在/ l o g s目录中查找更改时间在7日以内的文件并删除它们: $ find logs/ -type f -mtime -7 -exec rm -f {} \; 然后加入的计划任务中每日执…

大连做网站不错的公司信息管理网站开发实验体会

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:横向菜单高级交互 主要内容:横向菜单左右拖动、选中效果 应用场景:app横向菜单、pc后台动态区域 案例展示: 演…

企业网站源码哪个最好暖色网站

IdentityServer4是什么?IdentityServer4是基于ASP.NET Core实现的认证和授权框架,是对OpenID Connect和OAuth 2.0协议的实现。OpenID Connect 和 OAuth2.0是什么OpenID Connect:OpenID Connect由OpenID基金会于2014年发布的一个开放标准, 是建立在OAuth …

沧州网站建设方案咨询万网主机建wordpress

作者:朱金灿 来源:http://blog.csdn.net/clever101/ 同事问我一个奇怪的问题:程序在他的机子上运行的好好的,但是其它人下载了源码之后可以编译通过,但是debug模式下调试运行到应用程序类中的InitInstance函数中的 i…

做网站收录的网站有哪些自己在线制作logo免费广告招牌

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统物流配送人员车辆调度信息管理难度大,容错率低…

网页设计公司建设网站小程序网站app定制开发

美国股市昨日先抑后扬终结两连跌,开启反弹,道指、标普、纳指纷纷翻红。10月3日晚,美东时间周四,美股集体低开,盘初受宏观经济数据不及预期影响,三大指数大幅跳水跌逾1%,道指跌超300点。此后美股…

给喻家山下的投稿

给喻家山下的投稿隔山隔海回头望,最远最近是家乡。——《天知河》【图1:归途】 常常是在傍晚悄然离开,在摇摇晃晃的睡梦里穿越中原大地。醒来望向窗外,自己已然回到久违的华北平原——朦胧的天色里,平坦,辽阔,一…

什么网站可以自己做名片logo设计文案范例

解决问题的过程:1)查看服务器CPU使用情况输入top会发现排在前面的都是oracle的进程,而且CPU占用率都是50以上。$toptop - 16:28:41 up 4 days, 22:35, 1 user, load average: 21.49, 22.14, 22.05Tasks: 299 total, 31 running, 268 sleeping, 0 st…

网站首页的head标签内湖南室内设计公司排名

这篇文章,主要介绍Vue3项目工程中如何使用axios网络请求库实现前后端数据通信【知识星球】。 目录 一、axios依赖 1.1、下载axios依赖 1.2、创建axios工具类

经典企业网站模板青岛网站公司

注:这是一篇没有技术含量的水文,主要是看有人下载下来,居然当成资源需要积分才能下载。我觉得不行,故提供原始下载地址供查阅使用。 链接: 上述图片所示网址:链接直达

上海网站设计厂家考试培训

文章目录 一、MySQL和Oracle1.1 基本差别1.2 使用区别 二、MySQL和PostgreSQL2.1 基本差别2.2 使用差别 本系列文章: MySQL(一)SQL语法、数据类型、常用函数、事务 MySQL(二)MySQL SQL练习题 MySQL(三&…

有哪些免费推广网站网站建设用到什么

参展企业介绍 山东润德生物科技有限公司成立于2014年10月17日,是一家围绕生物制品的研发、生产、营销、国际贸易、技术服务为核心业务的国家高新技术企业,近年来荣获国家制造业单项冠军示范企业、国家级绿色工厂、国家知识产权优势企业、国家工业产品绿…

网站设计网站维护dedecms 食品网站模板

目录 一、C语言的语句有哪些 1.1 空语句 1.2 表达式语句 1.3 函数调用语句 1.4 复合语句 1.5 控制语句 二、分支语句(两种) 1.1 if语句 1.1.1 普通分支语句(if、if_else) 1.1.2 嵌套if语句 1.1.3 else嵌套if两种写法的比较 1.1.4 else悬空问题 1.1.…

找做企业网站周口市城乡建设局网站

函数进阶 函数进阶1.参数的补充1.1 参数内存地址相关【面试题】1.2 函数的返回值是内存地址1.3 参数的默认值【面试题】1.4 动态参数 2. 函数和函数名2.1 函数做元素2.2 函数名赋值2.3 函数名做参数和返回值 3.返回值和print4. 作用域4.1 函数为作用域4.2 全局和局部4.3 global…