我有一个正在执行 bash 脚本的 django 应用程序。我需要重新启动 nginx 服务器,所以我运行/etc/init.d/nginx reload效果很好。我一直在使用restart uwsgiuwsgi,但我需要正常重新加载而不是硬重启服务器。
我怎样才能做到这一点?
我目前正在通过 .bashrc 运行 bashreload uwsgi函数subprocess.popen。它似乎只是重新加载调用子进程的进程,而不是由 uwsgi 实例托管的所有站点。importing uwsgi并且运行uwsgi.reload似乎也只影响调用过程。是否有通过 python 或 bash 切换 uwsgi 的开关,允许重新启动所有 uwsgi 进程
我目前这样做:
PYTHONPATH=/home/$USER:/home/$USER/respository:/home/$USER/repository/python-stuff
Run Code Online (Sandbox Code Playgroud)
我怎样才能使 PYTHONPATH 可以包含所有子目录?
PYTHONPATH = /home/$USER/....and-all-subdirectories
Run Code Online (Sandbox Code Playgroud) 一个问题想出了StackOverflow上询问写init.d在Python脚本。一条评论指出这些脚本应该在 shell 中编程,而不是在 Python 中。正在init.d用 Python编写脚本:
知道任何噩梦场景,或者这条规则是否是用某些系统管理员的血写的,那就太好了。
我正在运行一个带有各种 Vassals 的 uwsgi Emperor,每个 Vassals 都为来自不同 virtualenv 的特定 Python 应用程序提供服务。由于 uwsgi 是用它自己的 Python 2.7 解释器编译的,因此尝试在其中使用带有 Python 3 的 virtualenv 会在 vassal.log 中产生以下错误:
ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)
我相信这个错误的根源是 uwsgi 使用的是它内置的 Python 2.7 解释器,而它运行的 virtualenv 目录只支持 Python 3 解释器。事实上,当我使用另一个 uwsgi(只需将它安装pip install uwsgi在同一个 virtualenv 中)时,错误就会消失。但是,我希望一个皇帝统治几个不同的 virtualenv,所以在每个虚拟环境中安装一个单独的 uwsgi 不是一种选择。
根据Stackoverflow 上的这个答案,解决这个问题的正确方法是使用不同的 Python 解释器编译 uwsgi 作为可加载模块。在我采用这种方法之前,我想知道如何配置我的 Vassals 以使用另一个解释器插件。
现在我有一个皇帝,它从我的 /etc/rc.local 启动,并具有以下设置:
[uwsgi]
uid = www-data
gid = www-data
master = true
emperor = /etc/uwsgi/vassals
daemonize = /var/log/uwsgi/emperor.log
Run Code Online (Sandbox Code Playgroud)
然后我有一堆 Vassals …
我想安装 python 和 pip 的第 3 版,但发出了
sudo apt-get install python-pip python-dev
Run Code Online (Sandbox Code Playgroud)
我如何卸载 python 和 pip,我试过 sudo apt-get uninstall 但没有用,正确的命令是什么?
由于我无法控制的原因,我们的网站由托管服务提供商托管,该提供商将 IIS 用于其服务器。他们目前通过 cgi-scripts 提供 PHP 和 ASP,以及 Python 和 Perl。
我想重新设计、重新编写我们的网站,并想从 PHP 更改为 Python/Django 设置。托管服务提供商对建议持开放态度,但明确表示“我们真的不知道 Python 是什么,也不知道它是如何工作的,但如果您能向我们解释,我们会尽力为您设置所需的一切” .
但是,我可能知道如何在 apache/mod_python 上的共享托管环境中设置 Django,但我不知道如何在 IIS 上设置它,当然也不知道如何为共享托管环境设置它。我用谷歌搜索了一下,但我找到的大部分资源都假设系统管理员 1) 知道 Python/Django 和 2) 正在为他的站点使用专用的 IIS 托管。
有人可以解释我如何向我的托管服务提供商解释这个过程,或者给我指点我可以转发给我的托管服务提供商的好的、详细的资源吗?请记住,运行主机的人可能知道关于 IIS 的“一切”,但不知道如何处理 Python。
我最近开始使用 OSX 来管理我的 linux 机器,所以我对在 OSX 上使用 linux 程序非常陌生。
我想使用带有 Ansible 的 Vagrant 来引导我的开发环境,所以我需要先安装它。
但是我发现了两种在 OSX 上安装 Ansible 的方法:
点子:http : //devopsu.com/guides/ansible-mac-osx.html
自制:https : //github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb
我已经使用 pip 方法安装了 Ansible,因为我首先遇到了该指南。
这两种方法的优缺点是什么?我应该使用 pip 还是 homebrew 安装 Ansible?
我发现轻松安装会干扰自制软件:
Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:
easy_install
easy_install-2.7
Run Code Online (Sandbox Code Playgroud) 从命令行运行时,要从特定注册表中提取,我可以运行以下命令:
dockerCommand=$("aws ecr get-login --profile profileName --region us-west-2")
$dockerCommand (which looks like docker login -u AWS -p ..longPassword.. -e none https://ACCTID.dkr.ecr.us-west-2.amazonaws.com
docker pull ACCTID.dkr.ecr.us-west-2.amazonaws.com/REPO/NAME:TAGNAME
Run Code Online (Sandbox Code Playgroud)
如果我想要一个不同的注册表,我会更改区域或配置文件名称
用 docker-py 试试这个,我有
import boto3
import docker
dockerClient = docker.from_env()
session = boto3.setup_default_session(profile_name='vzw')
client = session.client('ecr', region_name='us-west-2')
token = client.get_authorization_token(registryIds=[registryId])
username = 'AWS'
password = token['authorizationData'][0]['authorizationToken']
registry = token['authorizationData'][0]['proxyEndpoint']
regClient = dockerClient.login(username, password, registry)
Run Code Online (Sandbox Code Playgroud)
但dockerClient拒绝与以下内容的联系:
错误的用户名或密码
从那里开始,一旦工作正常,我将想要使用 docker 客户端拉/推在注册表之间移动图像。
是正确的方向还是我应该尝试完全使用 shell 脚本来实现?(Python 对于描述每个注册表中的内容的 boto 调用特别有价值)
我正在使用 Python-LDAP over SASL(DIGEST-MD5) 将我们的 AD 与在 Linux 上运行 Python 的 Web 服务集成,以查询 AD 2012 用户属性(部门、部门、电话分机、电子邮件等)。在针对 AD 2003 解决特定于我的服务的问题后,我开始遇到针对我们的新 AD 2012 的 SPN 错误,即摘要 uri 与服务器上的任何 SPN 都不匹配。我已经交叉引用了两台服务器的 SPN 列表,它们包含彼此相同的类似物。
这是通过运行修复的:
setspn -A ldap/<Domain_Name> <Computer_Name>
Run Code Online (Sandbox Code Playgroud)
请注意,即使运行以下命令,创建服务帐户也无法修复我的 SPN 错误:
setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>
Run Code Online (Sandbox Code Playgroud)
仅使用 sasl_interactive_bind_s() 将 SPN 添加到本地机器 SPN 列表才适用于我的 Python-LDAP 服务。我还应该注意,如果我使用 simple_bind_s() 可以跳过 SPN 步骤,但此方法以明文形式发送凭据,这是不可接受的。
但是我注意到该记录只在 SPN 列表上停留了大约一分钟然后消失了?运行 setspn 命令时没有错误,事件日志完全为空,任何地方都没有重复项,在基本 dn 上使用 -F …
目标是从 stdin 读取 zip 文件并解压缩到 stdout。
Funzip 有效并且是我正在寻找的解决方案,zip 包含一个文件,不幸的是,当压缩文件大小约为 1GB 或更大时,funzip 会失败:
funzip error: invalid compressed data--length error
Run Code Online (Sandbox Code Playgroud)
更新:我发现上述错误可能并不表示实际错误。比较两个未压缩的文件,一个是传统解压缩,另一个是通过管道使用 funzip(将上述错误写入 stderr),这些文件是相同的。我想保持这个开放,所以这可以被确认或报告。
使用python的相关解决方案: 解压缩通过管道飞入的文件
然而,这个输出被定向到一个文件。
python ×10
linux ×4
uwsgi ×2
amazon-ecr ×1
ansible ×1
bash ×1
compression ×1
django ×1
docker ×1
iis ×1
init.d ×1
ldap ×1
mac-osx ×1
pip ×1
pipe ×1
spn ×1
ubuntu ×1
ubuntu-16.04 ×1
unix ×1
vagrant ×1
virtualenv ×1
web-hosting ×1