在Linux上部署.net Core 步骤以及遇到的一些问题
Linux安装部署手册
一、安装.NET Core SDK
centos 7 系统命令为:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1
CentOS 8 系统命令为:
sudo dnf install dotnet-sdk-3.1
二、安装GDIP
装GDIP命令如下:
yum install libgdiplus-devel
三、安装MySQL
1.看linux操作系统版本和系统内核版本
cat /etc/redhat-release
uname -r
2.选择对应版本下载rpm包
官网下载地址:MySQL5.7下载地址
(我已经打包了,也可以自行下载,MySQL最低版本5.7)
3.解压rpm包并安装
解压rpm包并查看
#选择官网下的 tar上传 至服务器
#进入上传目录,进行解压(该命令与你下载的文件名称有关,请注意)
tar xf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar
安装所需要组件
注意:安装过程中会发现报错,因为centos系统自带mariadb,因此要卸载自带的 mariadb才能够成功安装
卸载mariadb
#查看系统的 mariadb
rpm -qa|grep mariadb
# 清除原有系统的 mariadb
# 【mariadb-libs-5.5.68-1.el7.x86_64】每一个系统都不一样
# --nodeps 结尾必须
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
安装组件
#只需要安装部分组件 (需要安装)(该命令与你压缩包解压出来的文件名称需要一致,如果你用的是我打包的Mysql文件按照这些运行即可,否则需要更改一下名称)
rpm -ivh mysql-community-common-5.7.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
#组件暂留
mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm
mysql-community-test-5.7.17-1.el7.x86_64.rpm
mysql-community-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
安装组件异常图解:
问题1:
#补齐libaio环境
yum install libaio
问题2:
#补齐perl环境
yum install perl
问题3:
#补齐net-tools环境
yum install net-tools
安装成功示例图
安装之后的目录
/var/lib/mysql
配置文件
/etc/my.cnf
4. 当组件安装完成,需要进行 初始化mysql
mysqld --initialize --user=mysql
5.启动mysql服务并查看状态
#进行启动
systemctl start mysqld.service
#查看mysql 状态
systemctl status mysqld.service
5. 查看初始密码
grep "password" /var/log/mysqld.log
6.根据初始密码启动mysql并重置密码
启动mysql
#登录
mysql -u root -p
#输入密码
重置密码(ROOT为用户名 123456 这一块是密码 )
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
7.设置远程登录(无需求可不设置)
## 设置外网可访问的 root账号
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123123' WITH GRANT OPTION;
## 刷新
FLUSH PRIVILEGES;
8.修改mysql语言(lower_case_table_names=1 这条配置一定要加的)
注意:设置好远程登录后MySQL基本已安装完成,但在使用数据库创表添加数据时却会发现,当添加的数据是字符时,此时就会因为编码错误导致添加失败,所以我们就要修改mysql的默认语言,将它们设置成utf-8的编码格式。(如果无需修改编码格式可不用配置,)
进入my.cnf文件
#打开配置文件
vim /etc/my.cnf
#添加以下语句,并保存(这些是设置编码,无需编码可以不需要)
[client]
default-character-set=utf8
[mysqld]
character-ser-server=utf8
collation-server=utf8_general_ci
#在[mysqld]节点下,加入该设置(无视大小写,必须加):
lower_case_table_names=1
保存后重启服务并进入mysql
service mysqld restart
9. 设置新用户以及权限
登录数据库
mysql -u root -p
SET GLOBAL log_bin_trust_function_creators = 1;
创建新用户
CREATE USER '用户名'@'允许的主机' IDENTIFIED BY '密码';
CREATE USER 'db_yuemintou'@'%' IDENTIFIED BY 'db_yuemintou123!@#';
授权
GRANT 权限类型 ON 数据库名.表名 TO '用户名'@'允许的主机'
GRANT ALL ON *.* TO 'db_yuemintou'@'%';
刷新权限
flush privileges;
退出mysql
exit
10. 还原数据库
#切换到mysql数据备份还原路径 /usr/share/mysql
#切换CD之后需要把mysql脚本上传到该目录
cd /usr/share/mysql
#还原数据库操作
登录Mysql
mysql -u root -p
show databases;
#你要还原什么数据库就建立什么数据库名
create database db_yuemintou;
#切换到你刚才新建的数据库
use db_yuemintou;
#导入数据(该名称与你上传的Mysql脚本名称需要一致)
source db_yuemintou.sql;
#再次出现“mysql>”就说明成功了
四、安装NGINX代理服务器
#切换到home文件夹
cd /home
#下载资源文件
wget http://nginx.org/download/nginx-1.16.1.tar.gz
#解压
tar -zxvf nginx-1.16.1.tar.gz
#进入目录
cd nginx-1.16.1
#添加模块
./configure --with-http_stub_status_module --with-http_ssl_module
#编译
make
#安装
make install
#进入目录
cd /usr/local/nginx/sbin
#启动NGINX
./nginx
#重启命令
./nginx -s reload
#将 nginx.service 放置 cd /etc/systemd/system (我会一起打包,该服务是让nginx随着系统一起启动)
#设置nginx 自启动
/usr/local/nginx/sbin/nginx -s quit
systemctl enable nginx
systemctl start nginx.service
#注意:每次修改配置后需要重载一下配置
#nginx代理配置路径 /usr/local/nginx/conf
#注: 日志路径必须存在 如不存在则 需要运行不起来
server
{
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:3000;
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;
}
location /upload {
root /www/wwwroot/fontEnd/;
}
access_log /www/wwwlogs/access.log;
}
server
{
listen 8003;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
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;
}
access_log /www/wwwlogs/access.log;
}
#重启nginx
service nginx restart
五、安装Supervisor守护进程
#执行epel-release
sudo yum -y install epel-release
#安装Supervisor
sudo yum -y install supervisor
#通过配置文件来启动supervisor
sudo supervisord -c /etc/supervisord.conf
#启动supervisorctl
sudo supervisorctl -c /etc/supervisord.conf
#查看supervisor 版本
version
#将配置文件(我会一起打包,配置文件内的日志路径必须存在否则运行不起来)放置目录
cd /etc/supervisord.d
#启动supervisor
#启动方式1:通过supervisor服务端使用配置文件启动
sudo supervisord -c /etc/supervisord.conf
#启动方式2:通过客户端命令行启动
#先启动supervisorctl
sudo supervisorctl -c /etc/supervisord.conf
#重新加载配置文件
reload
#查看运行的状态
status
#错误一:
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
#解决方法:
ps aux | grep supervisord
kill - 9 进程ID
#错误二:
Unlinking stale socket /var/run/supervisor/supervisor.sock
#解决方法:
unlink /var/run/supervisor/supervisor.sock
#Supervisor开机自启动(配置会一起打包)
#进入system目录 将 supervisor.service文件 放置这个目录
cd /usr/lib/systemd/system
#启动服务 注:启动服务之前要先关闭
supervisorctl stop all
systemctl enable supervisord
#验证一下是否为开机启动
systemctl is-enabled supervisord
#关于一些supervisorctrl操作
1、更新新的配置到supervisord
supervisorctl update
2、重新启动配置中的所有程序
supervisorctl reload
3、启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name
4、查看正在守候的进程
supervisorctl
5、停止某一进程 (program_name=你配置中写的程序名称)
pervisorctl stop program_name
6、重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl restart program_name
7、停止全部进程
supervisorctl stop all
8、重载全部进程
supervisorctl restart all
六、安装nodejs 环境
#进入home目录
cd /home
创建node文件夹
mkdir node
#进入node文件夹
cd node
#下载资源文件
wget -c https://npm.taobao.org/mirrors/node/v14.18.1/node-v14.18.1-linux-x64.tar.xz
#解压文件
tar -xvf node-v14.18.1-linux-x64.tar.xz
#改名
mv node-v14.18.1-linux-x64 nodejs
#建立软连接 (注:目录路径需要一致 否则失败)
ln -fs /home/node/nodejs/bin/node /usr/local/bin/
ln -fs /home/node/nodejs/bin/npm /usr/local/bin/
#查看node和 npm版本号
node -v
npm -v
#安装pm2
npm install pm2 -g
#配置全局映射(注:目录路径需要一致 否则失败)
ln -fs /home/node/nodejs/bin/pm2 /usr/local/bin/pm2
#进入前端项目的根路径(注:我放置的是/www/wwwroot/fontEnd 你也可以自行放置,不过命令路径需要修改)
cd /www/wwwroot/fontEnd
npm i
#启动项目
pm2 start
#保存当前项目列表
pm2 save
#设置为开机启动
pm2 startup
七、防火墙相关命令
#开启防火墙命令
systemctl start firewalld.service
#重启防火墙命令
firewall-cmd --reload 或者 service firewalld restart
#禁用防火墙命令
systemctl stop firewalld
#防火墙永久开启端口命令
#例如我开启8002端口
firewall-cmd --zone=public --add-port=8002/tcp --permanent
#重载防火墙
firewall-cmd --reload
八、关于配置的下载
这是上文中需要的一些配置 mysql安装命令需要严格按照mysql的名字来
百度网盘链接: https://pan.baidu.com/s/1FQsggqiy0y0DqvS7b_o_Ew 提取码: aawt 复制这段内容后打开百度网盘手机App,操作更方便哦
在Linux上部署.net Core 步骤以及遇到的一些问题的更多相关文章
- 第二章 在Linux上部署.net core
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...
- 在Linux上部署DotNet Core项目的时候发现Apache无法转发Kestrel的5000端口的问题
CentOS服务器上使用Apache托管Dotnet Core2,服务启动了,端口也打开了.在本地使用curl命令可以访问5000端口的网页内容,但是访问Apache的端口却无法获取到网页的内容.想起 ...
- So Easy - 在Linux服务器上部署 .NET Core App
.NET Core 是微软提供的免费.跨平台和开源的开发框架,可以构建桌面应用程序.移动端应用程序.网络应用程序.物联网应用程序和游戏应用程序等.如果你是 Windows 平台下的 dotnet 开发 ...
- Linux上部署SVN
Linux上部署SVN author:headsen chen 2017-10-16 16:45:04 前提:通过yum来安装,必须是centos6.5的桌面版的.否则会出现某些的安装包不全而导致 ...
- 在Linux上部署Web项目
You believe it or not there is a feeling, lifetime all not lost to time. 在Linux上部署Web项目 这个是普通的web项目, ...
- 在linux上部署tomcat服务
在linux上部署tomcat 1.安装JDK 2.下载tomcat http://tomcat.apache.org/download-70.cgi 3.上传到服务器,并解压 4.上传war包或者已 ...
- 一、netcore跨平台之 Linux上部署netcore和webapi
这几天闲着的时候在linux上部署了一下netcore webapi,下面就纪要一下这个过程. 中间遇到不少的坑,心里都是泪啊. 话不多说,开始干活. ------------------------ ...
- Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务
文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...
- Linux上部署web服务器并发布web项目-转
Linux上部署web服务器并发布web项目 近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以 ...
- 在linux上部署自己开发的web项目
在linux上部署自己开发的web项目 前言:相信有很多做开发的小伙伴和我之前一样,只会在windows环境下,利用开发工具开发运行web项目,但是却不知道怎么把开发好的项目部署到linux服务器上去 ...
随机推荐
- Solution -「洛谷 P5046」「YunoOI 2019 模拟赛」Yuno loves sqrt technology I
Description Link. 无修改区间求逆序对. Solution 首先有一个显然的 \(\Theta(N\sqrt{N}\log_{2}N)\) 做法,由于过不了所以我就不废话. 其实有了 ...
- PowerDotNet平台化软件架构设计与实现系列(16):财务平台
不同行业基本都会有自己独特的业务,甚至同行的不同企业之间的业务逻辑也会相差千里,只有最大程度抽象出通用性.标准性和普适性的系统才能够成为平台系统,平台系统开发的成本和难度可想而知. 个人深度参与或独立 ...
- Java虚拟机(JVM):第六幕:自动内存管理 - 选择合适的垃圾收集器
前言:在虚拟机的世界里面,内置了很多的垃圾收集器,但并不是说最先进的就是最好的.有一句话说的好"因地制宜": 一.Epsilon收集器 是一个无操作的收集器,但是贴切的来说是&qu ...
- Excel--比较两列数据的异同
首先得到的数据分为两列,两种类型.由于在网站上搜索的时候,网站的"特殊性"会将000638-32-4 前面的0全部去掉.变成了638-32-4.基于得到了两列稍有不同的数据.由于人 ...
- 实验1 C语言输入输出和简单程序编写
1.试验任务1 task1.c //打印一个字符小人 #include <stdio.h> int main() { printf(" o \n"); printf(& ...
- 关于IP我们需要知道的
IP 在这个数字世界中,互联网已成为我们生活的一部分.而在互联网的背后,网络知识如同一张巨大的蜘蛛网,将我们与世界各地的信息紧密联系在一起.其中,IP这个看似平凡的名词,却是支撑这个虚拟世界的重要基石 ...
- VS2022修改cs文件模板
在路径:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\ItemTemplates\AspNetCore\Co ...
- 小景的Dba之路--压力测试和Oracle数据库缓存
小景最近在做系统查询接口的压测相关的工作,其中涉及到了查询接口的数据库缓存相关的内容,在这里做一个汇总和思维发散,顺便简单说下自己的心得: 针对系统的查询接口,首次压测执行的时候TPS较低,平均响应时 ...
- STM32CUBEIDE 如何将变量定义到指定内存地址
使用场景如下: 我需要将bootloader/APP的版本号和一些字段信息定义到指定FLASH地址. 在STM32CubeIDE中的方法: 截止当前STM32CubeIDE还没有提供图形化的针对FLA ...
- Util应用框架基础(六) - 日志记录(四) - 写入 Exceptionless
本文是Util应用框架日志记录的第四篇,介绍安装和写入 Exceptionless 日志系统的配置方法. Exceptionless 是一个日志管理系统,使用 Asp.Net Core 开发,比 Se ...