环境变量详解
Windows操作系统的环境变量在哪设置应该都知道了。
Linux(centos版本)的环境变量在/etc/profile里面进行设置。用户级的环境变量在其它文件里面,不多说了,有兴趣的可以网上查下。
当我们的应用程序发布到生产环境时,如果用到了环境变量,就需要对服务器操作系统的环境变量进行设置。这里只是进行提前说明。
设置环境变量
环境变量可以在launchSettings.json文件里面设置,也可以右键项目->属性->调试->环境变量进行设置。这两种方式的内容是同步的,任何一种方式修改后,另外一种就会同步。只不过一个是直接修改文件,一个是通过可视化的界面进行修改。
说明:
1.如果SongLou.Web下面的applicationUrl设置成ip,且没有在program.cs里面使用UseUrls()绑定访问地址,那么这里的设置是有效的。如果使用UseUrls()进行了设置,那么这里的设置就无效了,被代码级的设置覆盖了。
2.假如启动方式是IIS Express,那么在视图界面设置后,更改会同步到launchSettings.json里的IIS Express下。如果是自宿主的方式,那么在视图界面设置后,更改会同步到launchSettings.json里的SongLou.Web下。IIS Express下url不能设置成IP。
使用环境变量
在默认的HomeController的Index方法里面加入以下代码进行测试:
在地址栏输入:http://10.101.56.52/(我的IP),查看结果:
因为我当前是以自宿主的方式运行的项目,所以看到的结果是launchSettings.json里面的SongLou.Web下的数据。如下图:
Centos环境变量设置
当应用发布到生产环境时,如果用到环境变量,还需要在服务器的操作系统里面进行设置。
export ASPNETCORE_ENVIRONMENT=product
export username=subendong
export password=111111
将这三行代码拷贝到/etc/profile文件末尾,并保存。然后更新profile。
[root@localhost ~]# source /etc/profile
然后用dotnet命令重新启动web引用。在启动前别忘记开启80端口。
[root@localhost songlou]# dotnet SongLou.Web.dll
会看到Hosting environment:product,就是我们上面设置的ASPNETCORE_ENVIRONMENT。
同时程序输出的结果也发生了变化,跟开发环境不一样了,如下图:
重要说明:在centos设置系统级的环境变量时,今天犯了一个比较低级的错误,就是开了两个远程连接窗口(终端),在窗口2设置了环境变量,也更新了,但就是不起作用。最后经过几个小时的排查,终于找到了原因。如果在窗口2做的设置,那么窗口1也要更新profile文件。只有窗口1更新了profile之后,运行dotnet命令才起作用。如果一开始profile也是在窗口1做的更改就不会耽误那么久了。