我们的目标:

  • CentOS系统
  • nginx服务器
  • asp.net core应用
  • mysql服务器
  • 腾讯云服务器
工具准备
  • 【Xshell】——使用windwos下的工具Xshell,原理就是使用SHH协议让我们可以连接其他计算机,类似于windows的远程桌面连接,只是现在用于远程腾讯云主机------------【执行命令】

  • 【WinSCP】——当我们的asp.net core网站写好,发布文件完成时,需要往CentOS上拷贝,这时使用WinSCP,当配置好ip,连接上另外一遍的CentOS系统,则可以实现两台计算机文件的共享,拷贝----------【文件拷贝】

  • 【.net core SDK】——.net core 开发的web或webapp在CentOS上能够运行,就需要环境,.net core去官网看,有linux下各版本的下载安装方式-----------【安装.net core】------CentOS

  • 【nginx】——是一个反向代理http服务器,可以转发

【安装】

``curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm ``
``rpm -ivh nginx.rpm``
``yum install nginx #安装`` 【配置】 在 /etc/nginx中
cd /etc/nginx
vim nginx.conf - 内容为:
user nginx;
worker_processes 1; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on;
client_max_body_size 2000m; #最大限制为2000M --万一你的web需要上传文件或者图片等大文件 keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;
}

