带你快速进入.net core的世界
【申明】:本人.NET Core小白、Linux小白、MySql小白、nginx小白。而今天要说是让你精通Linux ... 的开机与关机、nginx安装与部署、Core的Hello World ...等。
首先,入门文章园子里面已经很多了。这里再做个整理和备忘。您也可以根据目录挑着看。(亲测多次可行,以下多图预警!)
vmware虚拟机安装
vmware哪里下载?360软件管家就可以下载。然后网上找个序列号。
我这里安装的是12.1.1
安装很简单一直下一步就好了。
CentOS7.3安装
下载CentOS http://isoredirect.centos.org/centos/7/isos/x86_64/ 我们可以选择163或阿里云的节点,速度会快点。
下载完成后打开vmware准备安装
菜鸟可以选择有界面的
选好后然后开始安装,然后设置密码,然后重启就好了。
Windows的客户端软件
下载安装Xshell https://www.baidu.com/baidu?word=Xshell
下载安装WinSCP https://www.baidu.com/baidu?word=WinSCP (你也可以使用Xftp,记得选sftp,不然需要服务器支持ftp)
进入CentOS,右键
开始第一个命令。查看IP
ifconfig -a
接下来,可以全部由Xshell操作。
打开Xshell
然后输入用户名密码登录。(使用root登录)
.NET Core1.1安装
根据微软资料 https://www.microsoft.com/net/core#linuxcentos
在命令行执行:
sudo yum install libunwind libicu #(安装libicu依赖)
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821 #(下载sdk压缩包) 根据网速,可能快可能慢
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet #(解压缩)
sudo ln -s /opt/dotnet/dotnet /usr/local/bin #(创建链接)
dotnet new console -o hwapp # 我们初始化一个示例Hello World应用程序 (这里稍微耗时点)
cd hwapp
dotnet restore
dotnet run #运行应用程序
看到打印的hello world证明 .net core的环境已经装好了。
【小白技巧】
- "#"是注释
- shirf + insert 粘贴 (不能ctrl + c v 有点不习惯)
- ctrl + insert 复制
nginx1.12.1安装
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的开机启动
然后登录 CentOs系统 打开浏览器 输入 :192.168.233.129 (之前查到的IP)
看到这个页面就代表安装成功了。
配置防火墙
如果你在物理机的浏览器访问,你会发现访问不了。
那是因为CentOs的防火墙拦截了,我们打开端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent #(开放80端口)
systemctl restart firewalld #(重启防火墙以使配置即时生效)
然后访问成功。
部署ASP.NET Core应用程序
打开VS2017 新建一个.net core 项目
右键发布(发布之前最好先在本地跑下看正常不)
然后打开我们的WinSCP(前面下载的)
点击登录,然后就可以看到CentOs系统的文件目录了。然后随便建个文件夹,准备放我们发布发好的程序。
右键上传
然后命令运行
cd /home/NetCoreDemo #这个目录 要输入你自己对应放的目录
dotnet netcoreDemo.dll # netcoreDemo.dll 这个对应你建的项目生成的dll
看到了5000 端口的一个网址,证明部署好了。
然后在虚拟机里面访问 http://localhost:5000 ,ok。
nginx 配置
前面我们只说了nginx,并没有说是干嘛的。nginx的作用有点先iis,是个web服务器。做转发。
我们发现http://localhost:5000 可以访问。但是通过ip却不能访问。那么我们现在就可以通过80访问nginx,然后nginx再帮我们访问5000。
打开路径 /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;
}
}
将nginx添加至SELinux的白名单,否则会报502错误。
nginx -s reload #使其即时生效
【注意】然后这里访问下 http://192.168.233.130/ (对应你自己的centos ip,这一步好重要。应该是要先主动触发这个502错误吧。)
yum install policycoreutils-python #(选y)
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
semodule -i mynginx.pp
SELinux 对nginx访问目录的影响
https://www.cnblogs.com/mywebnumber/p/5572984.html
然后我们就可以在物理机上通过ip访问了(不用带端口了,直接80 然后 nginx 转到了5000)。
配置守护服务(Supervisor)
yum install python-setuptools
easy_install supervisor #安装Supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf #配置Supervisor
文件的最后
;[include]
;files = relative/directory/*.ini
改成(【注意】去掉;且不能有空格)
[include]
files = conf.d/*.conf
进入目录 /etc/supervisor/
新建 conf.d
文件夹,conf.d
文件夹下新建 netcoreDemo.conf
文件
内容(【注意】看 第二行 第三行的 注释,根据实际名字填入)
[program:netcoreDemo]
command=dotnet netcoreDemo.dll ; (注意)运行程序的命令
directory= /home/NetCoreDemo/ ; (注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!!
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 -c /etc/supervisor/supervisord.conf
ps -ef | grep netcoreDemo #【注意】netcoreDemo是上面 program:netcoreDemo 的命名
supervisorctl reload #重新加载
然后就好了,现在关掉那个5000界面也可以访问。
配置Supervisor开机启动
打开目录 /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 #来验证是否为开机启动
systemctl stop supervisord #关闭
systemctl disable supervisord #禁用
到此,完工。现在重新电脑什么都不用管,直接可以访问部署好的网站。
MySql5.6.37安装
http://www.cnblogs.com/starof/p/4680083.html (我用的方法二)
安装rar压缩
下载 http://www.rarsoft.com/download.htm
把文件放服务器上。然后cd到这个目录执行
tar -zxvf rarlinux-x64-5.4.0.tar.gz # rarlinux-x64-5.4.0.tar.gz是你下载的文件名
cd rar
make
rar #安装
安装好了后我们就可以打命令解压文件了
cd #跳到压缩文件目录
rar x ceshi.rar #解压到当前文件夹 ceshi.rar是压缩文件名
rar a abc.rar ceshi #压缩文件夹 到 abc.rar
在CentOS中安装完rar命令,会自动安装zip命令
cd /home #进入/home目录
zip -r mydata.zip mydata #把/home目录下面的mydata目录压缩为mydata.zip
unzip mydata.zip -d mydatabak #把/home目录下面的mydata.zip解压到mydatabak目录里面
zip -r abc123.zip abc 123.txt #把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip
unzip wwwroot.zip #把/home目录下面的wwwroot.zip直接解压到/home目录里面
unzip abc\*.zip #把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面
unzip -v wwwroot.zip #查看把/home目录下面的wwwroot.zip里面的内容
unzip -t wwwroot.zip #验证/home目录下面的wwwroot.zip是否完整
unzip -j wwwroot.zip #把/home目录下面wwwroot.zip里面的所有文件解压到第一级目录
常用linux命令
cd #目录跳转
cd / #回到上一个目录
ls #查看目录下的文件
df -h #查看文件使用情况
mkdir #创建文件夹文件夹
vi # 编辑文件
:wq! #强制保存文件,并退出vi
ifconfig -a #查看ip
free #查看系统资源使用情况 http://blog.csdn.net/zhongluhuaok/article/details/52804187
firewall-cmd --zone=public --add-port=80/tcp --permanent #开放80端口,也可以是其他端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent # 关闭端口
systemctl restart firewalld #重启防火墙,使其生效
service mysqld restart #重启mysql
nginx -s reload # nginx 生效
reboot # 重启系统
supervisorctl start program_name #启动某个进程(program_name=你配置中写的程序名称)
supervisorctl stop program_name #停止某一进程 (program_name=你配置中写的程序名称)
supervisorctl reload #重新启动配置中的所有程序
supervisorctl stop all #停止全部进程
supervisorctl update #更新新的配置到supervisord
supervisorctl restart program_name #重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl #查看正在守候的进程
http://blog.csdn.net/shudaqi2010/article/details/51153961
clear #刷新终端屏幕 (或者 ctrl + l)
exit #退出
shift + insert #粘贴
ctrl + insert #复制
补充
centos上升级 .net core 2.0 需要先执行官网命令
curl -sSL -o dotnet.tar.gz https://aka.ms/dotnet-sdk-2.0.0-linux-x64
mkdir -p ~/dotnet && tar zxf dotnet.tar.gz -C ~/dotnet
export PATH=$PATH:$HOME/dotnet
然后再删除原有文件夹
rm -rf /opt/dotnet #删除原有文件夹
rm -rf /usr/local/bin/dotnet #删除原来定义的dotnet命令
sudo ln -s /root/dotnet/dotnet /usr/local/bin #重新定义dotnet命令
且,项目程序也要升级到2.0,不然dotnet dll不能成功。
结束
这几天给我的感受就是,CentOS带我进入了一个更开阔的世界!!!开启我们的.net core吧,你会觉得很好玩的。
打算重写Hi-Blogs系统
访问地址:http://haojima.net (刚入手做了一个留言板、聊天室快去体验下吧。.net core 跑在阿里云linux上的。)
开源地址:https://github.com/zhaopeiym/Hi-Blogs
参考
- http://www.cnblogs.com/ants/p/5732337.html
- http://www.cnblogs.com/keepcodingforever/p/6642183.html
- http://www.cnblogs.com/starof/p/4680083.html
- http://www.cnblogs.com/linjiqin/archive/2013/03/24/2979897.html
带你快速进入.net core的世界的更多相关文章
- 带你快速进入.net core的世界(转)
出处:http://www.cnblogs.com/zhaopei/p/netcore.html 阅读目录 vmware虚拟机安装 CentOS7.3安装 Windows的客户端软件 .NET Cor ...
- 两篇文章带你走入.NET Core 世界:Kestrel+Nginx+Supervisor 部署上云服务器(二)
背景: 上一篇:两篇文章带你走入.NET Core 世界:CentOS+Kestrel+Ngnix 虚拟机先走一遍(一) 已经交待了背景,这篇就省下背景了,这是第二篇文章了,看完就木有下篇了. 直接进 ...
- Miox带你走进动态路由的世界——51信用卡前端团队
写在前面: 有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题.这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做 ...
- 一文带你了解 C# DLR 的世界
一文带你了解 C# DLR 的世界 在很久之前,我写了一片文章dynamic结合匿名类型 匿名对象传参,里面我以为DLR内部是用反射实现的.因为那时候是心中想当然的认为只有反射能够在运行时解析对象的成 ...
- MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界
MYSQL(基本篇)--一篇文章带你走进MYSQL的奇妙世界 MYSQL算是我们程序员必不可少的一份求职工具了 无论在什么岗位,我们都可以看到应聘要求上所书写的"精通MYSQL等数据库及优化 ...
- 两篇文章带你走入.NET Core 世界:CentOS+Kestrel+Ngnix 虚拟机先走一遍(一)
背景: 上一篇:ASP.Net Core on Linux (CentOS7)共享第三方依赖库部署 已经交待了背景,这篇就省下背景了. 折腾的过程分两步: 第一步是:本机跑虚拟机部署试一下: 第二步是 ...
- HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
从单声道.立体声.环绕声发展到三维声,音频回放技术的迭代演进是为了还原真实世界的声音.其中,三维声技术使用信号处理的方法对到达两耳的声音信号进行模拟,将声场还原为三维空间,更接近真实世界.凭借这个技术 ...
- GDI+入门——带你走进Windows图形的世界
一.GDI+基础 1.GDI+简单介绍 GDI+是微软的新一代二维图形系统,它全然面向对象,要在Windows窗口中显示字体或绘制图形必需要使用GDI+.GDI+提供了多种画笔.画刷.图像等图形对象, ...
- 公子奇带你进入Java8流的世界(二)
在上一篇中我们带领大家简单的了解流的概念及使用场景,本节我们就来好好的介绍流的常见用法. 一.筛选和切片 对于一串流,我们有时需要取出我们需要的流中某些元素,主要是通过谓词筛选.看代码: 首先定义一个 ...
随机推荐
- Markdown: 编译pdf
在网上发布博文的时候希望能顺便在本地保存一份记录,这样总结的东西很多的时候就可以写成一本给自己看的小书了.在linux下面有两个选择latex和markdown,虽然latex非常强大,但是很少有博客 ...
- 使用react-router setRouteLeaveHook的钩子函数
今天在使用react-router setRouteLeaveHook的钩子函数,不知道怎么实验就是成功.最后功夫不负有心人,终于让我找到使用setRouteLeaveHook的方法了 1.我在网络上 ...
- VBS自动按键大全,vbs基本和特殊按键
CreateObject("Wscript.Shell") SendKeys [String] 脚本实现自动按键盘的某个键 过程是:按下F5间隔50毫秒松开F5间隔3000毫秒按下 ...
- java桥连接sql server之登录验证及对数据库增删改查
一:步骤 1.sql server建立数据库和相关表 2.建立数据源 (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源 (2).打开数据源配置后点击添加,选择sql server点击 ...
- 一篇文章学懂Shell脚本
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面, ...
- weblogic 部署问题定位与解决
weblogic 做为商用中间件在(EJB.jndi 数据源.日志管理.内存管理.资源配置管理...) 是一些开源免费小型容器无法望其项背的. weblogic 最早由 weblogic Inc. ...
- iOS获取ipa素材、提取ipa包资源文件
当我们看到一款优秀的App时,我们可能对它的一些素材比较感兴趣,或者我们也想仿写一款类似app,那么怎么能获取到它的素材资源文件呢? 下面我以ofo举例: 1.打开iTunes,搜索ofo关键字,选择 ...
- HTML form表单小结
HTML form标签小结 最近研究 form标签,有一些小心得写下来与大家分享分享,共勉.在小结的最后有一个form表单的小例子,可以作为参考. -----DanlV form是HTML的一个极为重 ...
- SpringEL 表达式错误记录
原因暂时未知....
- iconfont字体图标的使用方法--超简单!
我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐, ...