建造一个ASP。用于Linux VPS的NET Core web应用程序:第1部分

介绍 随着。net Core 1.0刚刚问世,作为一个有十年使用c#经验的Windows开发人员,我对新的跨平台机会感到兴奋不已。在本系列文章中,我将扮演一名完整的web开发人员的角色,为一个小型的开源web应用程序奠定基础。一路上我将告诉你如何: 启动一个Debian虚拟私有服务器(VPS)并运行你的第一个。net程序;为现实世界准备好Linux环境;构建你的第一个。net核心web应用;配置一个免费域名;设置NGINX作为反向代理使用;在Visual Studio 2015中编写代码并在Linux上发布;一个使用jQuery和ajax的简单单页应用程序添加了一个数据库 这里有足够多的内容供几篇文章使用,所以让我们开始吧! 让你的VPS 虚拟私有服务器是这个领域中最酷的。稍微研究一下,你就可以找到几个供应商,他们可以让你在几分钟内安装并运行自己的Linux服务器,并且每月只需5美元就可以运行它。我觉得这很令人兴奋,因为它给了你在IIS下配置站点的自由,而在通常的托管计划中,只有非常小的选项。。net Core 1.0的酷酷之处在于,它允许你使用c#和Windows技能集,在一个便宜、即时的Linux VPS上运行你的web应用程序。 所以去找你自己的副总裁吧。 你做了什么?然后,您的提供者将为您提供一个IP地址和初始根密码。让我们好好利用它们。在整个系列中,我将使用Debian 8.5;您的里程可能略有不同,取决于您的特殊口味的nux。 谨慎 在撰写本文时,. net核心二进制文件仅适用于x64 Linux发行版。帮你自己一个忙,确保你有一个64位的系统,即使对于任何少于4 gb的内存,32位更有意义-我们在这里追求一个小的VPS。在本文的最后一节中有更多关于这方面的内容。 E.T.的电话:PuTTY and WinSCP 如果您每天都在使用这两种工具,请直接跳到下一节。否则,请继续阅读。 从这里下载并安装PuTTY和WinSCP: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html https://winscp.net/eng/download.php PuTTY为您提供了一个通过安全SSL连接进入Linux系统的终端控制台。这是一个令人难以置信的简单工具,但这里有两个有用的调整。 1:保存会话。在实践中,所有这一切意味着您输入服务器的IP地址(或获得域名后),给它命名,并点击保存按钮。这样就可以将其添加到列表中,以便稍后只需双击即可进行连接。 2:使控制台更大。默认情况下,每次你连接时,PuTTY都会给你一个80x24字符的屏幕,这对于任何实际用途来说都太小了。加载现有会话;到左边的窗口;穿上你最喜欢的尺寸(我的最佳尺寸是100x38);返回会话并保存。从此快乐地联系在一起。 WinSCP是自重的人在说FTP时真正的意思。它允许你通过安全连接上传和下载文件,而不需要以普通的、未加密的形式传播密码和数据——这让所有潜伏在周围的脚本孩子们非常高兴。WinSCP具有与Norton Commander或其后来的兄弟FAR Manager相同的熟悉的两列布局。(FAR Manager是你在Windows之后安装的第一个工具,对吧?) 第一次登录 点燃油灰,连接。您的Linux系统最初只有一个“根”帐户。对于我的提供者,我选择获得一个初始根密码而不是设置一个SSH密钥,所以第一次登录时我必须立即更改密码: 隐藏,复制Code

login as: root
root@46.101.122.226's password:
You are required to change your password immediately (root enforced)

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Changing password for root.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
_____________________________________________________________________
WARNING! Your environment specifies an invalid locale.
 This can affect your user experience significantly, including the
 ability to manage packages. You may install the locales by running:

WARNING: 'False' is an invalid locale
To see all available language packs, run:
   apt-cache search "^language-pack-[a-z][a-z]$"
To disable this message for all users, run:
   sudo touch /var/lib/cloud/instance/locale-check.skip
_____________________________________________________________________

在您的情况下,这可能是相同的,也可能是不同的,但是这个系统对我抛出了一个威胁,关于系统无效的语言环境,所以让我们尽快摆脱这个方式。这与默认字符集密切相关,其中UTF-8是无需动脑筋的,所以咒语看起来是这样的: 隐藏,复制Code

root@debian-512mb-fra1-02:~# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=False
LANGUAGE=
LC_CTYPE="False"
LC_NUMERIC="False"
LC_TIME="False"
LC_COLLATE="False"
LC_MONETARY="False"
LC_MESSAGES="False"
LC_PAPER="False"
LC_NAME="False"
LC_ADDRESS="False"
LC_TELEPHONE="False"
LC_MEASUREMENT="False"
LC_IDENTIFICATION="False"
LC_ALL=
root@debian-512mb-fra1-02:~# locale-gen en_US.UTF8
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
root@debian-512mb-fra1-02:~# localectl set-locale LANG=en_US.UTF-8

(我用粗体突出了这些咒语,以便它们在Linux向您抛出的法语中脱颖而出。我将在随后的每个shell示例中这样做。) 你现在的首要任务是停止做根用户。在Linux咒语中很容易混淆一个字符,并最终导致一个悲剧性的结果;root有能力做到这一切。键盘一滑,摄魂怪就会对你的系统做出可怕的事情。下面我将创建一个名为gabor的用户,这是一个普通的公民,除了他可以假装是一个单一的咒语的根,一次,通过在前面加上魔法词sudo。这样做,退出阶段,并立即登录,作为您不太危险的自己。事情是这样的。 隐藏,收缩,复制Code

root@debian-512mb-fra1-02:~# adduser gabor
Adding user `gabor' ...
Adding new group `gabor' (1000) ...
Adding new user `gabor' (1000) with group `gabor' ...
Creating home directory `/home/gabor' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for gabor
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
root@debian-512mb-fra1-02:~# apt-get install sudo
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  sudo
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 860 kB of archives.
After this operation, 2,488 kB of additional disk space will be used.
Get:1 http://mirrors.digitalocean.com/debian/ jessie/main sudo i386 1.8.10p3-1+deb8u3 [860 kB]
Fetched 860 kB in 0s (4,512 kB/s)
Selecting previously unselected package sudo.
(Reading database ... 35512 files and directories currently installed.)
Preparing to unpack .../sudo_1.8.10p3-1+deb8u3_i386.deb ...
Unpacking sudo (1.8.10p3-1+deb8u3) ...
Processing triggers for man-db (2.7.0.2-5) ...
Processing triggers for systemd (215-17+deb8u4) ...
Setting up sudo (1.8.10p3-1+deb8u3) ...
Processing triggers for systemd (215-17+deb8u4) ...
root@debian-512mb-fra1-02:~# visudo

这里的诀窍是最后一个命令visudo。这将打开一个带有th的魔法文件e默认编辑器: 所以你可以在“根”下面添加一行,像这样: 隐藏,复制Code

# User privilege specification
root    ALL=(ALL:ALL) ALL
gabor   ALL=(ALL:ALL) ALL

保存您的编辑并使用exit退出控制台。以自己的身份重新登录。 让。net ! 像你回来吗?好。神奇的时刻到了:现在我们将在这台Linux机器上安装。net。 官方说明:https://www.microsoft.com/net/core debian 隐藏,复制Code

gabor@debian-512mb-fra1-02:~$ sudo apt-get install curl libunwind8 gettext
Reading package lists... Done
#
# Omitted many-many lines of output
#
gabor@debian-512mb-fra1-02:~$ curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809130
gabor@debian-512mb-fra1-02:~$ sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
gabor@debian-512mb-fra1-02:~$ sudo ln -s /opt/dotnet/dotnet /usr/local/bin

现在让我们展开一下。 apt-get安装在Linux中相当于“下载并安装这些包”。curl命令从Microsoft链接下载一个文件,并将其保存在当前文件夹中,该文件夹是用户登录后的主文件夹。下一个sudo'd命令在/opt下创建一个目录,并将下载的文件解压缩到其中。opt是Linux上安装自定义应用程序的标准位置之一。ln -s在/usr/local/bin中创建到dotnet可执行文件的符号链接,这是系统范围内命令的目录。换句话说,现在任何人都可以说dotnet,而这个系统也会为他们说dotnet。symlink命令的语法是ln -s actualfile symlink。这以后会派上用场的。 你也可以从你的主文件夹中删除下载的文件。del不能工作。命令是rm。 向世界问好 你说你在Linux上有。net ?我还是不相信。我想看一个你好,世界!程序运行。让我们为此创建一个子目录,并告诉. net创建一个新项目——确切地说,这将是一个Hello, world。 隐藏,复制Code

gabor@debian-512mb-fra1-02:~$ mkdir work
gabor@debian-512mb-fra1-02:~$ mkdir hwapp
gabor@debian-512mb-fra1-02:~$ cd hwapp/
gabor@debian-512mb-fra1-02:~/hwapp$ dotnet new
-bash: /usr/local/bin/dotnet: cannot execute binary file: Exec format error

几乎好了。如果您从一开始就按照我的建议,并确保您得到了一个64位系统,您现在看到的是Hello, world!在最后。如果您像我一样天真地认为512MB的实例对于32位的实例是完全没问题的,那么您就看到了上面所说的。在这种情况下,销毁你的副总裁和重新开始从零开始。 结论 那么我们在这里得到了什么?我们实际上还没有构建任何东西,只是在命令行上喃喃地说了一堆神奇的单词。并且完成了不可能完成的任务:在Linux上编译并构建了一个c#程序。 请参阅我的系列的下一篇文章,在这篇文章中,我们将指向我们新创建的VPS的域名,将系统加固到对一台机器预期的最低要求范围,并获得一个由ASP支持的真实网站。NET Core问候不明的水手。 历史 2016年11月07日-初始版本 本文转载于:http://www.diyabc.com/frontweb/news17301.html

原文地址:https://www.cnblogs.com/Dincat/p/13494005.html