Windows 2003上 SaltStack/Salt 和 psutil 可能存在的问题及解决
今天把salt安装在windows 2003上,发现无法启动,随之而来的是一个有一个的坑,让我们一起逐个排查。
问题一(salt无法启动)
salt无法启动,错误结果如图:
解决
这种错误完全无厘头呀,本着相信salt的原则,我们看看python能不能正常启动,由此产生新的问题。
问题二(python无法启动)
启动C:\salt\bin\python,发现仍旧无法启动。这就奇怪了,我有理由相信这可能是salt自带的python的问题。那么从Python的官网下载个新包Python2.7.12看看,安装后发现官网的Python启动正常。莫非是初始化了一些环境变量?回过头来再去看salt中的python能不能用,奇迹般地好了~
解决
重新安装一次官网的Python,然后再启动salt中的python试试。
原因在于,这台windows 2003原来装过python,但可能因为后来卸载不彻底,以及中间各种软件安装影响了一些环境变量,导致salt中python无法正常启动。
问题三(缺少MSCVCR100.dll)
既然python启动问题已经搞定,那就再去启动salt-minion吧。这次开启debug模式,看看能否正常启动,启动不了也会有详细信息。执行C:\salt\salt-minion-debug.bat,结果没过多久报了这个错:
解决
既然windows 2003这位老先生明确告诉我们缺少了MSVCR100.dll这个动态链接库,那就找到它吧。这个库是vc++2010里的,所以从微软的官网下载Microsoft Visual C++ 2010 可再发行组件包 (x86), 安装完毕后,再启动salt-minion就不会报错了。
问题四(psutil中 ‘from . import _psutil_windows as cext’ 报错)
由于项目中用到psutil,自然想到要检验下salt自带的python第三方psutil能否正常使用,结果很遗憾:
这是什么鬼?不能导入的原因太模糊了吧,dll导入失败?!哪个dll?
去报错相应的目录下看看吧,也就是C:\salt\bin\lib\site-packages\psutil\下,发现要导入的_psutil_windows包其实是_psutil_windows.pyd这个链接库。导入这个链接库失败,那么就看看这个链接库到底链接了什么东西。
使用dependency walker去瞅瞅,发现是这样的问题:
解决
把缺失的这两个dll(msvcr90.dll, msjava.dll)补上?补上后仍然有问题,看下文。
问题五(At least one module has an unresolved import ...)
补上两个dll后,还显示一个错误:
根据图片中的显示,大概是iphlpapi.dll和kernel32.dll的导入或被导入出现了问题。但是这两个是系统的呀,能奈之何?
先不管这个错误,尝试运行下python,然后import psutil,看看会不会报错:
看来还是老错误,无法避免。
会不会是salt预装的psutil有问题?去C:\salt\bin\scripts\下,pip uninstall psutil卸载掉再重装试试,结果还是不行。
这就非常奇怪,突发奇想该不会是高版本的psutil不支持低版本的系统导致的吧?于是再次卸载掉psutil,装了个1.x版本试验了下,结果可以了。
解决
安装一个低版本的psutil试试,注意你用到的psutil的功能在低版本中可能不存在。
问题六(salt模块依赖的wmi可以用吗?)
从salt官网上看到关于windows 2003这样的描述:
貌似是wmi需要额外安装。
那就先看看wmi能不能正常导入吧:
很好,wmi库可以正常导入,项目要用到的wmic(第一次在cmd中输入,会自动安装)也能正常使用,皆大欢喜。
总结
在低版本的系统上,可能会有各种各样想不到的坑。再次做个记录留作备忘,也给将来可能踩坑的同学借鉴经验。
Windows 2003上 SaltStack/Salt 和 psutil 可能存在的问题及解决的更多相关文章
- MongoDB与.NET结合使用一(mongodb在windows 2003上的安装)
mongodb发展至今已经到2.6版本了,自从获得了1亿美元的风投之后,发展速度更是比以前快了很多,前段时间因为要用缓存,也比较了mongodb,大家也都觉得比较适合做无关系化的大数据存储,所以系统统 ...
- windows 2003子目录权限丢失及子目录权限无法继承更改的解决方法
对于ntfs格式的分区,不当的操作方式很容易引起各种访问权限问题. 早上,给公司服务器配置网站权限,其中一个网站添加IIS_User权限删除了everyone权限后,发现网站无法访问,要求输入用户名和 ...
- windows 2003 上安装windows liver writer
下载"resource hacker"软件,修改exe文件,找到config--config0-0 替换为: <?xml version="1.0" en ...
- windows 2003 iis php
我的环境 是 windows server200 ee iis6.0 程序是php 1.一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6. 2.下载 windows ...
- mongoose在Windows Server 2003上不能访问问题的解决
这两天在部署EasyDarwin开源流媒体服务器到Windows Server 2003的时候,奇怪地发现,在Windows 2003上面,mongoose的web管理端口居然无法访问,但通过nets ...
- windows 2003自动登录的具体步骤
在win2003系统中,使用最多的可能就是远程操作了,关于远程操作的那些事很多用户还是有些迷茫的.如果win2003系统远程重启后,要重新登录系统十分的麻烦,如何才能实现重启后的自动登录呢?让高手告诉 ...
- windows 2003 server 远程桌面禁用本地资源,磁盘驱动器,串行口,复制文件
首先进入组策略编辑器(开始-运行-gpedit.msc) 不要让用户在远端桌面和本地直接拷贝文件在远端桌面上进入它的组策略编辑器在 计算机配置->管理模板->Windows组件->终 ...
- Windows 2003 FastCgi安装环境
Windows 2003 IIS+PHP5.4.3 安装教程 一.准备相关组件 安装前,先安装IIS. 1.安装FastCgi for IIS6 Fastcgi官方网址是:http://www.iis ...
- Windows 2003 VPN配置步骤[转]
一,服务器端:Windows 2003 VPN代理的配置方法如下: 1.关闭防火墙,用“管理工具”中的“服务”将“Windows Firewall/Internet Connection Sharin ...
随机推荐
- 超级迷宫 nabc
特点之一:益智模式 N 我们的游戏需要一点点益智答题使其精彩 A 在走迷宫的过程中,会遇到某一个点,出现一个益智小问题,答对即可通过 B 增加游戏的趣味性,吸引用户 C 答题游戏不少,前不久腾讯的手 ...
- SPSS常用基础操作(1)——变量分组
有时我们需要对数据资料按照某个规则进行归组,如 在上述资料中,想按照年龄进行分组,30岁以下为组1,30-40岁为组2,40岁以上为组3 有两种方法可以实现: 1.使用计算变量功能 <1> ...
- 并发编程 06—— CompletionService :Executor 和 BlockingQueue
Java并发编程实践 目录 并发编程 01—— ThreadLocal 并发编程 02—— ConcurrentHashMap 并发编程 03—— 阻塞队列和生产者-消费者模式 并发编程 04—— 闭 ...
- update 多表
update energylog set value=(a.value+c.value)/2from energylog as a, energylog as cwhere a.idvariable= ...
- 鼠标滚轮控制侧边div上下翻动效果
css部分: <style> * { margin: 0; padding: 0;} .wrap { width: 1000px; margin: 0 auto; overflow: hi ...
- CentOS7下安装FTP服务
1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 yum -y install vsftpd 1.2.修改配置文 ...
- Node.js 路由
我们要为路由提供请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相应的代码. 因此,我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数.这一功能应当属 ...
- jquery ajax跨域请求webservice webconfig配置
<configuration> <system.web> <compilation debug="true" targetFramework=&quo ...
- iOS打开百度地图、高德地图导航
1.判断手机里是否已经安装了百度地图或者高德地图: BOOL hasBaiduMap = NO; BOOL hasGaodeMap = NO; if ([[UIApplication sharedAp ...
- MapReducer程序调试技巧
写过程序分布式代码的人都知道,分布式的程序是比较难以调试的,但是也不是不可以调试,对于Hadoop分布式集群来说,在其上面运行的是mapreduce程序,因此,有时候写好了mapreduce程序之后, ...