前言:本人为Linux新手,原本只想体验一下Linux + NET Core,上网搜了很多部署教程,一步一步照做下来,大多都没有成功,不是报错,就是缺文件,放弃了,不知道是教程不对,还是自己的服务器有问题。最近有鼓起勇气重新钻研了一下,耐心比较并试验了网上的各种版本教程,最后居然成功了。整理了以下最新配置教程,希望能给想入门Linux的小白提供一点帮助。
准备工作:下载并安装Xshell(用来执Linux行命令行) 和 XFTP (用来上传下载文件)
开始:打开Xshell,登陆服务器,按照以下说明执行命令。
1、.net core 2.1安装(添加产品秘钥与yum源)
添加yum源:sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
开始安装:sudo yum install dotnet-sdk-2.1
一路y下去就可以了
查看版本号:dotnet --version
2、安装nginx
第一步 - 添加Nginx存储库
要添加CentOS 7 EPEL仓库,请打开终端并使用以下命令:sudo yum install epel-release
第二步 - 安装Nginx
现在Nginx存储库已经安装在您的服务器上,使用以下yum命令安装Nginx:sudo yum install nginx
在对提示回答yes后,Nginx将在服务器上完成安装。
第三步 - 启动Nginx
如果想在系统启动时启用Nginx。请输入以下命令:sudo systemctl enable nginx
Nginx不会自行启动。要运行Nginx,请输入:sudo systemctl start nginx
如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
如果在执行上述命令后,防火墙提示未打开,运行以下命令查看firewall 状态, 并启动防火墙:
systemctl status firewalld //查看防火墙状态
systemctl start firewalld //启动防火墙
第四步 - 在浏览器地址栏输入你服务器的IP地址, 如果出现下图表示Nginx安装配置成功;
如果无法访问, 请查看firewall 是否开放80端口:
firewall-cmd --zone= public --add-port= 3306 /tcp --permanent //开放80端口
systemctl restart firewalld.service //重启防火墙
3、环境配置
关闭SELINUX: vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
注意:如果想保留SELINUX=enforcing,就得把nginx添加到SELINUX白名单,在此不再赘述。
4、nginx 代理配置
用vim编辑器打开nginx默认配置文件: vim /etc/nginx/nginx.conf //打开文件编辑模式, 输入i 进行编辑 完成后 按ESC键输入:wq 回车 退出编辑模式
首先,把Nginx的默认配置文件 /etc/nginx/nginx.conf里 80 端口转发配置 server 节点用 # 符注释掉。使用命令vi 或将 nginx.conf 文件下载(使用xftp或其他ftp工具都行)到本地修改完成后在上传(建议);
然后我们重新创建一个自定义的Nginx配置文件用来代理Core 程序, 我创建名称为api.conf(你可以自定义文件名);配置文件内容如下:
server { listen 80; #server_name xxxxx.com; #域名 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_pass http: 后的url为你在core 启动项配置的路径(默认localhost:5000)
将创建好的自定义配置文件上传到 /etc/nginx/conf.d目录下
如下配置好后,执行指令,重新载入nginx配置
nginx -t
nginx -s reload
此时,cd命令切换到你的程序目录,然后在使用dotnet命令执行你的网站入口dll,就可以启动网站了,在浏览器使用服务器IP地址即可访问到你的网站首页。
前提是,你得把你的网站程序用XFTP上传到服务器上,例如上传到 /web目录下
5.配置守护进程Supervisor, 让我们的程序能365天24小时不间断运行
通过上面的操作, 我们已经能正常将.NET Core程序发布到CentOS下来, 但是发布过程中我们也发现了问题, 就是.NET Core不能自动的运行, 一旦我们的命令行工具关掉, 发布的程序就不能访问了;
是不是能安装一个类似于Windows Service一样的服务, 能实时监控程序状态,异常退出时能自动重启。经过各种百度我找到了Supervisor。
Supervisor 是用Python开发的Linux/Unix系统下的一个进程管理工具。它可以使进程(类似Windows Service)脱离终端,变为后台守护进程(daemon)。能实时监控进程状态,异常退出时能自动重启。详细文档请查看官网。
5.1安装Supervisor
yum install python-setuptools
easy_install supervisor
5.2配置Supervisor
①运行supervisord 服务的时候,需要指定 Supervisor 配置文件,所以,先通过如下命令创建目录,以便让 supervisor 成功加载默认配置:
mkdir /etc/supervisor
②目录创建成功后, 通过 echo_supervisord_conf 程序(用来生成初始配置文件,文件名可以自定义)来初始化一个配置文件:
echo_supervisord_conf > /etc/supervisor/supervisord.conf
③通过vim命令修改创建好的supervisord.conf配置信息:
vi /etc/supervisor/supervisord.conf
④最下边找到如下文本片段:
;[include]
;files = relative/directory/*.ini
修改为:[include]
files = /etc/supervisor/conf.d/*.ini
该操作的目的是我们创建一个supervisor 进程配置文件加载目录。让supervisor自动加载该目录下 .ini 后缀的文件作为服务配置
5.3为我们部署的.NET Core添加进程配置文件
①创建配置文件AbpMPACore.ini(文件名自定义)
[program:AbpMPACore] ;自定义进程名称, 根据自己喜好命名 command=dotnet AbpMPA.Web.Mvc.dll ;程序启动命令 使用dotnet 命令 directory=/publish ;命令执行的目录 你.NET Core 程序存放目录 autostart=true ;在Supervisord启动时,程序是否启动 autorestart=true ;程序退出后自动重启 startretries=5 ;启动失败自动重试次数,默认是3 startsecs=1 ;自动重启间隔 user=admin ;设置启动进程的用户,默认是root priority=999 ;进程启动优先级,默认999,值小的优先启动 stderr_logfile=/var/log/AbpMPA.err.log ;标准错误日志 路径可以自定义 stdout_logfile=/var/log/AbpMPA.out.log ;标准输出日志 路径可以自定义 environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量 stopsignal=INT ;请求停止时用来杀死程序的信号
②在/etc/supervisor/目录下创建一个文件夹conf.d: mkdir /etc/supervisor/conf.d
将刚创建的配置文件AbpMPACore.ini移到conf.d文件夹下
5.4 启动 Supervisor 服务supervisord -c /etc/supervisor/supervisord.conf
这个时候, 我们已经不需要使用dotnet命令运行程序, 同样可以访问我们部署的.NET Core程序了6.5配置Supervisor开机启动①进入/usr/lib/systemd/system/目录,并创建supervisord.service文件(或者在本地写好了再通过ftp工具传输到指定目录下)
vi /usr/lib/systemd/system/supervisord.service
[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/bin/supervisorctl $OPTIONS reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
②设置开机启动
systemctl enable supervisord.service
systemctl daemon-reload
③重启,测试是否可以开机自启
快手怎样添加拼多多商品链接?
快手绑定设置多多进宝PID教程
快手小店怎么设置多多进宝PID
多多进宝pid在哪里找 多多客推广位PID在什么地方管理
快手小店添加拼多多商品链接提示商品信息有误
多多客是什么平台
多多团长中的初级团长,中级团长和高级团长是怎么回事,什么意思?有什么要求?
为什么我自己拼多多店铺的商品添加到快手提示“商品信息有误”
快手怎么添加拼多多商品卖货
拼多多招商团长id 寻找多多进宝招商团长
多多团长升级方法,多多团长计划 考核办法介绍
注册了多多团长APP,PID在哪里看?
多多进宝的多多客招商团长是什么
快手添加拼多多商品要审核多长时间?多久呢
拼多多商家如何在快手上推广自己的产品
拼多多有服务市场吗,在哪里?
快手小店添加拼多多商品问题解答大全
如何成为多多客
?为什么我的快手没有多多进宝PID
淘宝卖家服务市场入驻申请 MRD PRD文档模板