1、前言javascript
亲自动手尝试部署.Net Core在Linux,看了很多文章,感受是很简单,可是作下去也会有不少问题,今天就写个文章记录下来。java
2、环境安装linux
虚拟机(VMware),在网上找就行。nginx
地址:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.5.6-5528349.exe ,直接下载就行。web
Linux版本(ubuntu),这里选择了ubuntu系统,也是比较经常使用的,你们能够去找一些国内的下载源,好比 阿里的,网易的,下载速度是很快的。ubuntu
阿里的:http://mirrors.aliyun.com/ 网易的 http://mirrors.163.com/。vim
以阿里的举个栗子,拉到最下边,选择ubuntu-releases 点击进去windows
进去以后这里有不少版本,我选择的是16.04,点击进入api
选择如图所示的,下载就能够了。desktop是含有桌面版本的,使用起来比较方便,server版本是不带桌面的(固然选带桌面的啊,否则内心慌,看到黑屏还觉得电脑坏了呢。[捂脸])浏览器
下载好安装就好了。虚拟机怎么安装在这里就不说了,不会的去百度一下。
3、安装DotNet Sdk
3.1 登陆系统。
开机界面以下。输入密码登陆进去以后,是这个界面(前几天还有小伙伴说我用的是mac,给我吓一跳,不得不说,还真的像)。
3.2 使用terminal终端。
在windows中叫cmd 命令行,就那个黑白屏。点击最上边一个图标,搜索ter ,而后点击拖拽出来到右边的栏里。方便咱们之后点击随时使用。
3.3 下载dotnet sdk。
地址:https://www.microsoft.com/net/download/linux dotnet sdk 是为了给开发人员开发时使用的,里边包括了运行时,严格来讲,在服务器上部署网站不作开发,只用安装一个运行时就好了。这里不讲究那么多。
3.4 安装到linux系统里
下载好后把下边这个东西拖拽到你的系统里,记得改个名字,好比就叫dotnet.tar.gz。tar.gz 是linux下的一种压缩包格式。先放到home文件夹下。
右键点击出现菜单,点open terminal ,准备开始写命令。
执行命令:mkdir -p $HOME/dotnet && tar zxf dotnet.tar.gz -C $HOME/dotnet (这一步就是在当前文件夹下 建立一个dotnet的文件下,并把dotnet.tar.gz解压到里边)
执行命令:export PATH=$PATH:$HOME/dotnet (这一步就是设置环境变量,$HOME至关于你的home目录)
环境变量对java开发者来讲并不陌生,然而好多人也只是知道须要配这个东西,可是为何就不知道了。
科普一下环境变量:就是当你执行一个命令的时候,若是当前目录没有,它就会去当前的环境变量里去找(环境变量里存放的是一系列的目录,假若在这些目录里找到了就能够执行),因此,为了咱们在每一个目录任何路径下均可以执行某个命令,就须要配置一下。
注意:linux 为每一个用户建立了一个文件夹,默认/home/[username]下边,当前用户就是我本身songlin 因此点击home就直接显示了个人文件夹。下边是我本身相对于整个系统的目录,
这一点若是不懂能够下去以后学习,今天不作介绍。
3.6 检查命令
运行dotnet命令,出现如下状况,说明安装成功。可是这种方式设置的临时的,当你关闭terminal的时候就没有了。
若是要设置永久有效的,须要执行命令 sudo vim /etc/profile ,即用vim打开这个文件,在这个文件最下边加上一行 export PATH=$HOME/dotnet:$PATH 保存。
设置以后 重启一下就好了。由于这个东西是开机就启动的,执行了这一句话就至关于事先把环境变量设置好了。
接下来发布咱们的站点,并把发布的网站复制到服务器的某个目录下边,我复制到了home/wwwroot/webapi下边,以下所示:
3.7 安装nginx配置代理ip访问
3.7.1 安装:sudo apt-get install nginx
3.7.2 而后配置nginx的代理转发,修改/etc/nginx/sites-available/default,修改内容以下,这一步须要root权限修改,注意是所有覆盖,直接添加可能会出问题。
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; } }
3.7.3 从新加载
sudo nginx -t //检查配置是否正确 sudo nginx -s reload //从新加载
这样就能实现ip访问了。打开你的虚拟机,使用ifconfig 查看ip地址,而后浏览器输入ip地址就能够访问了。
3.8 安装Supervisor
3.8.1 安装:sudo apt-get install supervisor
3.8.2 配置:
安装完成以后,在 /ect/supervisor/confg.d/ 目录下新建一个配置文件,取名为 TestCore.conf (我取的是当前项目的名称)
使用命令新建文件: sodu touch testcore.conf
打开testcore.conf,写入以下命令(若是没有权限,请参照上面的方法):
[program:testcore] command=dotnet WebApplication.dll #要执行的命令 directory=/home/songlin/wwwroot/webapi #命令执行的目录 environment=ASPNETCORE__ENVIRONMENT=Production #环境变量 user=www-data #进程执行的用户身份 stopsignal=INT autostart=true #是否自动启动 autorestart=true #是否自动重启 startsecs=1 #自动重启间隔 stderr_logfile=/var/log/testcore.err.log #标准错误日志 stdout_logfile=/var/log/testcore.out.log #标准输出日志
注意:#后边的内容要去掉,这里是注释,可是supervisor不识别,并且直接输dotnet命令还找不到,如今暂时用下边的配置,直接输入命令的全路径 /home/songlin/dotnet/dotnet,我环境变量以前是配过的,这个问题我也不知道为何。
[program:testcore] command=/home/songlin/dotnet/dotnet WebApplication1.dll directory=/home/songlin/wwwroot/webapi environment=ASPNETCORE__ENVIRONMENT=Production user=www-data stopsignal=INT autostart=true autorestart=true startsecs=1 stderr_logfile=/var/log/testcore.err.log stdout_logfile=/var/log/testcore.out.log
3.8.3 重启
sudo service supervisor stop sudo service supervisor start
以后重启虚拟机就好了,而后直接用ip访问咱们的站点就能够了。
4、总结
磕磕绊绊总算是部署完成了,感受仍是有点问题,不过总算运行起来,可能有不少配置还没配好,之后再说吧,用到的时候再研究,这只是练练手。