CentOS,net core2 sdk nginx、supervisor、mysql
CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记:
阅读目录
环境说明
服务器系统:CentOS 7.3 64位
相关工具:putty、Xftp
服务器软件软件:.netcore、nginx、supervisor、mysql
安装CentOS7
这个就不细说了,网上教程很多,我这边是阿里云的ecs服务器,操作系统为centos 7.3 x64
安装.NET Core SDK for CentOS7
|
1
2
3
4
|
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)身份执行以下命令
- yum install vsftpd
2、设置开机启动vsftpd ftp服务
- chkconfig vsftpd on
3、启动vsftpd服务
- 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
|
1
|
vim /etc/vsftpd/vsftpd.conf |
如需禁用匿名登录把第一行的 anonymous_enable=YES ,改为NO
将底下三行
- #chroot_list_enable=YES
- # (default follows)
- #chroot_list_file=/etc/vsftpd.chroot_list
改为
- chroot_list_enable=YES
- # (default follows)
- 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:
- vim /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如:
farmhome
6、重新启动vsftpd
service vsftpd restart
7.用xftp等客户端软件应该就能访问到该目录了;

安装mysql
一、官网下载mysql
安装完成后重启mysql服务
|
1
|
service mysqld restart |
|
1
|
二、mysql相关配置 |
初次安装mysql,root账户没有密码。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[root@yl-web yl]# mysql -u rootWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners.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> |
设置密码
|
1
2
3
4
|
mysql> set password for 'root'@'localhost' =password('password');Query OK, 0 rows affected (0.00 sec)mysql> |
不需要重启数据库即可生效。
mysql新建用户(用户farmhome,密码123456):
|
1
|
mysql>create user 'farmhome'@'%' identified by '123'; |
mysql远程连接设定(把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户)
1 mysql> grant all privileges on *.* to root@'%'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文件
,内容大致如下
运行supervisord,查看是否生效
|
1
2
3
|
supervisord -c /etc/supervisor/supervisord.confps -ef |
如存在指定进程表示成功

至此关于ASP.NET Core应用程序的守护即配置完成。
配置Supervisor开机启动
新建一个“supervisord.service”文件
vim /usr/lib/systemd/system/supervisord.service
内容如下
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# dservice for systemd (CentOS 7.0+)# by ET-CS (https://github.com/ET-CS)[Unit]Description=Supervisor daemon[Service]Type=forkingExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.confExecStop=/usr/bin/supervisorctl shutdownExecReload=/usr/bin/supervisorctl reloadKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.target |
执行命令:systemctl enable supervisord 设定开机启动
执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

本文是环境搭建完后依据记忆写的博客,可能会有错误,欢迎指正,不知不觉已经凌晨了,明天继续上asp.net core2 及EF Core Fluent API 及 EF Core for MySql 相关介绍
相关内容参考:
CentOS,net core2 sdk nginx、supervisor、mysql的更多相关文章
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
- 高性能web服务器(热死你)Resin Linux的安装、配置、部署,性能远超Nginx支持Java、PHP等
高性能web服务器(热死你)Resin Linux的安装.配置.部署,性能远超Nginx支持Java.PHP等 一. 安装resin 1. 下载resin: 下载地址:http://cauch ...
- 【Storm】核心组件nimbus、supervisor、worker、executor、task
nimbus 是整个集群的控管核心,负责topology的提交.运行状态监控.任务重新分配等工作. zk就是一个管理者,监控者. 总体描述:nimbus下命令(分配任务),zk监督执行(心跳监控wor ...
- 使用JMX监控Storm的nimbus、supervisor、woker
可以通过在storm.yaml中增加如下样例的配置, 启动JMX来监控storm的各个角色. 其中对于Worker的监控,因为一个节点上可以有多个work,为了防止端口号重复导致启动失败,所以用动态代 ...
- CentOS 7上的程序管理:rpm、yum和源码编译安装
简介 在Linux的早期时代(也许吧?我猜的.也可能是Unix.),想要在系统上安装一款应用程序,是比较复杂的.需要专业的人员自行获取程序的源代码,并且编译安装,这是非常的复杂且需要一定的专业功底的, ...
- storm中worker、executor、task之间的关系
这里做一些补充: worker是一个进程,由supervisor启动,并只负责处理一个topology,所以不会同时处理多个topology. executor是一个线程,由worker启动,是运行t ...
- Linux系统iptables查看、设置、保存、备份和恢复
不同linux系统,相关软件是否安装,会让iptables的某些命令不能执行,这里收集了大多数iptables命令,不管是Ubuntu还是Centos,都能找到相关的修改.查询.保存命令. 仅允许某些 ...
- 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定
阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...
- 为什么选择centos,而不是Dibian、Ubuntu【转】
我们运行着一些全球最大的互联网的营运,因此我们对可靠性和稳定性非常重视,是我们的第一要务.为此,我们只使用Linux来支撑顾客的系统.但是,我们应该使用哪一个Linux的发行版?答案是,CentOS. ...
随机推荐
- POJ 2497 Strategies
题意:有三个人,Bill, Steve and Linus,他们参加竞赛,给出竞赛的题目和比赛时间,然后给出每道题需要的时间(他们解同一道题花的时间相同),然后他们有不同的策略来做题.每道题的得分为当 ...
- ES禁用_source不会影响聚合
From Elasticsearch's website: The _source field contains the original JSON document body that was pa ...
- Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率
Apache Flink是什么 Flink是一款新的大数据处理引擎,目标是统一不同来源的数据处理.这个目标看起来和Spark和类似.没错,Flink也在尝试解决 Spark在解决的问题.这两套系统都在 ...
- hdu-5816 Hearthstone(状压dp+概率期望)
题目链接: Hearthstone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- linux进程学习笔记
学习了linux下的进程,觉得应该整理一下,忘得差不多了,顺便回顾一下. 学而时习之,不亦说乎~~ 进程笔记 ,什么是进程? The Single UNIX Specification, Versio ...
- Codefoeces 734F. Anton and School 数学
Codefoeces 734F 题目大意: 给定两个正整数序列\(b,c\)构造一个正整数序列\(a\)使其满足 \[ \left\{ \begin{array}{} b_i=(a_i\text{ a ...
- [CTSC 2012] Cheat
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2806 [算法] 首先建立广义后缀自动机 注意到问题具有单调性 , 不妨对于每组询问二 ...
- Linux系统上php-cli安装redis扩展
下载 假设已经安装了redis-server,现在我们来安装redis扩展. 下载ZIP包: https://github.com/phpredis/phpredis/tree/master . 解压 ...
- Java中的内部类介绍(1)
栗子1: package campu; //外部类 class Out{ private int age =12; //内部类 class In{ public void print(){ Syste ...
- 在python 3.6的eclipse中,导入from lxml import etree老是提示,Unresolved import:etree的错误
支持代码运行没问题,暂时没有找到真正解决办法,只能通过一下办法暂时解决.如下图:

