应用程序配置

linux发布的时候,启动网站是系统会给一个默认的http-5000端口和一个https-5001端口,这时候往往会出问题,可能我们并没有配置https协议,导致我们的网站不可访问。或者我们并不想使用默认的5000端口,我们希望设置成8080或者8088。这时候需要打开.net core程序里面的** **Program.cs 文件,修改以下:

  1. public static IHostBuilder CreateHostBuilder(string[] args) =>
  2. Host.CreateDefaultBuilder(args)
  3. .ConfigureWebHostDefaults(webBuilder =>
  4. {
  5. webBuilder.UseUrls("http://*:1001").UseStartup<Startup>();
  6. });

http://*:5000中代表0.0.0.0,允许本机、局域网、公网访问,不是特殊字符,任何不能识别成ip的字符都将会绑定到0.0.0.0

  1. //你也可以写成这样
  2. UseUrls("http://*:1001;https://*:1002")
  3. //或者这样
  4. UseUrls("http://*:1001")
  5. //这样也可以
  6. UseUrls("http://*:localhost:1001")

发布项目

发布项目的时候,选择框架依赖,目标运行时可移植就行

框架依赖:就是项目本身发布没有任何运行环境之类的,必须在运行的地方要有对应的框架,运行环境才行 独立:就是全部运行需要的条件都给你打包好了一起发布,这种独立发布比较大

image.png

需要用到的工具

image.png

Xshell:用来连接服务器,执行一系列的命令操作 Xftp:用来和服务器传输文件用的

连接云服务器

打开XShell,名称自己写,主机写服务的主机
image.png
然后点击,用户身份验证,输入账号密码,点击连接
image.png
image.png
出现这个界面就是连接成功了
image.png

centos配置安装一些.net core运行环境

要在linux上运行.net core程序,需要安装以下东西,按顺序执行命令行代码
这是微软官方的最新安装过程

  1. 微软的包签名秘钥,相当于认证一下服务器,一台机器执行一次就行了

    1. sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
  2. .NET SDK ,停下来就全部选择y,直到完成

    1. sudo yum install dotnet-sdk-3.1
  3. ASP.NET Core 运行时

    1. sudo yum install aspnetcore-runtime-3.1

    这玩意根据项目来装,项目是3.1的就装3.1的,项目是5.0的就再装一个5.0的,可以同时装多个
    image.png

  4. .net core 运行时

    1. sudo yum install dotnet-runtime-3.1

    dotnet —info 命令,可以查看上面安装的版本.

    记住这里的版本号要和项目的.net core版本号一样,项目是3.1版本,这里就要把后面版本号改成3.1

文件传输/部署项目到服务器

打开Xftp,输入名字,主机,账号,密码,进行连接
image.png
这就连接成功了,右边就是centos的文件目录,左边是本地电脑的目录
image.png
/ 才是根目录,因为我一开始是通过root账户进去的,所以一开始连接上就是在root文件夹里面
image.png
在根目录下建立一个文件夹,专门用来放网站,我取名为 www 进入www文件夹,在里面创建一个新的文件夹,这个文件夹就放对应的程序,取名建议和程序的名字挂钩。
然后发布好的项目复制到对应的文件夹,(一定要复制publish发布文件夹里面的东西,第一次我还把文件夹复制错了,最后运行给我报404)
image.png

运行项目

用Xshell进入项目的目录,执行命令 dotnet workers.dll ,项目名字的那个dll。
这个页面就是运行成功了
image.png
可能会有的错误

如果发现这个错误,就说明项目的.net core版本和我在linux服务器装的运行环境的版本不一样,图片显示,我项目的版本是3.1,服务器装的版本是5.0.这时候的解决方案是,重新安装上面的运行环境 ,除了秘钥不用重新输入,其他的按顺序重装。这时候就要指定版本了,直接改安装命令的版本号 image.png

现在项目正在运行中,这时候外网访问ip+端口 就能运行网站了.
需要服务器打开端口

但是现在如果关闭了.net core的服务,或者直接关了Xshell,就无法访问了

配置centos7下.net core项目开机自启动

在 /etc/systemd/system 目录下创建一个 xxx.service 文件
image.png
在这个文件里面编辑,并保存

一定要删除中文注释,不然要报错。命名随便取

  1. [Unit]
  2. Description="ubif Service" //描述应该可以随便写
  3. [Service]
  4. Type=simple
  5. GuessMainPID=true
  6. WorkingDirectory=/www/worker/ //项目文件夹
  7. StandardOutput=journal
  8. StandardError=journal
  9. ExecStart=/usr/bin/dotnet workers.dll //执行的命令
  10. Restart=always
  11. [Install]
  12. WantedBy=multi-user.target

让这个文件自启动生效,随便哪个目录下,在Xshell里面执行以下命令

  1. systemctl enable workers_port1001.service

立刻启动项目

  1. systemctl start workers_port1001.service

查看服务状态

  1. systemctl status workers_port1001.service

这样这个项目就可以一直跑在服务器上面了
image.png