考虑我们为什么要选择.NET Core?
因为它面向的是高性能服务器开发,抛却了 AspNet 的臃肿组件,非常轻量,加上微软的跨平台战略,对 Docker 的亲和性,对于开发人员也非常友好,所以整体环境来说是健康发展的,未来技术决策时 .Net Core 也有很大的优势。那既然.NET Core 本身具有跨平台 (Windows、Mac OSX、Linux) 特性,而之前我们的网站一直是部署在 Windows Server 服务器上,这个章节我们不妨学习在生产环境下,怎么将我们的网站应用程序切换部署在Linux系统上。
CentOS / 7.1 (64bit) (Linux操作系统)
MySQL5.7(网站应用数据库)
.NET Core SDK 2.0.0(网站应用环境)
Nginx(反向代理服务器)
Supervisor(管理网站应用守护进程)
Symantec SSL(域名型证书,提供https协议服务)
这里数据库由SQL Server改为MySQL,因为SQL Server 2017对运行环境要求的配置比较高,我这1G内存的低端云服务器伤不起,o(╥﹏╥)o
工具介绍Xshell 5(终端模拟软件)
WinSCP(图形化SFTP客户端)
安装 Centos首先将云服务器,重新安装操作系统,选择CentOS / 7.1 x86_64 (64bit)版本的镜像,并设置访问用户名和密码,系统会帮我们自动安装好Centos系统。接下来我们配置一下Xshell和WinSCP,使得这2个工具能正常访问并管理操作系统,相关的配置和使用方法,请大家自行百度。
完成上述操作后,首先查看一下硬盘情况:
发现我们的第二块磁盘云磁盘(/dev/vdb)并没有被加载。
在挂载之前,首先要格式化这块硬盘。我们选择的是ext4格式: mkfs.ext4 /dev/vdb
硬盘格式化后,创建一个挂载目标目录,并将磁盘挂载该目录上:
mkdir /data mount /dev/vdb /data这时候,我们再查看下系统磁盘情况:
df -h可以看到,云磁盘可以正常的被挂载了。但是如果重启系统的话,磁盘仍旧会丢失,我们还必须在每次启动的时候将磁盘挂载。
修改/etc/fstab文件,需要在该文件的最后添加一行,具体如下:
至此,我们重启系统,发现磁盘可以正常挂载使用了。 安装 .NET Core
参考官方文档:Prerequisites for .NET Core on Linux
第1步,注册Microsoft签名密钥,然后添加Microsoft产品Feed:
第2步,更新可用于安装的产品列表,安装.NET Core所需的组件,然后安装.NET Core SDK:
sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-2.0.0第3步,设置环境变量:
export PATH=$PATH:$HOME/dotnet以上,.NET Core环境已配置完成,可以新建一个项目HelloWorld,执行命令:dotnet run,正常运行,并使用localhost:5000正常访问,这里就不再多述。
安装 MySQL第1步,下载MySQL Yum仓库的RPM安装包:
在MySQL官网中下载YUM源rpm安装包:
第2步,安装MySQL RPM安装包:
第3步,安装MySQL服务器:
yum install mysql-community-server安装完毕后,我们启动MySQL,并查看运行状态,并设置开机启动:
service mysqld start service mysqld status systemctl enable mysqldmysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码: grep 'temporary password' /var/log/mysqld.log
我们获取了默认密码,就可以进行一些安全设置,输入命令:
mysql_secure_installation最后设置远程访问权限:
mysql -u root -p mysql mysql> grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;默认情况,MySQL的字符集为lanti,考虑我们使用中文的习惯,修改mysql配置文件/etc/my.cnf,增加如下一行,把默认的字符集改成utf8:
[mysqld] character-set-server=utf8 程序移植因为.NET Core本身就是支持跨平台,所以程序逻辑不用进行任何调整,但是我们已将数据库切换成MySQL,所以针对这块,稍微调整下。
首先,将appsettings.json中的数据库连接字符串修改为新的连接;
然后,Startup.cs文件启动配置修改如下:
重新编译发布到目录:/data/wwwroot/MyWebSite
进入该目录,执行: