通用NetCore前后端分离项目Linux系统部署步骤

news2024/11/15 4:23:17

        最近参与的大部分项目都是NetCore API加SAP页面的形式,都是部署在linux系统上,本文记录新领的服务器的部署步骤。采用NetCore3.1,MySql数据库。

        本文记录的程序名:myapp.dll

        部署文件保存目录:

        后台程序:/usr/publish/myapp/server/

        前端页面:/usr/publish/myapp/web_root

1、安装配置MySQL

1.1、安装MySQL

        使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本:

sudo apt-get update  #更新软件源
sudo apt-get install mysql-server #安装mysql

        安装过程会提示设置mysql root用户的密码,设置完成后等待自动安装即可。

        启动和停止mysql服务指令:

service mysql start
service mysql stop

         使用指令确认是否启动成功,mysql节点处于LISTEN状态表示启动成功

sudo netstat -tap | grep mysql

1.2、MySQL设置root帐号密码

        部分Linux版本安装mysql后不会自动提示设置root密码,此时需要手动修改root密码:

1.2.1、cd到etc/mysql目录下,查看debian。cnf文件:

 

 1.2.2、使用文件中记录的用户名和密码登录mysql:

mysql -u debian-sys-maint -p

 1.2.3、在mysql中使用sql语句修改root帐号密码:

use mysql;
update user set authentication_string=PASSWORD("自定义密码") where user='root';
# update user set authentication_string=PASSWORD("rootadmin") where user='root';
update user set plugin="mysql_native_password";
flush privileges;
quit;

1.2.4、修改root密码后重启mysql服务

/etc/init.d/mysql restart #远程账户可能会需要输入系统root帐号密码

1.3、mysql基础配置修改

        常用需要修改的配置包括开启远程登录,修改连接端口,忽略大小写表名等。

        进入到mysql配置文件目录,修改配置文件mysqld.cnf

cd /etc/mysql
vim mysql.conf.d/mysqld.cnf

        开启远程登录只需要注释掉 [mysqld]节点下的bind-address行:

# bind-address = 127.0.0.1

        修改port行更改连接端口,默认的连接端口为3306,以下配置修改为3316:

port = 3316

        如果需要忽略数据库表名的大小写,需要在 [mysqld]下增加配置:

lower_case_table_names = 1

1.4、为程序配置mysql帐号

        通常会为程序单独建立新的账号连接mysql,并访问指定的数据库,使用root账号登录数据库:

mysql -u root -p

        使用sql语句先给程序创建数据库,再给程序创建帐号并授权:

CREATE DATABASE appdatabase;     --程序专用数据库  appdatabase
use mysql;
CREATE USER 'appaccount'@'%' IDENTIFIED BY 'app123456';  --程序专用帐号用户名 appaccount,密码 app123456
GRANT ALL PRIVILEGES ON appdatabase.* TO 'appaccount'@'%' IDENTIFIED BY 'app123456'; 
flush privileges;
quit;

        对于DB First的程序,需要导入sql脚本初始化数据库。Code First 程序启动时会自动初始化数据库。

1.5、自动备份数据库

1.5.1、安装Crontab定时任务服务:

sudo apt-get install cron

1.5.2、创建数据库备份shell脚本

cd /usr/publish/myapp
mkdir dbback
chmod 777 dbback/
touch autodbbackupsql.sh
chmod 777 autodbbackupsql.sh
vim autodbbackupsql.sh

        shell脚本指令:

Mysqldump -uappaccount -papp123456 appdatabase> /usr/publish/myapp/dbback/appdatabase_$(date +%Y%m%d_%H%M%S).sql

1.5.3、添加任务计划

        使用指令配置计划:

crontab -e                #选择编辑器进行编辑

        添加如下指令保存退出:

00 06 * * * bash /usr/publish/myapp/dbback/autodbbackupsql.sh
# m h  dom mon dow   command   
# m 表示分 0-59
# h表示小时 0-23
# dom表示一个月中的第几天 1-31
# mon表示月份 1-12
# dow表示星期中的第几天 0-6(星期天为0)
# * 表示参数未配置
# 以上完整命令即表示 每天早上6点执行命令 bash /usr/publish/myapp/dbback/autodbbackupsql.sh 进行备份

        配置计划完成后重启定时任务服务:

service cron restart

2、安装NetCore环境

2.1、安装相关依赖

        不同的系统版本,相关依赖包的下载地址不同,具体参考官方说明:

在 Ubuntu 上安装 .NET - .NET | Microsoft Learn

        以Ubuntu16.04为例,依赖包的下载安装指令为:

wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

2.2、安装SDK

        使用以下指令完成SDK安装:

sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.1  #不同版本将3.1替换为对应版本号

2.3、安装图形处理库

        很多程序都需要图片验证码,Linux环境中需要安装netcore能使用的图形处理库,通常使用libgdiplus:

sudo apt-get install libgdiplus
cd /usr/lib
sudo ln -s libgdiplus.so gdiplus.dll

