携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
问题
nginx作为服务器发布的标配,涵盖老项目,多应用快速融合共享cookie信息,以及现代前后端应用,云台自动化发布部署,属于老中青三代都超级喜欢的一款中间件,但经常因其nginx reload卡Pid的问题内心惶恐,前端因为有绝大部分脚手架都带的有代理,开发环境基本没啥问题,但遇到服务端发布部署,免不了用Nginx,同样的,后端对nginx的依赖必不可少,但很多对其配置也无法一气呵成。
之前找到一款,已用了几个月,觉得比较好用,同样的,不可能只推荐工具,不说完整搭配,往下看,我菜配成了啥样。
配菜
nginxWebUI、PM2、nginx、VMware(虚拟机)、打造开发武器库
- nginxWebUI
将nginx繁琐的配置文件修改操作,更改为数据的增删改查,不再到处找修改教程,具体请参考,我主要因为在linux服务端部署部署拷贝问题及配置追溯及重启等问题,另外就是本机环境一些基础环境及工具需要频繁开启的问题. - PM2
常用的node进程管理工具,一般的脚本的程序都可以,比如java,比如dotnet,如果你在windows很讨厌java的多个黑框,这个是个不错的选择,同样的我看重的是其开机应用自启动相关功能,让我可以随时有选择的启动我想要的应用项。 - VMware(虚拟机)
开发最痛苦的事情莫过于电脑上装了一堆额外负荷,比如根据多套数据库,redis,nacos服务注册发现,docker等等,甚至是jekenis等自动化部署应用,有些就是使用时启动,一般情况下可能很久都不回去用,或者用的时候要启动一堆.
化学反应
- 单个能量有限,但组合起来用,就很有意思,通过PM2+VMware能够把你所需的基础应用环境,数据库环境,一键启动,关键的是,环境可以各种造,无需担心应用机环境一堆的问题,还有就是环境准备得搞半天。
- 本机的一些自己搞的插件,或是工具,让他随时准备着,再也不用担心时间太久工具丢失问题。
原版本部署如下,此处就不详细介绍了,
使用时发现,配置同一端口时如图,其生成的nginx配置有误,
我对此处进行了优化
安装PM2及相关用法 参考之前写过的linux node边写边记 nginxWebUi的启动方式如下:
pm2 --name nginxWebUI start java -- -jar -Dfile.encoding=UTF-8 E:/全局环境/nginxWebUI.jar --server.port=8090 --project.home=E:/全局环境/nginxWebUI/
虚拟机
不习惯这个命令,参考下文,开启ssh用MobaXterm_CHS进行连接
如果你不想用ssh去传发布文件,在服务器部署后也可以通过此处进行压缩上传,上传后会自动解压,目录也会留存
重启nginx也无需去服务器,打开在重启配置即可
当然如果再增加webshell等功能,就可进一步简化操作。
Show Me The Code
以下是虚拟机(centos7 )常见的问题处理
网卡处理
ip addr
vi /etc/sysconfig/network-scripts/ifcfg-ens33
sudo service network restart
把这一项改为YES(ONBOOT=yes)
虚拟机下CentOS7开启SSH连接
1、 首先,要确保CentOS7安装了 openssh-server,在终端中输入 yum list installed | grep openssh-server
此处显示已经安装了 openssh-server,如果又没任何输出显示表示没有安装 openssh-server,通过输入 yum install openssh-server
2、 找到了 /etc/ssh/ 目录下的sshd服务配置文件 sshd_config,用Vim编辑器打开
将文件中,关于监听端口、监听地址前的 # 号去除
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
PasswordAuthentication yes
输入netstat -an | grep 22 检查 22 号端口是否开启监听
Python版本升级
- 安装
epel:可以理解成官方提供的软件包通常不够,这个是一个第三方软件源提供方
yum install epel-release
yum search python3
yum install python36
python -V
- 更改软连接
cd /usr/bin
ls -al python --查看当前软连接
ln -sf /usr/python/bin/python3(python 安装目录) /usr/bin/python
/**
* 找不到pip
*/
yum -y install python-pip
报错信息:protobuf requires Python '>=3.7' but the running Python is 3.6.5
更新命令:python -m pip install --upgrade pip
//升级了python 后
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
编辑usr/bin/yum 首行python->python2.7 指定原来的版本
PM2 windows 开机启动问题
npm i pm2-windows-service -g
pm2-service-install
//可行方案
> npm install pm2-windows-startup -g
> pm2-startup install
结尾
最近特殊情况,技术调研相关,对一些功能做验证比对,还有日常的一些应用快上百个个了,实在是有点儿乱,所以用以上的工具做了梳理,感觉给我节省了很多的时间开销,java、net6、python、node服务端,还有一堆前端轮及应硬件联调轮番上阵,都是被迫搞出来的,可能你机器的情况不如我的复杂,但关键是,能解决后续问题就好,很多细节其实是略掉了,篇幅有限怕老哥们看着枯燥,如果你决定实施,应该是能解决你绝大部分的疑惑的。
最终还是想PS以下
就语言学习,从实践中来,往实践中去,最终都是为了解决问题,优先开始还是精通一门,辅助一门,但辅助的一门初期并不能作为优势,时间和积累沉淀后,会融合,发力和评价期属于横向对比单端,你都比常规的单端知识范畴更广,才是最终多端优势的体现,此时你才会有3种乃至更多的选择,语言是解决问题的工具,编程思想才是技能,最终的问题实践,是由技能解决,工具实现的,希望最后这段话能给各位有语言执念的老哥一些开导吧,如果你还有耐心看到此处的话!