我们的目标:

  • 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 dotnetroot      4971 26752  0 13:57 ?        00:00:07 dotnet ZYH.Operation.Sys.Admin.dllroot      4972 26752  0 13:57 ?        00:00:05 dotnet ZYH.Operation.Sys.Web.dll

    【重载】

      supervisorctl reload  #重新加载每次重新部署 后,可以执行一下上面的命令

    【设置开机启动】

      -建立配置文件打开目录 /usr/lib/systemd/system/ 新建文件 supervisord.servicecd /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=forkingExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.confExecStop=/usr/bin/supervisorctl shutdownExecReload=/usr/bin/supervisorctl reloadKillMode=processRestart=on-failureRestartSec=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

    【安装】

      #先检查是否安装了iptablesservice iptables status#安装iptablesyum install -y iptables#升级iptablesyum update iptables#安装iptables-servicesyum 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-prohibitedCOMMIT
  • 综上,到目前位置,我们还没有涉及与数据库级别的交互,只是.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=640Mmax_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 = 2Mdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0default-storage-engine=InnoDBmax_connections=151# Recommended in standard MySQL setupsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysqld_safe]log-error=/var/log/mysqld.logpid-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'; 【重载】配置文件修改后,别忘记重启mysqlservice mysqld restart

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

转载于:https://www.cnblogs.com/RandyField/p/10959970.html

【One by one系列】一步步部署.net core应用相关推荐

  1. vSphere 7 With K8s系列09:部署wordpress示例

    目录 vSphere 7 With K8s系列09:部署wordpress示例 wordpress部署说明 部署前的准备 创建PVC ​部署mysql 部署wordpress 历史文章 vSphere ...

  2. centos7 查看oracle运行日志_Linux(CentOS7)部署系列---常规应用部署方案

    前言 作为Java开发者,部署war包应用到Linux系统时常常会犯怵,一个是对Linux命令不是很熟悉,还有一个就是在Linux安装诸如JDK.Tomcat.MySQL.Redis等一知半解导致的, ...

  3. 【云原生 | Kubernetes 系列】---Skywalking部署和监控

    [云原生 | Kubernetes 系列]-Skywalking部署和监控 1. 分布式链路追踪概念 在较大的web集群和微服务环境中,客户端的一次请求可能需要经过多个不同的模块,多个不同中间件,多个 ...

  4. Prometheus监控系列一 | 安装部署及配置

    Prometheus监控系列一 | 安装部署及配置 文章目录 0 简介 1 基础环境 2 安装Prometheus 2.1 安装 2.2 配置开机自启动 2.3 启动服务 2.4 验证 3 安装Gra ...

  5. DockerK8s---跟我一步步部署K8s(二进制安装部署)

    文章目录 Docker&K8s---跟我一步步部署K8s(二进制安装部署) Kubernetes(K8s)概述 Kubernetes快速入门 四组基本概念 常见的K8s安装部署方式 准备工作 ...

  6. Open-falcon技术系列文章——安装部署open-falcon

    Open-falcon技术系列文章--安装部署open-falcon 安装部署open-falcon 文章目录 Open-falcon技术系列文章--安装部署open-falcon 前言 一.通过yu ...

  7. k8s pod部署到不同node_部署Dotnet Core应用到Kubernetes(一) - 老王Plus

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

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

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

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

    来源:https://www.cnblogs.com/7tiny/p/11342902.html [前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcor ...

最新文章

  1. skill——iptables(五)
  2. 网络推广产品浅析网站SEO文章更新要注意哪些因素?
  3. SpringBoot与Shiro整合-概述
  4. WebGL on iOS8 最终等到了这一天
  5. CSS--居中方式总结
  6. 面试稳了!集齐几千名程序员精选的 100 道前端面试题!
  7. JavaScript上传文件,不打断点就上传失败
  8. win10切换桌面_探秘Win10系统中的不可错过的实用功能
  9. 如何使用Python实现一个pdf阅读器?
  10. 为什么html中图片显示不出来,网页图片不能显示 网页图片显示不出来的解决办法...
  11. 零基础搭建完全免费个人静态博客
  12. html5 五线谱,五线谱难学?5分钟完成五线谱入门
  13. FPGA芯片供电总结
  14. 3.C++内存管理初步探索
  15. 以初学者角度介绍TestComplete的使用
  16. 微信小程序开发笔记(二)
  17. 对话《旅行青蛙》制作团队:游戏就是将现实中的不可能变为可能 | 覆盖客户全生命周期管理,神州云动六朵云来袭
  18. 从技术到应用实践 揭秘京东区块链布局全景
  19. Uderstanding and using Pointers 读书笔记
  20. 使用JOL工具计算Java对象的大小

热门文章

  1. linux让指定文件具有sudo的权限,Linux学习笔记——使用指定的用户权限执行程序——sudo...
  2. java session.load_java – 了解hibernate中的session.get vs session.load方法
  3. Apple Watch新玩法:手势操控无人机
  4. VMvare虚拟机如何删除安装的ubuntu操作系统
  5. MAC下安装NDKR10e
  6. C++ int string 转换
  7. 数据提取、转换和加载 - ETL工具
  8. web网页打印设计的CSS样式
  9. 优化算法之遗传算法(Genetic Algorithm, GA)
  10. python TCP通信,主从服务设计(通过json进行数据通信)