2.4、启动netcore程序

        采用后台模式启动程序:

cd /usr/publish/myapp/server
nohup dotnet myapp.dll > log.log 2>&1 &

        查看程序运行状态:

 ps -ef | grep myapp.dll

2.5、程序开机自动启动

        安装进程守护程序supervisor配置开机启动:

sudo apt-get install supervisor

        安装完成之后,在/ect/supervisor/conf.d/目录下新建一个节点配置文件myapp.conf:

cd /etc/supervisor/conf.d
touch myapp.conf
vi dotnetmedia.conf

        修改节点配置文件:

[program:myapp]
command=dotnet myapp.dll
directory=/usr/publish/myapp/server
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=5
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log

        按esc 然后输入:wq保存并退出。修改supervisor配置文件:

vim /etc/supervisor/supervisord.conf

        添加以下配置:

[inet_http_server]
port=*:8082
username=myusername
password=myapp123456

        退出,保存,执行以下指令应用配置:

sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf

        重启supervisor服务:

service supervisor restart

        supervisor服务启动后可通过web页面对配置的进程进行管理,浏览器访问以上配置的8082端口,使用以上配置的username和password登录之后就能看到对应管理页面:

         页面可对管理的服务进行重启、停止,状态进行监测等。

3、安装Nginx环境

        使用指令安装Nginx:

sudo apt-get install nginx

        基本配置修改,对于大多数程序,nginx默认一些配置项需要调整:

proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;

        新版的nginx站点的配置节点移到了单独的目录:

cd /etc/nginx/sites-enabled
vim default

        添加站点配置:

server {
        listen 8080;
        server_name myapp;
        root /usr/publish/myapp/web_root;
        index index.html;
        
        #配置接口数据跨域代理                                                                                                                               
        location /api{
                proxy_pass http://127.0.0.1:8081;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host:$server_port;
                proxy_redirect off;
        }
        #图片及下载文件等后台资源路径代理
        location /Resource {
                proxy_pass http://127.0.0.1:8081;
                proxy_redirect off;
        }           
}

        配置完成后reload nginx即可:

nginx -s reload

        至此整个项目就部署完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SOLIDWORKS 2023新功能揭秘!装配体升级 阵列实例、配合错误修复、零件替换同步更新

SOLIDWORKS 2023全新面世,今天众联亿诚为大家带来SOLIDWORKS 2023装配体的新功能揭秘,SOLIDWORKS 2023对装配体进行功能增强,并且继续加强性能,让我们深入研究这些令人振奋的新功能吧!在装配体中阵列是一种常见的、节省…

jfow-core 代码分析

EntityNoName目录概述需求:设计思路实现思路分析1.code:2.code2:3.FLows4.frm5.code3:code4:EntityTreeAttrEntitiesNoNameenum:JUmp way参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full bu…

深度学习是什么?深度学习和神经网络的区别是什么

1、深度学习中什么是人工神经网络? 人工神经网络(Artificial Neural Network,即ANN )是从信息处理角度对人脑神经元网络进行抽象,是20世纪80年代以来人工智能领域兴起的研究热点,其本质是一种运算模型&…

C++——多态、异常、转化函数

目录 一、多态 二、异常 ​三、转换函数 3.1标准转换函数 3.2自定义转换函数 3.3隐式转换&#xff08;explicit&#xff09; 封装Thread类 一、多态 c支持用基类的指针指向派生类。 #include <iostream>using namespace std;class A{ public:A(){ }~A(){ cout<…

vite+vue3环境变量的配置

文章目录一、vite1. 环境变量2. env 文件2.1 环境加载优先级2.2 TypeScript 的智能提示3. 模式二、vue1. 开发环境2. 生产环境3. 在 vite.config.ts 使用环境变量一、vite vite官方文档&#xff1a;环境变量和模式 1. 环境变量 Vite 在一个特殊的 import.meta.env 对象上暴露…

爱普生LQ-635K针式打印机打链式打印纸设置自动切纸方法

链式打印纸还有别的叫法&#xff0c;折叠式打印纸、复写打印纸、等分打印纸、电脑打印纸...... 其实链式打印纸是打印纸的两边带孔的具有复写功能的一种。链式打印纸可连续打印&#xff0c;很合适大量的使用&#xff0c;节约放纸时间。 链式打印纸有整张、二等分、三等分的规格…

python比较两张图片并获取精准度

先安装依赖库dlib、face_recognition、cv2下载wheel文件&#xff1a;python3.6&#xff1a;dlib-19.7.0-cp36-cp36m-win_amd64.whl: https://drfs.ctcontents.com/file/1445568/768652503/68cb5d/Python/dlib-19.7.0-cp36-cp36m-win_amd64.whlpython3.7:dlib-19.17.99-cp37-cp3…

Spring中的IOC和AOP

IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心&#xff0c;很好地实现了解耦合。所以&#xff0c;简单来说&#xff0c;Spring是一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器框架。 spring的基本框架主要包含六…

