一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记:

阅读目录

  • 环境说明
  • 安装CentOS7
  • 安装.NET Core SDK for CentOS7
  • 搭建ftp服务器
  • 安装mysql
  • 部署ASP.NET Core应用程序
  • 配置Nginx
  • 配置守护服务(Supervisor)

环境说明

服务器系统:CentOS 7.3 64位

相关工具:putty、Xftp

服务器软件软件:.netcore、nginx、supervisor、mysql

安装CentOS7

这个就不细说了,网上教程很多,我这边是阿里云的ecs服务器,操作系统为centos 7.3 x64

安装.NET Core SDK for CentOS7

sudo yum install libunwind libicu(安装libicu依赖)
curl -sSL -o dotnet.tar.gz https://aka.ms/dotnet-sdk-2.0.0-linux-x64 (下载sdk压缩包)
mkdir -p ~/dotnet && tar zxf dotnet.tar.gz -C ~/dotnet 解压缩)
sudo ln -s /opt/dotnet/dotnet /usr/local/bin(创建链接) 

参见官方文档, 需要注意的地方是第四行跟官方文档有点出入,这是建立连接,而官方文档的是添加path(只在当前session有效:export PATH=$PATH:$HOME/dotnet)

,执行这些操作之前请务必卸载旧版本及预览版本(我是直接删除旧版本的文件,执行 dotnet --info 可以查看已安装版本信息),当执行dotnet --version  xianshi 2.0.0时表示安装.net core 2.0成功

参考资料: https://www.microsoft.com/net/core#linuxcentos

搭建ftp环境

安装vsftpd

1、以管理员(root)身份执行以下命令

  1. yum install vsftpd

2、设置开机启动vsftpd ftp服务

  1. chkconfig vsftpd on

3、启动vsftpd服务

  1. service vsftpd start

管理vsftpd相关命令:

停止vsftpd:  service vsftpd stop

重启vsftpd:  service vsftpd restart

配置防火墙

在 CentOS 7.3中

暂时开放 ftp 服务
# firewall-cmd --add-service=ftp

永久开放 ftp 服务
# firewall-cmd --add-service=ftp --permanent
永久关闭
# firewall-cmd --remove-service=ftp --permanent
success

让设定生效
# systemctl restart firewalld

添加ftp用户

下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录(当不存在指定目录时需要创建相关目录)。

1、修改/etc/vsftpd/vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

如需禁用匿名登录把第一行的 anonymous_enable=YES ,改为NO

将底下三行

  1. #chroot_list_enable=YES
  2. # (default follows)
  3. #chroot_list_file=/etc/vsftpd.chroot_list

改为

  1. chroot_list_enable=YES
  2. # (default follows)
  3. chroot_list_file=/etc/vsftpd/chroot_list

3、增加用户farmhome,指向目录/home/wwwroot/farmhome,禁止登录SSH权限。

useradd -d /home/wwwroot/farmhome -g ftp -s /sbin/nologin farmhome

4、设置用户口令

passwd farmhome

5、编辑文件chroot_list:

  1. vim  /etc/vsftpd/chroot_list

内容为ftp用户名,每个用户占一行,如:

farmhome

6、重新启动vsftpd

service vsftpd restart

7.用xftp等客户端软件应该就能访问到该目录了;

安装mysql

一、官网下载mysql

# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm (去mysql官网获取最新的rpm包 https://dev.mysql.com/downloads/repo/yum/)
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server

安装完成后重启mysql服务

service mysqld restart
二、mysql相关配置

初次安装mysql,root账户没有密码。

[[email protected] yl]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
rows in set (0.01 sec)

mysql>

  设置密码

mysql> set password for ‘root‘@‘localhost‘ =password(‘password‘);
Query OK, 0 rows affected (0.00 sec)

mysql>

 不需要重启数据库即可生效。

mysql新建用户(用户farmhome,密码123456):

