原创辛苦,谢绝转载!
虚拟机说明
搭建这个虚拟机是为了验证Asp.net Core程序在CentOs操作系统上可以运行的。
#软件环境版本枚举
OS:CentOS Linux release 7.2.1511 (Core)
OS Kernel:Linux version 3.10.0-327.36.3.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) ) #1 SMP Mon Oct 24 16:09:20 UTC 2016
Nginx:1.10.2
Dotnet:1.0.0-preview2-003121
Git:1.8.3.1
此虚拟机搭建步骤(全程使用root账户,可以在命令前追加sudo)
#更新操作系统,以获得最新的更新组件包
1.yum update -y
#安装微软提供的支持asp.net core的运行环境
2.yum install dotnet -y
#安装Web服务器(此处将Nginx作为返向代理服务器使用,对外发布网站服务)
3.yum install nginx -y
#安装Git工具,用于下载开源的asp.net core测试运行项目。此项目使用mvc 3框架开发
4.yum install git -y
#安装SeLinux鉴权策略辅助工具,用于辅助突破Nginx定转本地端口时linux内核的安全限定机制(可以手动修改,但是复杂度和风险性太高。因为涉及到linux内核,不建议网上找资料手动修改,大神除外!)
5.yum install policycoreutils-python -y
#配置Nginx返向代理
6.gedit /etc/nginx/nginx.conf
#成功运行配置文件配置内容如下:
worker_processes 1;
#工作进程的个数,可以配置多个
events {
worker_connections 1024; #单个进程最大连接数(最大连接数=连接数*进程数)
}
http {
include mime.types; #设定配置文件位置,这里的conf是指nginx.conf所在的目录,也可以用绝对路径指定其他地方的配置文件
default_type application/octet-stream; #默认类型-8进制文件流
sendfile on; #是否激活sendfile()函数,比默认模式更有效率
tcp_nopush on; #将HTTP响应头压缩到一个包中发送,仅在sendfile开启时才能配合使用
#连接超时时间
keepalive_timeout 65;
gzip on; #启用Gzip压缩
#设定虚拟主机,默认为监听80端口
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;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
#下载asp.net core运行项目
7.git clone https://github.com/geffzhang/MusicStore.git
#装载项目运行时需要的动态资源。当前路径必须定位到下载的项目文件根目录。
8.dotnet restore
#更新装载的最新资源信息,匹配asp.net core项目强制版本依赖,让项目关联最新的下载资源
9.dotnet pack
#编译项目源代码生成项目dll文件以及其它项目依赖性资源。当前路径必须定位到bin文件夹同级根目录下。
10.dotnet build
#生成发布项目文件。可以理解为生成Release版本文件。执行上面步骤后,是可以直接运行的,但是上面步骤生成的dll内涵Debug信息,会影响项目实际运行的响应效率。当前路径必须定位到bin文件夹同级根目录下。
10.dotnet publish
#运行外宿主项目。运行成功后,dotnet宿主会提供默认为5000端口的内部可访问地址(http://localhost:5000)。当前路径必须定位到bin文件夹同级根目录下。
11.dotnet run
#构建基于修改SeLinux内核的授权变更脚本。生成基于当前机器对应内核版本号的定制化,用pyhton语言编写的定制内核授权脚本,基本上不可移植使用。也有例外。
12.sudo cat /var/log/audit/audit.log |grep nginx |grep denied |audit2allow -M mynginx
#执行授权脚步。如果不执行脚步的话,访问Nginx地址会报502 bad gateway错误。执行后不会出现。
13.semodule -i mynginx.pp
#启动Nginx服务
14.service nginx start
#添加5000端口到系统防火墙的白名单中。可以不开启5000端口,这样就可以屏蔽掉外网直接访问。但是调试阶段建议开启
15.iptables -I INPUT -p tcp --dport 5000 -j ACCEPT
#添加80端口到系统防火墙的白名单中
16.iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#保存防火墙配置
17.iptables save
#重启防火墙服务,使上面追加的白名单端口生效。不重启端口可能访问被积极拒绝
18.service iptables restart
#访问Nginx完整URL地址。外网可访问的最终地址。
19.http://192.168.1.12:80
#--------(Tech-Worm) 2016-11-30