国产化之路-安装WEB服务器

专题目录

国产化之路-统信UOS操做系统安装
国产化之路-国产操做系统安装.net core 3.1 sdk
国产化之路-安装WEB服务器
国产化之路-安装达梦DM8数据库
国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操做php

前言

国产的操做系统通常都是基于Linux开发的,只是不一样的操做系统使用的Linux版本有所差别,好比麒麟V10的操做系统是基于Ubantu16.4的,统信UOS ARM64专业版是基于Debian8.3的,固然还有服务器版本的,无论如何,对于咱们开发者或维护人员来说,站点的发布与维护管理最好能经过一个统一的集成环境,点击几下鼠标或作一些简单的配置便可完成,就像是Windows的IIS那样方便,那么在Linux的环境下是否有这样相似的环境呢?答案是确定的,在国内用的比较普遍的是宝塔面板或相似宝塔面板的站点式的管理应用。宝塔面板是一款服务器管理软件,除了支持Linux系统也支持windows,经过它咱们能够很轻松地管理服务器,提高运维效率,好比建立管理网站、FTP、数据库、拥有可视化文件管理器、可视化软件管理器、可视化CPU、内存、流量监控图表、计划任务等功能。能够访问官网了解更详细的介绍。
这里咱们在统信UOS ARM64专业版操做系统下对宝塔面板进行安装,原先在麒麟V10操做系统环境下一直安装不成功,坑比较多,无奈之下改为了统信操做系统,对于麒麟V10操做系统环境下的安装计划等麒麟官网维护完成,官方的安装源可用后再做尝试。html

安装宝塔

咱们这里是参考宝塔官方论坛最新版本的安装方法,下面安装要求是直接引用论坛里边的:java

安装要求:
内存:512M以上,推荐768M以上(纯面板约占系统60M内存)node

硬盘:300M以上可用硬盘空间(纯面板约占20M磁盘空间)
系统:CentOS 7.1+ (Ubuntu16.04+.、Debian9.0+),确保是干净的操做系统,没有安装过其它环境带的Apache/Nginx/php/MySQL/pgsql/gitlab/java(已有环境不可安装)
架构:x86_64(主流服务器均是此架构),ARM不完整兼容(面板环境安装慢,部分软件可能安装不上)linux

宝塔Linux面板7.4.5版本是基于Centos开发的,为了最好的兼容性,请优先考虑使用Centos8.x系统
系统兼容性顺序:
Centos8.x > Centos7.x > Ubuntu18.04 > Debian10 > Ubuntu 20.04 > 其它系统
提示:Centos官方已宣布在2020年中止对Centos6的维护更新,各大软件开发商也逐渐中止对Centos6的兼容,新服务器不建议使用Centos6nginx

我这边的架构属于ARM64,文档上提示“ARM不完整兼容”,内心仍是有点担心,统信的UOS是基于Debian8.3版本根据安装文档指引使用Debian安装命令git

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh


上面是询问将宝塔面板安装到www目录,直接打入“y”便可

屏幕上的文字不断翻滚,通过漫长的等待(大概10分钟左右)顺利安装成功了,由于以前的安装提示本来仍是有些担忧的。这里须要记下面板的访问地址和随机分配的帐号密码,否则后面就抓瞎了。在浏览器上输入面板地址,出现了宝塔登陆界面

在登陆界面上直接输入随机分配的帐号和密码进行登陆

第一次进入会出现用户许可协议,直接勾选赞成,点击“进入面板”。

这里会叫你选择安装软件套件,有两种方案选择:一个是LNMP方式、另外一个是LAMP方式,感受和我们关系都不大,由于下一步要安装Nginx因此选择了“LNMP”,勾选了Nginx1.18和FTP,其余的暂时也没啥用(这些软件后面若有须要也能够安装),勾选完后安装方式默认选“急速安装”点击“一键安装”按钮,接着会弹出一个安装消息窗口,里边又开始飞快地滚动文字了。

趁着安装软件的间隙咱们能够关闭这个消息窗口来熟悉一下宝塔面板的各项菜单(不用担忧安装会停止,在后台会继续安装)。首页上显示负载、CPU使用率、内存使用率、硬盘使用状况等机器的当前状态,仍是很直观方便的。

系统安全面板显示当前开放的端口,还能够对端口进行开关设置很是实用。

其中让我比较在乎的是网站和文件这两个管理菜单,经过点击网站菜单能够进入网站管理页面(当前在安装Nginx暂时还进不去),里边提供了站点的建立和配置,很是方便。点击文件菜单进入文件管理页面,经过文件管理页面咱们能够查看主机上的全部目录和文件,且能够建立、删除、修改目录、上传文件,这样就很方便了,咱们能够在本身的开发机上编译项目代码,而后经过宝塔的文件上传功能把编译打包好的项目放到指定的目录中去,接着再经过网站管理功能再配置一番,这样我们基本的站点管理功能就有了,想一想仍是美滋滋的。

在安装完成时仍是比较在乎这个帐号和密码的,随机生成的不太好记,好在这个面板设置里边能够修改帐号和密码,这个还比较贴心,另外宝塔默认访问的端口号是8888,为了安全起见建议修改一下,除了这些之外还有其余的一些可修改项,能够看一下。

而后,就是软件商店了,里边着实有很多应用,有收费的也有免费的,感受免费的也已经够用了,当前的要求也不是很高,蜻蜓点水地稍微看一把。

其它的就不详细介绍了,官网上已经有详细的操做说明,根据本身的须要摸索吧!点击左上角IP地址边上的数字,能够直接弹出安装消息窗口,当前安装已经完成,就是安装Nginx花了很多的时间,将近有20分钟,接下来我们试着发布一个站点试试。
sql

发布站点

(1)点击“网站”菜单进入网站管理页面,而后点击“添加站点”按钮,弹出添加网站的配置窗口,以下图所示:

这里注意一下,域名是必输项,若是没有域名暂时随便输一个,但格式要正确。网站根目录默认是“/www/wwwroot/域名”,也能够本身修改,其余的随意,点击“递交”按钮就完成站点建立。
(2)在开发机中准备好待发布的网站项目,将项目先发布到本地文件系统。
(3)回到宝塔管理面板,点击左侧“文件”菜单进入文件管理页面,点击目录列表依次从目录www/wwwroot中找到咱们新建AppDemo站点目录,并点击进入,以下截图所示:

站点建立完成会添加默认的40四、index页面,不须要的话能够在文件管理页面中把这些文件删除,而后点击“上传”按钮,弹出上传文件窗口:

点击窗口左上角上传按钮(能够选择上传文件也能够上传目录,咱们选择上传文件)将咱们已准备好的本地发布版本的全部文件全选并拖拽到窗口中,而后点击“开始上传”。

(4)上传成功后点击宝塔面板中的“网站”菜单,在网站管理页面中选择咱们建立的站点,点击“设置”连接,对咱们的站点进行设置。

在站点修改窗口中选择“网站目录”,咱们将运行目录选择为“/wwwroot”,咱们发布的网站样式等都在这个子目录里边,若是不指定的话,显示会没有样式。
继续点击站点修改窗口左侧的“配置文件”项,会列出本站点的Nginx配置项,默认状况下使用的是80端口,server_name是咱们以前建立站点时随便输入的域名,没有域名在这里咱们把域名改为IP地址:

而后咱们要作一个反向代理的配置,在配置文件中加入以下配置项:shell

# AppDemo
location / {
	proxy_pass         http://localhost:5000;
	proxy_http_version 1.1;
	proxy_set_header   Upgrade $http_upgrade;
	proxy_set_header   Connection keep-alive;
	proxy_set_header   Host $host;
	proxy_cache_bypass $http_upgrade;
	proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header   X-Forwarded-Proto $scheme;
}


配置完成后,点击保存按钮,而后要记得重启一下Nginx,在宝塔面板中点击软件商店,在软件商店页面中点击“已安装”按钮,在已安装的软件列表中找到Nginx,点击“设置”,在弹出来的Nginx管理窗口中,点击“重启”按钮便可。

为了方便查找,能够在已安装的软件列表中将Nginx设置为首页显示,而后在首页上就能够找到它。数据库

(5)经过终端运行已发布的网站(MvcExample是我这里已编译的网站dll)

dotnet MvcExample.dll

而后打开浏览器访问网站看看是否成功:

关于守护进程

咱们的站点已发布成功,但这里有一个问题,咱们在终端执行命令dotnet xxx.dll 运行 .NET Core 应用程序时,若是咱们关闭终端结束会话,那么咱们的程序也会结束运行,咱们关闭终端再来浏览发布的站点看看:

如上图,页面显示“502 Bad Gateway”,这个不是咱们想看到的,那如何才能当咱们关闭终端结束会话后,站点仍然运行呢?这里就须要引进守护进程。
守护进程,英文名:“daemon",它是一个在后台运行而且不受任何终端控制的进程,不会随着会话结束而退出。咱们使用Linux的命令能够实现守护进程,可是比较麻烦,即然我们安装了宝塔面板,咱们仍是但愿能够经过面板来配置就能够实现这个功能。在宝塔的软件商店中找到了两款守护进程的工具:supervisor和pm2。

