ASP.NET Core 一步步搭建个人网站(7)_Linux系统移植

考虑我们为什么要选择.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个工具能正常访问并管理操作系统,相关的配置和使用方法,请大家自行百度。
完成上述操作后,首先查看一下硬盘情况:

fdisk -l

avatar


发现我们的第二块磁盘云磁盘(/dev/vdb)并没有被加载。
在挂载之前,首先要格式化这块硬盘。我们选择的是ext4格式:

mkfs.ext4 /dev/vdb

硬盘格式化后,创建一个挂载目标目录,并将磁盘挂载该目录上:

mkdir /data mount /dev/vdb /data

这时候,我们再查看下系统磁盘情况:

df -h

avatar


可以看到,云磁盘可以正常的被挂载了。但是如果重启系统的话,磁盘仍旧会丢失,我们还必须在每次启动的时候将磁盘挂载。
修改/etc/fstab文件,需要在该文件的最后添加一行,具体如下:

avatar


至此,我们重启系统,发现磁盘可以正常挂载使用了。

安装 .NET Core

参考官方文档:Prerequisites for .NET Core on Linux
第1步,注册Microsoft签名密钥,然后添加Microsoft产品Feed:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

第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安装包:

yum localinstall mysql57-community-release-el7-11.noarch.rpm

第3步,安装MySQL服务器:

yum install mysql-community-server

安装完毕后,我们启动MySQL,并查看运行状态,并设置开机启动:

service mysqld start service mysqld status systemctl enable mysqld

avatar


mysql安装完成之后,在/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文件启动配置修改如下:

services.AddDbContext<ApplicationDbContext>(options => options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")));

重新编译发布到目录:/data/wwwroot/MyWebSite
进入该目录,执行:

dotnet MyWebSite.dll

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxxps.html