- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
5月份时曾部署上线了C++的Web服务器,温故而知新,本篇文章梳理总结一下部署流程知识; 。
- 最初的解决方案: https://blog.csdn.net/BinBinCome/article/details/129750951?spm=1001.2014.3001.5501
- 后来的解决方案: https://blog.csdn.net/BinBinCome/article/details/129796690?spm=1001.2014.3001.550
以下是本文的大概内容思维导图:
原理: 当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程 忽略 HUP 信号 ,要么让进程 运行在新的会话 里从而成为不属于此终端的子进程.
命令: nohup (no hang up,不挂起):用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。 使用:
nohup ./IM_chat >> IMchat.log 2>&1 &
- ./IM_chat : 当前文件目录下的新坑项目可执行文件
- >> IMchat.log 2>&1: 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 IMchat.log 文件中
- & : 让命令在后台执行,终端退出后命令仍旧执行
其他知识: 1、Linux中的0、1、2: 0是standard input,标准输入,1是standard output,标准输出,2是standard error,标准错误输出 2、停止运行进程的方法: ps -aux | grep "IM_chat" Kill - 9 进程号PID AI回答版知识: 在Linux中,0、1、2是特殊文件描述符,用于表示标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。它们在I/O重定向和管道操作中起着重要的作用.
服务跑起来后,过了段时间访问自己的写的webserver服务器里放的个人主页页面发现竟然挂了!于是检查日志没发现啥问题,于是尝试让进程运行在新会话的方法; screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。如果有大量命令需要在稳定的后台里运行,可以避免对每条命令都做这样的操作; 。
yum -y install screen # 安装screen
screen -dmS sessionname # 建立一个处于断开模式下的会话,sessionname可更改为自己的服务名
screen -list # 列出所有会话,查看是否建立会话
screen -r sessionname # 重新连接指定会话,运行自己的服务
用快捷键CTRL + a + d 来暂时断开当前会话。退出终端连接,查看服务是否稳定运行 。
本次最初方案即srceen中组合nohup加上&的组合拳,终极版还能加上systemctl配置开机自启!的参考文章:
平稳运行大概大半个月后,偶然发现服务又挂了,不能忍了个人主页谁天天看在不在运行啊!直接上脚本每一段时间自动检测一下服务是否运行中,没运行的话就重启一下!(以下脚本可自己定义去修改,非正式使用脚本) 。
#!/bin/sh
while true
do
ps -ef | grep "temporaryfile" | grep -v "grep"
#查找系统中含有"temporaryfile"字符的进程,并且排除grep本身的进程。
if [ "$?" -eq 1 ]
#如果未运行
then
python3 /home/xxx/xxxxxx.py
#启动应用,修改成自己的启动应用脚本或命令
echo "process has been restarted!"
else
echo "process already started!"
fi
sleep 60
done
参考文章: https://zhuanlan.zhihu.com/p/599421452 。
虽然脚本的办法挺不错的,服务一直运行到今天2023/9/3都没有挂过,但是不由得思考两个问题 1、最开始的webserver服务为什么会挂掉?看日志也没有分析出原因 2、大型企业的后台服务是怎样运行维护的呢?不至于我这样一个一个的手动启动和查进程关闭或者使用脚本吧 。
ai回答: 大型公司的后台Linux部署通常采用更为复杂和全面的解决方案。这些解决方案可能包括:
服务挂掉的原因由于时间久远(大概几个月前)很难追溯了,但是第二个问题却是可以继续推动无限进步! 。
1、 Docker技术: 看完了w3c教程成功入门并用其搭建vulhub靶场过; https://www.w3cschool.cn/docker/docker-command-manual.html 2、 自动化部署工具: K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,这个看来得学学了; 3、 负载均衡和高可用 : 负载均衡集群--知乎,打开新世界大门原来负载均衡技术的实现除了我知道的nginx软件技术以外还有硬件技术的实现; 4、 日志和监控工具 :Elastic Stack(Elasticsearch Logstash 和 Kibana) Elastic Stack,通常缩写为ELK,是一种流行的三合一日志集中、解析和可视化工具,可将来自多台服务器的大量数据和日志集中到一台服务器中。 ELK Stack 包含 3 种不同的产品: Logstash Logstash是一个免费的开源数据管道,它收集日志和事件数据,甚至处理数据并将其转换为所需的输出。使用名为“ beats ”的代理将数据从远程服务器发送到logstash。“ beats ”将大量系统指标和日志发送到Logstash,然后对其进行处理。然后它将数据提供给Elasticsearch。 弹性搜索 Elasticsearch基于Apache Lucene构建,是一个开源分布式搜索和分析引擎,适用于几乎所有类型的数据——包括结构化和非结构化数据。这包括文本、数字和地理空间数据。 它于 2010 年首次发布。Elasticsearch是ELK堆栈的核心组件,以其速度、可扩展性和 REST API 着称。它存储、索引和分析从Logstash传递的大量数据。 Kibana 数据最终传递给Kibana,这是一个与Elasticsearch一起运行的 WebUI 可视化平台。Kibana允许您探索和可视化来自 elasticsearch 的时间序列数据和日志。它在直观的仪表板上可视化数据和日志,这些仪表板采用各种形式,例如条形图、饼图、直方图等.
要学的东西还有很多啊,无限进步! 以下是一些参考文章.
参考文章:
最后此篇关于Web服务器部署上线的踩坑流程回顾与知新的文章就讲到这里了,如果你想了解更多关于Web服务器部署上线的踩坑流程回顾与知新的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
当我们浏览网页时,我们想对网页内容如文章、评论中的观点持赞同或反对意见时,可以通过点击网页中的“顶”和“踩”来进行投票。而整个交互过程,开发者可以通过ajax异步来实现,从而提高用户体验
我以为我了解了python中列表切片的基础知识,但是在切片上使用负步骤时收到了意外错误,如下所示: >>> a = list(range(10)) >>> a [0, 1, 2, 3, 4, 5, 6
本文实例为大家分享了基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码,供大家参考,具体内容如下 数据库操作: ?
我是一名优秀的程序员,十分优秀!