mysql>create user ‘farmhome‘@‘%‘ identified by ‘123‘; 

mysql远程连接设定(把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户)

1 mysql> grant all privileges on *.* to [email protected]‘%‘identified by ‘password‘;                                                  

部署asp.net core

1.防火墙配置

运行、停止、禁用firewalld

启动:# systemctl start  firewalld

查看状态:# systemctl status firewalld 或者 firewall-cmd --state

停止:# systemctl disable firewalld

禁用:# systemctl stop firewalld

将接口添加到区域,默认接口都在public

# firewall-cmd --zone=public --add-interface=eth0 --permanent

永久生效再加上 --permanent 然后reload防火墙

设置默认接口区域

# firewall-cmd --set-default-zone=public --permanent

立即生效无需重启

打开端口

加入一个端口到区域:

# firewall-cmd --zone=public --add-port=5000/tcp --permanent

# firewall-cmd --zone=public --add-port=80/tcp --permanent

查看所有打开的端口:

# firewall-cmd --zone=dmz --list-ports

2.用xftp上传程序到指定目录即上的

进入指定目录运行程序

如出现不能绑定ipv6等错误时,请修改Program.cs,添加UseUrls("http://0.0.0.0:50");

配置Nginx

安装Nginx

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

rpm -ivh nginx.rpm

yum install nginx

安装成功!

输入:systemctl start nginx 来启动nginx。

输入:systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)。

测试nginx是否可以访问。

配置nginx对ASP.NET Core应用的转发

修改

将文件内容替换为

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;
    }}

再次运行程序

donet /home/wwwroot/farmhome/famrhome.dll

如出现502错误时由于SELinux保护机制所导致,我们需要将nginx添加至SELinux的白名单。

接下来我们通过一些命令解决这个问题:

yum install policycoreutils-python

sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

sudo semodule -i mynginx.pp

配置守护服务(Supervisor)

目前存在三个问题

问题1:ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。

问题2:如果ASP.NET Core进程意外终止那么需要人为连进shell进行再次启动,往往这种操作都不够及时。

问题3:如果服务器宕机或需要重启我们则还是需要连入shell进行启动。

为了解决这个问题,我们需要有一个程序来监听ASP.NET Core 应用程序的状况。在应用程序停止运行的时候立即重新启动。这边我们用到了Supervisor这个工具,Supervisor使用Python开发的。

安装Supervisor

yum install python-setuptools

easy_install supervisor

配置Supervisor

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改supervisord.conf文件,

vim  /etc/supervisor/supervisord.conf

将文件尾部的配置(表示加载配置文件目录下的配置文件)

修改为

ps:如果服务已启动,修改配置文件可用“supervisorctl reload”命令来使其生效

配置对ASP.NET Core应用的守护

创建一个 farmhomeapp.conf文件

,内容大致如下

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

运行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf

ps -ef 

如存在指定进程表示成功

至此关于ASP.NET Core应用程序的守护即配置完成。

配置Supervisor开机启动

新建一个“supervisord.service”文件

vim /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 #来验证是否为开机启动

本文是环境搭建完后依据记忆写的博客,可能会有错误,欢迎指正,不知不觉已经凌晨了,明天继续上asp.net core2 及EF Core Fluent API 及 EF Core for MySql 相关介绍

相关内容参考:

将ASP.NET Core应用程序部署至生产环境中(CentOS7)

CentOS开启FTP及配置用户

centos7 mysql数据库安装和配置

时间: 2024-10-02 22:54:34

一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建的相关文章

一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建搭建好了.net core linux的相关环境,今天就来说说ef core相关的配置及迁移: 简介: Entity Framework(以下简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF Core是Entity

.net core 2.0学习笔记(一):开发运行环境搭建

期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面就简单分享一下.net core2.0开发运行环境的搭建过程..net core 理论知识在此就不赘述了,不了解的可以参考:https://docs.microsoft.com/zh-cn/dotnet/core/ .https://msdn.microsoft.com/zh-cn/magazine

.net core 2.0学习笔记(六):Remoting核心类库RealProxy迁移

在学习.net core的过程中,我们已经明确被告知,Remoting将不会被支持.官方的解释是,.net framework 类型包含了太多的Runtime的内容,是一个非常重量级的服务实现,已被确定为一项有问题的体系结构.说白了就是迁移的难度很大,.net core中直接不提供了.微软的建议是,如果是进程内或跨进程通讯,建议我们使用 Pipes或者内存映射文件(Memory Mapped Files).如果是机器间的调用,建议我们采用网络通讯的方案,比如HTTP.WCF等. 好吧,既然微软官

.net core 2.0学习笔记(四):迁移.net framework 工程到.net core

在迁移.net core的过程中,第一步就是要把.net framework 工程的目标框架改为.net core2.0,但是官网却没有提供转换工具,需要我们自己动手完成了..net framework 工程迁移为.net core工程大体上有两种方案: 1.创建一个.net core的工程,然后把所有的文件挪过去.这是比较笨的一种办法,如果工程比较小,还好弄.如果有几百工程,那就哭了. 2.通过编辑.csproj文件,强制把工程迁移到.net core下. 今天给大家分享的就是,如何通过修改.

SDL2.0 学习笔记-1 windows下的第一个测试程序

SDL全称是Simple DirectMedia Layer,是一个开源的.跨平台(win32,linux,mac)的多媒体开发c语言库. 官方网站 http://www.libsdl.org/ 第一步,下载源文件 首先去这个页面http://www.libsdl.org/tmp/download-2.0.php下载相关资源文件,直接下载SDL2-2.0.0.zip来自己编译,或者按自己的系统下载相关的开发资源(bin和include).解压资源包后,内容如下: include目录下头文件,sr

zeromq学习笔记1——centos下安装 zeromq-4.1.2

1.前言 MQ(message queue)是消息队列的简称,可在多个线程.内核和主机盒之间弹性伸缩.ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”.现在还未看到它们的成功.但是,它无疑是极具前景的.并且是人们更加需要的“传统”BSD套接字之上的一 层封装.ZMQ让编写高性能网络应用程序极为简单和有趣. 2.安装过程 (1)下载最新的ZeroMQ:http://download.zeromq.org/ (2)解压:tar -xvf zeromq-4.1.2.tar.gz

asp.net core 2.0 查缺补漏

asp.net core 2.0 一些有用有趣的设置. 面向(targeting)不同的.net版本: 打开asp.net core 2.0的项目文件: xxx.csproj, 这部分: <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> T

Asp.net core 2.0.1 Razor 的使用学习笔记(一)

环境:vs2017 版本:15.5.6 这里说明下, Razor页面模式跟mvc出现了严重的不同.正如微软官方说的一样“Razor 页面是 ASP.NET Core MVC 的一个新功能,它可以使基于页面的编码方式更简单高效.” 但就代码说没有什么不同几乎完全一样,但是存放的位置却有了根本的区别.个人研究分析的结果是:Razor页面模式其实是把mvc中的控制器化整为零了,即原来控制器中的操作代码被分布放到了各个页面的.cshtml.cs文件中了.这样一来由原来mvc中文件按类型分类变成了按功能分

Asp.net core 2.0.1 Razor 的使用学习笔记(六)

Asp.net core 2.0.1 Razor 的使用学习笔记——基本页面的建立 VS这版(vs版本:15.5.6  .net版本:4.7.02558)的Razor页面自动生成就是坑爹货,它自动生成的页面真是能坑死你不带商量的.到处错误,到处bug.不过相信微软最终是会修复的. 以下是Bug的具体情况,不关心的朋友可以直接跳过. 正常来说,创建的快捷方式是: 1.Pages右键>添加>新建文件夹>xxxx 2.xxxx右键>添加>Razor页面>使用实体框架生成Raz