注意最后依据 include ,这个有点像C语言的,意思是这个配置文件是嵌套的,更详细的配置要去 /etc/nginx/conf.d/*.conf里面去找

cd /etc/nginx/conf.d/
vim default.conf 内容为下:
server {
listen 80;
server_name 118.24.112.238; #charset koi8-r;
#access_log /var/log/nginx/host.access.log main; location / {
proxy_pass http://localhost:5009;
proxy_http_version 1.1;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 81;
server_name 118.24.112.238; #charset koi8-r;
#access_log /var/log/nginx/host.access.log main; location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

大概意思就是监听80端口,转5009,监听81端口,转5000,其他待后续补充知识

【重载】

nginx配置文件修改后,请一定不要忘记重载,新手很容易忘,
nginx -s reload
  • 【守护进程】

nginx安装配置都好了,防火墙80端口开放,dotnet netcore.dll运行,网站打开,80转发至端口5000,这样的确是发布了,但是总不至于每次开机都要执行一次dotnet run ,只是就需要配置守护服务Supervisor,(守护服务-守护进程)======================何谓守护服务,让其一直运行我们的web,错误时自己处理,自己重启

 【安装】

yum install python-setuptools
easy_install supervisor #安装Supervisor 【配置】 Supervisor的默认配置文件supervisord.conf 但是没有使用
自建了一个supervisor目录,
【cmd】:mkdir /etc/supervisor
然后把配置文件输出到指定目录:
【cmd】:echo_supervisord_conf > /etc/supervisor/supervisord.conf #配置Supervisor
其中supervisord.conf的文件最后:
;[include]
;files = relative/directory/*.ini
修改为(【注意】去掉;且不能有空格)
[include]
files = conf.d/*.conf
然后cd /etc/supervisor/
mkdir conf.d
新建文件:
vim zyhopsys.conf
vim zyhopsys-admin.conf
文件内容大概为:
[program:opadmin]
command=dotnet ZYH.Operation.Sys.Admin.dll #(注意)运行程序的命令
directory= /home/op-admin/ #(注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!!
autorestart=true #程序意外退出是否自动重启
environment=ASPNETCORE_ENVIRONMENT=Production #进程环境变量
stderr_logfile=/var/log/myproject.err.log; #错误日志文件
stdout_logfile=/var/log/myproject.out.log; #输出日志文件
user=root #进程执行的用户身份
stopsignal=INT
autostart=true
autorestart=true
startsecs=1 【搭载配置文件运行】 supervisord -c /etc/supervisor/supervisord.conf
这里稍微提一句:supervisord的启动顺讯
supervisord #默认去找$CWD/supervisord.conf,也就是当前目录
supervisord #默认$CWD/etc/supervisord.conf,也就当前目录下的etc目录
supervisord #默认去找/etc/supervisord.conf的配置文件
supervisord -c /home/supervisord.conf #到指定路径下去找配置文件 运行后:ps -ef | grep dotnet
可以查看自己的网站是否已运行,正常如下
root 1877 1817 0 16:40 pts/1 00:00:00 grep --color=auto dotnet
root 4971 26752 0 13:57 ? 00:00:07 dotnet ZYH.Operation.Sys.Admin.dll
root 4972 26752 0 13:57 ? 00:00:05 dotnet ZYH.Operation.Sys.Web.dll 【重载】 supervisorctl reload #重新加载
每次重新部署 后,可以执行一下上面的命令 【设置开机启动】 -建立配置文件
打开目录 /usr/lib/systemd/system/ 新建文件 supervisord.service
cd /usr/lib/systemd/system/
vim supervisord.service
内容:
# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target
执行命令:
systemctl enable supervisord
systemctl is-enabled supervisord #来验证是否为开机启动
  • 【防火墙】

如果公网ip访问不了:那是因为CentOs的防火墙拦截了,我们打开端口。

firewall-cmd --zone=public --add-port=80/tcp --permanent #(开放80端口)
systemctl restart firewalld #(重启防火墙以使配置即时生效) firewall-cmd --zone=public --add-port=80/tcp --permanent #(开放80端口)
systemctl restart firewalld #(重启防火墙以使配置即时生效) --我在使用腾讯云主机,通过上述命令并不能远程访问mysql firewall-cmd --zone=public --add-port=3306/tcp --permanent #(开放3306端口) 最后改用iptables 【安装】 #先检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#升级iptables
yum update iptables
#安装iptables-services
yum install iptables-services 【停止firewalld】 #停止firewalld服务
systemctl stop firewalld
#禁用firewalld服务
systemctl mask firewalld 【配置iptables】 vim /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
  • 综上,到目前位置,我们还没有涉及与数据库级别的交互,只是.net core在linux上发布经历的环境配置

  •       CentOS的安装
    远程执行终端Xshell
    远程拷贝文件WinSCP
    .net core 环境的安装
    服务器nginx的安装,配置,转发规则配置等
    守护服务Supervisor的安装,自启动
  • 承上启下,以前都是发布,但是我们的动态网站,必有数据源,我们选择mysql,mysql经历安装,root账户登录,设置密码,

        # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
    # rpm -ivh mysql-community-release-el7-5.noarch.rpm
    # yum install mysql-community-server

开启权限,开启CentOS防火墙-3306的端口(类似与sqlserver1433端口),重启防火墙,这样我们就能远程访问mysql

centOS预装了mariadb(mysql之父为了mysql可能存在闭源风险而搞mysql分支)

安装完以后mariadb自动就被替换了,将不再生效。

 【安装】

    # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server 【重启mysql服务】 # service mysqld restart 【修改密码】 初次安装mysql,root账户没有密码。 直接 #mysql -u root # mysql>show databases; mysql>set password for 'root'@'localhost' =password('设置你的密码');
Query OK, 0 rows affected (0.00 sec) 不需要重启数据库即可生效。 【配置】 #vim /etc/my.cnf 内容如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[client]
default-character-set=utf8
# 加上 免得有中文乱码 [mysql] [mysqld] character-set-server = utf8
# 加上 免得有中文乱码 innodb_log_file_size=640M max_allowed_packet = 64M
#加上,当你有大量数据要往数据库中存储就需要这个配置,例如二进制文件 #
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0 default-storage-engine=InnoDB
max_connections=151 # Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 【远程连接设置】- 我就想在家,在公司,在任何地方都能进入我自己的数据库操作一下,navicat连一下 #把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。 mysql> grant all privileges on *.* to root@'%'identified by 'password'; #如果是新用户而不是root,则要先新建用户 mysql>create user 'username'@'%' identified by 'password'; 【重载】 配置文件修改后,别忘记重启mysql
service mysqld restart

参考资料:https://www.cnblogs.com/zhaopei/p/netcore.html---感谢 园友农码一生

【One by one系列】一步步部署.net core应用的更多相关文章

  1. 和我一步步部署 kubernetes 集群

    和我一步步部署 kubernetes 集群 本系列文档介绍使用二进制部署最新 kubernetes v1.6.1 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群: 在部署的过程中, ...

  2. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  3. 代码审计系列题目CTFD部署(上)

    关于简单部署题目请参考:https://www.cnblogs.com/Cl0ud/p/13783325.html 如果需要进行较复杂部署,可参考本篇 PHP代码审计系列题目的部署,较之前的部署方案, ...

  4. C#开发BIMFACE系列48 Nginx部署并加载离线数据包

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列47 IIS部署并加载离线数据包>中详细介绍了IIS部署并访问的完整步 ...

  5. SonarQube系列二、分析dotnet core/C#代码

    [前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...

  6. 部署Dotnet Core应用到Kubernetes(一)

    最近闲了点,写个大活:部署Dotnet应用到K8s.   写在前边的话 一直想完成这个主题.但这个主题实在太大了,各种拖延症的小宇宙不时爆发一下,结果就拖到了现在.   这个主题,会是一个系列.在这个 ...

  7. IIS上部署Net.Core

    部署: 1.安装vc_redist.x64vc_redist.x64 2.安装DotNetCore.1.0.0.RC2-WindowsHosting 3.安装DotNetCore.1.0.0-SDK. ...

  8. win2008server R2 x64 部署.net core到IIS上出现【Failed to load the dll from [C:\Program Files\dotnet\host\fxr\1.0.1\hostfxr.dll], HRESULT: 0x80070057】错误

    win2008server R2 x64 部署.net core到IIS上出现[Failed to load the dll from [C:\Program Files\dotnet\host\fx ...

  9. ASP.NET Core学习之四 在CentOS上部署.net core

    一.安装CentOs 以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了. 1.下载 现在没法FQ,就算是FQ网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是 ...

随机推荐

  1. idae for mac部分背景色修改收集

    文章目录 所有字体默认颜色 终端背景色 行数line number背景色 line number颜色 编码区背景色 光标所在行背景色 未被使用的变量.方法或者类 控制台相关 选中文字的背景色 选中和未 ...

  2. SQL SERVER 备份数据库时候错误处理

    当备份数据库时候出现如下错误时候 只需要删除备份目标就行了

  3. 三种方法实现MNIST 手写数字识别

    MNIST数据集下载: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist ...

  4. vue中的data用return返回

    为什么在大型项目中data需要使用return返回数据呢? 答:不使用return包裹的数据会在项目的全局可见,会造成变量污染:使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件. ...

  5. Appium测试过程中,建议使用谷歌输入法。用搜狗输入法报错报找不到元素,卡住

    1. 手机使用谷歌输入法,在登录页面输入密码时输入数字时卡住报错 代码: 手机卡住 页面:看到页面上没有显示数字,所以卡住报错

  6. Pycharm VS VS Code(个人使用感受)

    Pycharm IDE (community enough!) 简单介绍:Pycharn的确是我刚开始学习python时,除了Visual Studio之外,上手的第二个IDE,最初是因其好看的界面, ...

  7. POJ 1696 /// 凸包

    题目大意: 不能向左拐 不能重复走 就是求一个螺旋凸包 把已经是凸包内的点标记一下就行 因为凸包的性质 所有点都能走到 注意起点的选择 还有 反复求凸包的过程中边界的改变 #include <c ...

  8. MySQL5.1的安装过程

    开始配置文件

  9. Python基础笔记_变量类型

     下面是W3C学习笔记 , , ) :] ]) :]) :]) :-]) :-]) ]) :]) :]) ) , , ]) :]) :]) ) , , , ]) :]) :]) ) ] = , ])) ...

  10. 二分+2-sat——hdu3062

    hdu3622升级版 注意要保留两位小数 /* 给定n对圆心(x,y),要求从每对里找到一个点画圆,不可相交 使得最小半径最大 二分答案,设最小半径为r 然后两两配对一次进行判断,在2-sat上连边即 ...