作为一个刚接触linux的新手,在安装环境的时候,折腾了不少时间,写下一篇总结帖,帮助下新人吧~

做完后再回来看步骤,也很简单,也就以下几步:

1.安装.Net Core环境

2.安装nginx实现端口转发

3.设置nginx开机启动

4.设置防火墙(有些云服务器可省略)

5.配置SELinux的白名单(有些云服务器可省略)

6.上传网站

7.安装守护进程(如果是本地虚拟机,最好手动启动网站,易于查找错误)

8.设置守护进程开机启动(如果是本地虚拟机,最好手动启动网站,易于查找错误)

注意:1.文中的“GroupShareSite”名字可自定义,根据项目名称来即可。2.【执行】表示通过任意方式(例如ftp上传文件等),实现描述即可。

1.安装.Net Core环境

【命令】sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

【↑注释】添加yum源

【命令】sudo yum update

【↑注释】更新已安装的所有yum包

【命令】sudo yum install dotnet-sdk-2.1

【↑注释】安装.Net Core2.1的SDK

2.安装Nginx实现端口转发

【命令】curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

【↑注释】下载指定的nginx文件

【命令】rpm -ivh nginx.rpm

【↑注释】安装rpm包

【命令】yum install nginx -y

【↑注释】安装nginx

【执行】修改 /etc/nginx/conf.d/default.conf 文件,以下为修改后的全内容:

server {
listen 80;
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;
}
}

【命令】systemctl start nginx

【↑注释】启动nginx

3.设置Nginx开机启动

【命令】systemctl enable nginx

【↑注释】设置开机启动

4.设置防火墙

【命令】systemctl start firewalld.service

【↑注释】启动防火墙

【命令】systemctl enable firewalld.service

【↑注释】设置开机启动防火墙

【命令】firewall-cmd --state

【↑注释】查看防火墙当前状态(可省略)

【命令】firewall-cmd --zone=public --add-port=80/tcp --permanent

【↑注释】配置80端口允许访问

【命令】systemctl restart firewalld

【↑注释】重启防火墙

5.配置SeLinux的白名单

【命令】yum install policycoreutils-python

【↑注释】安装policycoreutils-python

【命令】sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

【↑注释】上面的我也不知道...百度没找到,求解

【命令】sudo semodule -i mynginx.pp

【↑注释】上面的我也不知道...百度没找到,求解

6.上传网站到服务器

我是用FileZillaPortable上传的,设置界面如下:

我的站点目录是/home/GroupShareSite

网站上传后,通过cd进入站点目录。这一步非常非常重要!如果没有cd进入目录就执行下面的命令启动站点,会导致配置文件无法读取,网站资源获取失败等等不可预期的问题。

执行以下命令:

【命令】dotnet GroupShareSite.dll

【↑注释】运行网站,因为我的项目名是GroupShareSite,所以这个名称需要根据自己的实际情况来修改

7.安装守护进程

【命令】yum install python-setuptools -y

【↑注释】安装python

【命令】easy_install supervisor

【↑注释】安装守护进程

【命令】mkdir /etc/supervisor

【↑注释】创建配置文件目录

【命令】echo_supervisord_conf > /etc/supervisor/supervisord.conf

【↑注释】这个不知道什么意思,希望大家能告诉我...

【执行】修改 /etc/supervisor/supervisord.conf 文件中的内容:

将里面的最后两行:        
;[include]
;files = relative/directory/*.ini
改为
[include]
files = conf.d/*.conf

【执行】创建文件/etc/supervisor/conf.d/GroupShareSite.conf,内容如下:

[program:GroupShareSite]
command=dotnet GroupShareSite.dll ; 运行程序的命令
directory=/home/GroupShareSite/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/GroupShareSite.err.log ; 错误日志文件
stdout_logfile=/var/log/GroupShareSite.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT

【↑注意】要修改GroupShareSite为自己的东西

【命令】supervisord -c /etc/supervisor/supervisord.conf

【↑注释】运行守护程序

8.设置守护进程开机启动

【执行】新建文件/usr/lib/systemd/system/supervisord.service,内容如下:

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target

【命令】systemctl enable supervisord

【↑注释】设置开机启动

【命令】systemctl is-enabled supervisord

【↑注释】判断是否成功设置开机启动

结束

有几个地方需要注意:

1.文中所有涉及到“GroupShareSite”的地方,都需要根据实际进行修改

2.SeLinux一定要设置,否则网站一般都无法访问(阿里云轻量应用服务器不需要设置,好像它没有限制)

3.如果手动启动站点,一定要通过cd进入站点根目录,然后再运行,否则,1)运行的网站会找不到配置文件。2)运行后,站点资源无法找到。

最后,放一下网站地址,就当做个宣传吧:

http://www.star110.com

还在开发过程中...

在CentOS中部署.Net Core2.1网站的更多相关文章

  1. 在centos中部署jenkins

    在centos中部署jenkins,需要的环境:安装jdk,Apache-tomcat 这两步我前面文章里已写,再次忽略 到官网下载最新的jenkins 我这里的是  jenkins.war 把该文件 ...

  2. Centos中部署NetCore项目(二)

    前言 在centos中部署程序,一般都不会是使用控制台进程直接启动,或者是后台运行.而是一些守护进程管理工具进行管理,例如supervisor. 部署Web相关程序,使用nginx是比较普遍的, 安装 ...

  3. .NetCore中的程序通过Docker在CentOS中部署

    基础说明 安装Docker过程就略过了 创建一个Asp.Net Core程序 启用Docker支持,会生成Dockerfile文件,接下来看下这个文件,当然不同的版本生成的具体可能不一致 FROM m ...

  4. Centos中部署NetCore项目(一)

    前言 本文是基于centos8,dotnetcore3.1. (为了服务器安全使用,程序部署最好不要直接root账号进行操作.) 如果使用sudo命令时候,提示用户不在sudoers文件中的解决方法. ...

  5. 在Centos中部署redis运行状态图形化监控工具 — RedisLive

    写在前面 前两天看到张善友老师的一篇文章<先定个小目标, 使用C# 开发的千万级应用>,里面给出了一张腾讯OA基础服务中redis运行情况的一张监控图,然后想到自己的项目中前不久也上了re ...

  6. Unbuntu和Centos中部署同时多版本PHP的详细过程

        镜像制作:Unbuntu14 部署LAMP过程 1.Azure经典版中创建源Ubuntu14,并使用Xshell连接,并切换到root帐户下. 2.安装php5.4,新建/var/local/ ...

  7. 在 Windows Server 2008 中部署带 SignalR 的网站出错

    一直是在 Windows Server 2008 R2 或更高版本的 Windows 中进行部署,没有遇到过此现象,不知道是不是因为系统的原因. 现象为从浏览器访问配置 signalr 的地址返回 4 ...

  8. 在 kubernetes 集群中部署一套 web 网站(网页内容不限)

    环境准备 一台部署节点,一台master节点,还有两台节点node1,node2 完好的k8s集群环境 思路一: 在node1和node2节点上通过宿主机与容器之间目录映射和端口映射上线静态网站(或动 ...

  9. 在 CentOS 中部署 KMS 服务器(vlmcsd)

    准备 vlmcsd 下载 vlmcsd 本文使用的 vlmcsd 版本为 svn1111,支持的产品: Windows Vista – 10Windows Server 2008 - 2016Offi ...

随机推荐

  1. 自我理解node.js相比java的优势

    今天学习node.js,相比于之前学习过的java,node.js有一些优越之处.原因是它是一个基于Chrome v8引擎建立的JavaScript运行平台. (1)创建服务器:自行服务器来监听客户端 ...

  2. HARD FAULT

    程序陷在while(1)里面 解决办法 定点到发生死循环的位置 打开stack windows逐层查找发生死循环之前运行过的函数 导致原因 1 内存溢出或者访问越界,通常为数组或结构体访问越界.这个需 ...

  3. 架构(一)JDK安装

    一 遇到的问题 问题1:安装jdk的时候,jdk解压失败? 我是通过wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b84 ...

  4. docker发布netcore网站-零散记录

    安装docker 安装Linux,使用云服务器或者虚拟机 参考:http://www.cnblogs.com/wangjieguang/p/hyper-v-ubuntu.html 系统更新 sudo ...

  5. KVM虚拟化概述与安装

    虚拟化是构建云计算基础架构不可或缺的关键技术之一,云计算的云端系统,其实质上就是一个大型的KVM分布式系统,虚拟化通过在一个物理平台上虚拟出更多的虚拟平台,而其中的每一个虚拟平台则可以作为独立的终端加 ...

  6. Javascript高级编程学习笔记(65)—— 事件(9)复合事件

    复合事件 复合事件是 DOM3 中新增的一类事件,用于处理 IME 的输入序列 IME(输入法编辑器)通常用于输入物理键盘上找不到的字符,而这种输入方式通常需要同时按住多个键,但最终只输入一个字符 复 ...

  7. java,让debug出色

    虽然我们不喜欢bug,但是bug永远都存在.虽然我们牛逼,但是仍然有不知道的东西,解决不了的问题.so,还得借助工具,让咱效率提起来扛扛的.解决的问题如是:由于某种原因,其他系统发送的mq,我这边说没 ...

  8. redis入门知识汇总

    1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...

  9. 向github提交代码不用输入帐号密码

    解决方案:方案一: 在你的用户目录下新建一个文本文件.git-credentials Windows:C:/Users/username Mac OS X: /Users/username Linux ...

  10. swiper在vue项目中的循环轮播bug以及点击事件

    一般的,如果是静态数据(本地数据),可以直接在mounted生命周期中初始化,循环轮播.自动播放都比较正常. 但是,如果是动态从后台获取数据的话,采用上述方法会发现,轮播图无法自动播放,也无法拖拽. ...