supervisor

supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。能够很方便的监听、启动、中止、重启一个或多个进程。用 supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的作到进程自动恢复的功能,再也不须要本身写shell脚原本控制。

以上是摘自网络上对supervisor的介绍,咱们能够经过宝塔面板中的软件商店找到它并安装:

安装完成后,在已安装的软件列表中找到supervisor管理器,点击设置会弹出Supervisor管理器窗口

而后点击右上角的“添加守护进程”

启动用户能够选择默认用户,运行目录选择你发布的站点目录,我这里是“/www/wwwroot/AppDemo”,启动命令“dotnet xxx.dll”,xxx.dll是站点名称,若是没法识别dotnet命令,则给出命令的完整路径,如:“/usr/local/dotnet/dotnet xxx.dll”,进程数就默认1,点击“肯定”按钮完成守护进程的添加。

咱们再次打开浏览器,站点又正常运行了,当前已经再也不须要使用终端去运行“dotnet xxx.dll”了。

PM2

PM2(Process Manager 2 )是具备内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。 它容许您永久保持应用程序活跃,无需停机便可从新加载它们,并促进常见的Devops任务。

以上介绍来自网络,pm2虽然是node进程管理工具,但做为进程管理工具.net core仍然适用,PM2须要node环境,但咱们直接经过宝塔面板来安装能够省不少事情,在软件商店中找到他,直接点击安装便可

安装过程再也不描述,完成后点击“设置”弹出PM2管理器:

经过终端命令方式来启动PM2的命令以下:

pm2 start "dotnet xxx.dll" --name xxx

对照命令,咱们大概能够猜到PM2管理器面板如何添加进程,项目所在目录直接选择发布站点的目录便可,启动文件名称应该就是命令:“dotnet xxx.dll”了,项目名称对应的是name名称,能够根据我的喜爱起一个,而后点击“添加”按钮,但这里出现了一个问题,点击“添加”按钮一直提示"指定文件不存在",无奈最后经过终端运行pm2命令来添加了一个进程,再回到宝塔面板的PM2管理器窗口中查看,却是新增了一条记录,正是经过终端添加的,但惋惜的是在管理器上没法查看具体配置,而后经过管理器去启动和暂停这个进程都是没问题的,后来通过分析,经过宝塔面板运行PM2时是以“www”用户的身份去运行的,估计这个用户有点特殊,经过“www”用户没法识别“dotnet”命令所形成的,暂时做罢。

supervisor与PM2比较

这两个工具从网上了解使用至关广泛,查了一下资料,supervisor适用于开发环境,它会监视你对代码的改动,自动启动,比较方便;PM2内建负载均衡(使用 Node cluster 集群模块),0 秒停机重载,维护升级时不须要停机,稳定,适合于正式运行环境;从宝塔面板控制的便捷性来看supervisor配置起来要方便不少,能够指定运行用户,而PM2经过管理面板未能配置起来,只能经过后台终端来添加,但添加完成后能够用面板来管理。选用哪一款见仁见智吧!咱们也能够结合使用,在开发测试时使用supervisor,正式发布使用PM2。

小结

在麒麟v10操做系统下安装WEB服务器耗费了大量的时间,最新版本的宝塔没法安装,Nginx安装不成功,正好麒麟官方网站又在维护,没法访问官方的源,一路曲折。当前安装的是基于国产的另外一个操做系统:统信UOS ARM64专业版,其基于Debian8.3版本,安装还算顺利,但麒麟v10操做系统下的WEB服务器仍是得配置,坑仍是得填上没法绕过,计划等官网维护完成后再试试。
当前在统信UOS下的WEB服务器已配置完成,咱们能够经过以下步骤来发布我们的站点:
一、经过宝塔面板的网站管理建立站点。
二、将待发布的网站项目发布到本地文件系统。
三、经过宝塔面板的文件管理上传发布版本到指定站点目录。
四、配置站点设置反向代理。
五、使用进程守护工具添加运行 .NET Core 应用程序(测试运行环境可使用supervisor,正式发布环境使用PM2,使用PM2时,经过终端运行来添加进程,后面管理能够直接经过宝塔面板来操做)。

参考资料

宝塔官网地址:https://www.bt.cn/
宝塔安装参考说明:https://www.bt.cn/bbs/thread-19376-1-1.html
官方发布说明文档:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.1
supervisor网址:https://pypi.org/project/supervisor/
PM2官网:https://pm2.keymetrics.io/
PM2守护进程介绍:http://www.javashuo.com/article/p-kpwpvdwe-eg.html

相关文章
相关标签/搜索