.NET CORE 部署到 CentOS7全部过程
从WIN系统 转到linux系统来,简直让我放弃,抓狂,我就想部署个网站怎么那么多问题。。。不过还是赚钱要紧。
下面记录一下 从头到尾 怎么部署到 centos7entos7上面去
首先你要有台linux系统及其 centos (好吧,这是废话,阿里云随便花几十块买一个试试)
1. 安装图形界面。这很WIN。 我前面说了,所以图形界面救了我的命 至于为什么要这样,别问我,问我就就告诉你3部曲
yum groups install 'MATE Desktop' # 安装图像界面 yum groups install 'X Window System' # 图像系统 我也不知道怎么接受,没这个,你进不去 systemctl set-default graphical.target #设置图像界面为启动项 reboot #重启
2.安装nginx (编译安装我就不说了,度娘一大堆资料)
1. 安装 yum install -y nginx 2. 启动nginx并设置开机启动 systemctl start nginx systemctl enable nginx 3. 验证nginx是否启动 ps -ef | grep -v grep | grep nginx 4. 查看nginx配置文件 vi /etc/nginx/nginx.conf 5. 对于yum安装的nginx来说,要想使配置文件的修改生效,需要重启nginx,运行以下命令: systemctl restart nginx
3.上传文件配置上传项目文件会用到。那个 FTP我搞的头大,WIN下面安装一个软件 点点就好了
yum -y install lrzsz 上传文件命令 rz
4.下载xshell 工具 (我在这里下载的 https://www.netsarang.com/zh/) 当然这个工具看自己了 用WIN10自带也可以
5.在 centos7上安装 .NETCORE SDK 一路 y 就行了,别问我为什么,y就行了,我也不知道
官方地址 https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current 添加dotnet产品密钥命令 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm 安装.NET SDK命令 sudo yum update sudo yum install dotnet-sdk-2.2
6. .NET CORE 发布
1.进入对应的目录 cd /xxxxx 2. 用dotnet 命令启动试试 dotnet [xxxx].dll xxx是你生成的项目*.dll 后面是更改端口,因为默认是 5000 https 5001 显然不用它的是不是 dotnet WebApplication1.dll --server.urls "http://*:1818"
好了。本地访问下,咦 是可以了,但是我关掉 xshell 就嗝屁了,这怎么行呢。好了看下面。(官方也有用服务,但是貌似我没整好。)
那用守护进程来 nginx代理
好。我们先来用守护进程 让它永久启动先
7.用守护进程让 .netcore网站一直在启动状态
1.安装supervisor yum install supervisor 2.启动服务 看配置文件地址 这里自己注意下,看你的安装配置文件在里,错了会启动失败,前面有图形界面了可以自己查看 supervisord -c /etc/supervisord.conf 3.编辑配置文件 路径在 /etc/supervosprd.d 下面创建一个随便你自己取名的 .ini 比如 netcore.ini 内容是下面的 [program:DeployLinux] #DeployLinux 为程序的名称 command=dotnet /apps/api/api/xxx.dll --urls="http://localhost:1818" #需要执行的命令 directory=/website/test #命令执行的目录 environment=ASPNETCORE_ENVIROMENT=Production #环境变量 user=root #用户 stopsignal=INT autostart=true #是否自启动 autorestart=true #是否自动重启 startsecs=3 #自动重启时间间隔(s) stderr_logfile=/var/log/ossoffical.err.log #错误日志文件 stdout_logfile=/var/log/ossoffical.out.log #输出日志文件 仔细看看,commadn是不是跟上面那个doten xxxx.dll很相似啊。对就是这样,不解释了
好了,我们关了 shll,呦 ,呦 , 呦 ,可以访问了啊。不得了了了。 真鸡儿费神,部署个网站要上天了,然鹅你发现,重启后又不行了。我丢,原来没设置重启服务器 自启守护软件
启动设置
--------------配置自启服务 路径 /etc/systemd/system 自己创建一个 sv-auto.service (这个文件名称自己创建) 服务文件内容填写 [Unit] Description=sv auto #描述 After=rc-local.service nss-user-lookup.target [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf ExecStop=/usr/bin/supervisord shutdown ExecReload=/usr/bin/supervisord reload killMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target --设置开机自启命令 systemctl is-enabled [这个是你的文件名] systemctl is-enabled sv-auto
8.Nginx部署的配置文件,因为默认,它会默认找一个目录,在这个目录新建自己的配置文件 比如
server { listen 80; server_name example.com *.example.com; #没域名删掉可以 location / { proxy_pass http://localhost:1818; 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; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
好了。这样就正在达到了可以真正 可访问的站点了, 如果在 WIN服务版本下,远程连接-安装IIS-新建项目-指向目录-完事了
从WIN过来,一下真的很难接受,为什么那么麻烦,可定很多人说弄弄脚本什么的。我们又不是专业的运维 没太多时间花这世界上,很多时候我们需要更快的解决问题,工具本来就是为了解决问题,而不是制造问题
最后放一下,微软自己官网的教程
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.1
下一步写写容器怎么部署。