centos上利用宝塔面板部署.net6/7程序

原链接:https://www.cnblogs.com/wuchitao/p/15820269.html

首先切换到ROOT

1

sudo -i

一、安装宝塔

1、安装宝塔8.0.4

Centos: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
Ubuntu/Deepin: wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

2、打上开心版补丁,来源于网络,仅供测试学习(此步骤可以省略)建议购买正版

升级命令:
企业版:
curl https://io.bt.sy/install/update_panel.sh|bash

3、安装nginx,如果有需要可再安装Mysql、ftp等应用

4、新建网站

二、安装.net7环境

1、#注册 Microsoft 密钥。注册产品存储库。安装必需的依赖项。

//SentOS 7
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

//SentOS 8
sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm

注意,如果执时后出现如下错误:

package packages-microsoft-prod-1.0-1.noarch is already installed
file /etc/yum.repos.d/microsoft-prod.repo from install of packages-microsoft-prod-1.0-1.noarch conflicts with file from package packages-microsoft-prod-1.0-1.noarch

需要在执行的命令后面加上两个参数即可解决  --nodeps --force

 2、#安装 .NET Core 运行时(此步骤可以省略,前提是发布.net core程序时,有选择“布署模式”为“独立”,独立时,不需要单独安装环境,但发布包可能会比较大)

复制代码

.net core 7安装命令:
Centos:
sudo yum -y install aspnetcore-runtime-7.0

Ubuntu/Deepin::
sudo apt-get update && \

sudo apt-get install -y aspnetcore-runtime-7.0

复制代码

详明说时可以参考:https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu-2204

#查看Dotnet 版本信息

1

dotnet --info

其他发行版,请参考官方文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

三、发布.net程序

1、以独立模式发布,此种方式,服务器不需要安装.net core 环境。

2、以框架依赖模式发布,此种方式,服务器需要安装.net core 环境,按照第二步中操作。

四、启动程序

1、将发布的程序上传到服务器新建的网站目录下

2、通过终端定位到站点根目录,并运行程序,此步骤可以不操作,看文章第六部分,使用守护进程来执行。

复制代码

//方案1
cd /www/wwwroot/mySiteDir
dotnet 解决方案名称.dll

//方案2(发布时生成单文件后,主程序为没有扩展名的文件)
//先安装icu库
yum install icu
//切换到程序目录
cd /www/wwwroot/mySiteDir
//设置程序执行权限
chmod 777 ./解决方案名称
//启动程序
./解决方案名称

复制代码

出现访问地址了 http://localhost:5000 即为启动成功。

五、设置反向代理

1、打开站点配置,反向代理,添加反向代理

 填写一个名称,目标URL填

1

http://localhost:5000

发送域名这里填自己的域名(或者IP)即可,也可以填写  $host,代表当前请求的任何域名。

 

 六、配置守护进程。(可以让网站持续运行)

1、安装supervisor

 2、添加守护进程,启动用户为root,运行目录为对应的网站目录,

启动命令为【dotnet 解决方案.dll】,单文件发布时,启动命令为【./解决方案名称】

七、可能出现的问题

1、在第一次部署后,遇到报错:

1

2

System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request.

Your application is running in Production mode, so make sure it has been published, or that you have built your SPA manually. Alternatively you may wish to switch to the Development environment.

 可能是前端项目没有上传服务器。需要将解决方案目录下ClientApp/dist文件夹上传到网站根目录,具体根具实际情况来。

 然后修改一下startup.cs中的Configure方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

public void Configure(IApplicationBuilder app, IOptionsMonitor<Configs> configs, IHostEnvironment env)

        {

            app.UseExceptionHandler(configs.CurrentValue.ErrorHandler);

            app.UseStaticFiles();

            app.UseWtmStaticFiles();

            //app.UseSpaStaticFiles();1.第一步修改,注释掉,新添加下面新行代码

            var spaStaticFileOptions = new StaticFileOptions

            {

                FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(System.IO.Path.Combine(env.ContentRootPath, "ClientApp/dist"))

            };

            app.UseSpaStaticFiles(spaStaticFileOptions);

            app.UseWtmSwagger();

            app.UseRouting();

            app.UseWtmMultiLanguages();

            app.UseWtmCrossDomain();

            app.UseAuthentication();

            app.UseAuthorization();

            app.UseSession();

            app.UseWtm();

            app.UseEndpoints(endpoints =>

            {

                endpoints.MapControllerRoute(

                   name: "areaRoute",

                   pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

                endpoints.MapControllerRoute(

                    name: "default",

                    pattern: "{controller=Home}/{action=Index}/{id?}");

                if (env.IsDevelopment())

                {

                    endpoints.MapToVueCliProxy(

                        "{*path}",

                        new SpaOptions { SourcePath = "ClientApp" },

                        npmScript: "start",

                        regex: "Compiled successfully");

                }

            });

             

            app.UseWtmContext();

            //app.UseSpa(spa =>

            //{

            //    spa.Options.SourcePath = "ClientApp";

            //});2.第二步修改,注释掉,新添加下面新行代码

            app.UseSpa(spa =>

            {

                if (env.IsDevelopment())

                    spa.Options.SourcePath = "ClientApp/";

                else

                    spa.Options.DefaultPageStaticFileOptions = spaStaticFileOptions;

                //if (env.IsDevelopment())

                //{

                //    spa.UseVueCli(npmScript: "serve");

                //}

            });

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值