2023年中职网络安全技能竞赛网页渗透(审计版)

三、竞赛任务书内容 (一)拓扑图 网页渗透测试 任务环境说明: 服务器场景:Server2127服务器场景操作系统:未知(封闭靶机)用户名:未知 密码:未知访问服务器网站目录1,根据页面信息完成条件,将获取到的flag提交;访问服务器网站目录2,根据页面信息完成条件,将获取…

SpringCloud(10):Hystrix请求缓存

1 类继承的方法来实现请求缓存 1.1 编写CacheCommand类 package com.study.service.hystrix;import com.netflix.hystrix.HystrixCommand; import com.netflix.hystrix.HystrixCommandGroupKey; import com.netflix.hystrix.HystrixCommandKey; import com.netflix.hystrix.H…

面试 | Python 自动化测试技术面试真题

本文为面试某公司测试开发&#xff0f;自动化测试工程师时的面试题笔记。 全部笔试内容没有全部写全&#xff0c;只贴通用性的技术相关的笔试面试题&#xff0c;至于测试理论和团队管理的问题&#xff0c;都是大同小异&#xff0c;也没什么实际的参考价值。 1.直接手写一个 Pyt…

智慧工地 | 数字孪生楼宇施工管理平台

随着科学技术的进步&#xff0c;时代的发展&#xff0c;越来越多的智慧应用走进我们身边&#xff0c;万物互联不再是口号。当前智慧城市建设的兴起&#xff0c;都在要求建筑实现与物联网结合&#xff0c;使其扩展和延伸到建筑物和任何物品之间进行交换和通信&#xff0c;也就是…

python环境构造

目录 1. python安装包下载 2. 双击默认安装即可 3. python插件安装 4. 本地手动安装python插件 1. python安装包下载 可以去官网 (Download Python | Python.org) 下载&#xff0c;但是可能速度会比较慢 也可以去我的百度网盘下载&#xff0c;版本是win64 3.11.1版&#xf…

机器视觉 · 工业光源

文章目录光源 环形光源光源 环形漫反射光源光源 高亮环形无影光源光源 高亮环形大功率光源光源 双向高均匀漫射环形光源光源 多方向高均匀漫射环形光源光源 球状分布式对称无影光源光源 条形光源光源 条形光源光源 高亮条形光源光源 条形组合光源光源 背光源光源 …

安卓包在真机上安装时的“风险提示”问题

1&#xff09;安卓包在真机上安装时的“风险提示”问题 ​2&#xff09;iOS下AssetBundle的加载疑问 3&#xff09;特效用粒子系统&#xff0c;模拟器里出现花屏问题 4&#xff09;IL2CPP编译的Protobuf&#xff0c;反射类运行时报空 这是第321篇UWA技术知识分享的推送&#xf…

抖音商品机会潜力分析报告竞赛-3等奖作品分析

文章目录数据集介绍需要1以及结论需求2以及结论推荐开发商品A&#xff1a;鹊牌 三合一爆米花球形焦糖味奶香味100g玉米50g糖 50克油 包邮推荐开发商品B&#xff1a;【云南松茸菌汤包】熬汤必备 正宗云南产地货 60g/袋 包邮推荐开发商品C&#xff1a;推荐_【三只松鼠_巨型零食大…

力扣 1807. 替换字符串中的括号内容

题目 给你一个字符串 s &#xff0c;它包含一些括号对&#xff0c;每个括号中包含一个 非空 的键。 比方说&#xff0c;字符串 “(name)is(age)yearsold” 中&#xff0c;有 两个 括号对&#xff0c;分别包含键 “name” 和 “age” 。 你知道许多键对应的值&#xff0c;这些…

年度盘点(四)丨2022计讯物联企业文化活动精彩盘点

2022年&#xff0c;计讯物联聚焦企业文化软实力&#xff0c;以文化力引领企业发展力和核心竞争力&#xff0c;以塑造一流队伍为核心&#xff0c;不断找准发力点&#xff0c;深度策划系列企业文化活动&#xff0c;不断促进企业文化与公司业务的融合&#xff0c;持续增强全体计讯…

「自控原理」3.3 稳定性与稳态误差、时域校正

本节介绍稳定性分析的原理以及代数稳定性判据&#xff08;劳斯判据&#xff09; 本节介绍系统稳态误差的定义及计算方法 本节介绍时域校正方法 文章目录稳定性分析稳定的充要条件与必要条件劳斯判据-Routh例题两种特殊情况问题辨析稳态误差误差与稳态误差的定义计算稳态误差的一…

【手写 Vue2.x 源码】第三十篇 - diff算法-比对优化(上)

一&#xff0c;前言 上篇&#xff0c;介绍了diff算法-节点比对&#xff0c;主要涉及以下几点&#xff1a; 介绍了 diff 算法、对比方式、节点复用实现了外层节点的 diff 算法不同节点如何做替换更新相同节点如何做复用更新&#xff1a;文本、元素、样式处理 本篇&#xff0c…