【One by one系列】一步步部署.net core应用
我们的目标:
- 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应用的更多相关文章
- 和我一步步部署 kubernetes 集群
和我一步步部署 kubernetes 集群 本系列文档介绍使用二进制部署最新 kubernetes v1.6.1 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群: 在部署的过程中, ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- 代码审计系列题目CTFD部署(上)
关于简单部署题目请参考:https://www.cnblogs.com/Cl0ud/p/13783325.html 如果需要进行较复杂部署,可参考本篇 PHP代码审计系列题目的部署,较之前的部署方案, ...
- C#开发BIMFACE系列48 Nginx部署并加载离线数据包
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列47 IIS部署并加载离线数据包>中详细介绍了IIS部署并访问的完整步 ...
- SonarQube系列二、分析dotnet core/C#代码
[前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...
- 部署Dotnet Core应用到Kubernetes(一)
最近闲了点,写个大活:部署Dotnet应用到K8s. 写在前边的话 一直想完成这个主题.但这个主题实在太大了,各种拖延症的小宇宙不时爆发一下,结果就拖到了现在. 这个主题,会是一个系列.在这个 ...
- IIS上部署Net.Core
部署: 1.安装vc_redist.x64vc_redist.x64 2.安装DotNetCore.1.0.0.RC2-WindowsHosting 3.安装DotNetCore.1.0.0-SDK. ...
- 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 ...
- ASP.NET Core学习之四 在CentOS上部署.net core
一.安装CentOs 以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了. 1.下载 现在没法FQ,就算是FQ网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是 ...
随机推荐
- 阿里云CentOs7上安装Mysql
前提:虽然yum源上有mysql,但是好像没有mysql-server,所以我们还是选择自己从官网上下载安装 一.新建文件夹,然后下载解压 cd /usr/ #新建mysql文件夹 mkdir mys ...
- UVA 12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)
题目链接:https://vjudge.net/problem/UVA-12412 题目大意 略. 分析 比较大规模的模拟,注意输入输出,浮点数精度,还有排名相同的输出顺序,还有一些边界情况处理. 代 ...
- 深入分析Service启动、绑定过程
Service是Android中一个重要的组件,它没有用户界面,可以运行在后太做一些耗时操作.Service可以被其他组件启动,甚至当用户切换到其他应用时,它仍然可以在后台保存运行.Service 是 ...
- Java工具之NotePad++使用技巧
按住Alt键 拖动鼠标左键 批量添加 如,等 批量添加逗号, 下面, 竖排 变 横排 ctrl + f 使用正则表达式 \r\n 替换换行符 使用:sql语句中的 过滤条件 in中,往往适合范围查找 ...
- Java开发系列-Cookie与Session会话技术
概述 会话技术:当用户打开浏览器的时候,访问不同的资源,直到用户将浏览器关闭,可以认为这是一次会话.会话技术产生是由于Http请求是一个无状态的协议,它不会记录上次访问的内容,用户在访过程中难免产生一 ...
- crontab中反引号和$()无效的解决
问题描述 1.增加了一条crontab,删除本月中2天以前的日志 10 02 * * * /bin/find /data/logs/php/$(date +%Y%m)/ -mtime +2 | x ...
- Python全栈开发:基本数据类型
1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2 ...
- JAVA数据结构之数组
接下来的几篇博文会在最近仔细研读数据结构与算法的书籍后会摘录一些要点和总结一些自己的心得体会,帮助大家更深入地理解java中的数据结构和一些基本的算法,同时巩固自己数据结构和算法这些最基础的计算机知识 ...
- thinkphp 参数绑定
参数绑定是指绑定一个参数到预处理的SQL语句中的对应命名占位符或问号占位符指定的变量,并且可以提高SQL处理的效率,需要数据库驱动类的支持,目前只有PDO和Sqlsrv驱动支持参数绑定功能. 富瑞华大 ...
- memcached 技术支持
1. Install sudo apt-get install memcached 2.启动和停止 启动: service memcached start 停止: service memcached ...