python项目管理实践

2018-02-27 11:22:20来源:oschina作者:ishansha人点击

分享
Part1:python包管理

因为现网维护的服务器上python版本存在差异,并且大部分Linux系统自带的都是python2版本,考虑到python2已经不再更新,所以我们决定运维统一使用python3。同时,为了不影响现网中服务器上业务程序的运行,所以,我们需要重新创建了一个与系统自带或者业务的python环境相互独立的环境。通过相关的技术分析,以及测试工作,最终,我们选择conda来实现python环境管理的需求。


conda是一种包管理系统,可以非常方便的进行python的环境创建以及包管理,有Anaconda和Miniconda这两个版本,由于Anaconda包括Python本身以及几百个第三方开源项目的二进制文件,整个安装文件比较大。 Miniconda本身只是一个conda环境的安装程序,只包含Conda及其依赖项,安装文件比较小,也便于根据实际的运维需求来安装包,所以在我们的环境中使用的是Miniconda,而非Anaconda。


1. 安装miniconda


在conda官网上可以下载到Minisconda各操作系统版本的安装程序,我们选择的是Linux系统64位python3.6版本。


[test@localhost ~]$ uname -a
Linux localhost 2.6.32-642.el6.x86_64 #1 SMP Wed Apr 13 00:51:26 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux

执行miniconda安装程序


bash Miniconda3-latest-Linux-x86_64.sh

安装完后,miniconda3即为miniconda目录,里面各子目录的说明可以在conda官网上查看


[test@localhost ~]$ ll
total 112528
drwxr-x--- 22 test test 4096 Feb 24 09:43 miniconda3
-rwxrw-rw-1 test test57669415 Feb7 14:46 Miniconda3-latest-Linux-x86_64.sh
-rw-r-----1 test test 57533112 Feb8 09:04 Miniconda3-latest-Linux-x86_64.zip
[test@localhost miniconda3]$ ll
total 140
drwxr-x---2 test test4096 Feb 24 09:37 bin
drwxr-x---2 test test4096 Feb 24 09:34 compiler_compat
drwxr-x---2 test test4096 Feb 24 09:43 conda-meta
drwxr-x---3 test test4096 Feb 24 09:37 doc
drwxr-x---2 test test4096 Feb 24 09:34 envs
drwxr-x---7 test test4096 Feb 24 09:37 etc
drwxr-x--- 22 test test4096 Feb 24 09:37 include
drwxr-x--- 20 test test 36864 Feb 24 09:37 lib
drwxr-x---3 test test4096 Feb 24 09:37 libexec
-rw-r-----1 test test4299 Sep 20 06:55 LICENSE.txt
drwxr-x--- 97 test test4096 Feb 24 09:37 mkspecs
drwxr-x---2 test test 4096 Feb 24 09:37 phrasebooks
drwxr-x--- 96 test test 12288 Feb 24 09:43 pkgs
drwxr-x--- 15 test test4096 Feb 24 09:37 plugins
drwxr-x--- 14 test test4096 Feb 24 09:37 qml
drwxr-x---2 test test4096 Feb 24 09:37 sbin
drwxr-x--- 19 test test4096 Feb 24 09:37 share
drwxr-x---4 test test4096 Feb 24 09:34 ssl
drwxr-x---2 test test 12288 Feb 24 09:37 translations
drwxr-x---4 test test4096 Feb 24 09:37 var
drwxr-x---3 test test4096 Feb 24 09:34 x86_64-conda_cos6-linux-gnu

2.设置环境变量


需要将当前用户目录下miniconda3/bin加入环境变量,就可以执行conda命令,进行相关的操。并将修改写入到当前用户bashrc文件中。或者在执行miniconda安装时(最后一步就是设置环境变量)根据提示完成设置。


export PATH=$PATH:/home/test/miniconda3/bin
[test@localhost ~]$ cat .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
# added by Miniconda3 installer
export PATH="/home/test/miniconda3/bin:$PATH"
# added by Miniconda3 installer
export PATH="/home/test/miniconda3/bin:$PATH"

3.设置国内的conda镜像


国内很多大学或者研究机构开放了conda镜像给公众使用,例如下面的命令将添加清华大学的conda镜像


conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

执行完成后,在当前用户目录condarc文件中可以查看到该信息


-rw-r----- 1 test test255 Feb 22 14:25 .condarc
[test@localhost ~]$ cat .condarc
show_channel_urls:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - defaults

4.搭建squid server作为conda的代理


至此,我们已经基本完成了conda的配置,但是现网中的服务器大多无法通公网,所以,我们还需要另外部署一台squid服务器作为conda的代理。
squid的安装是通过我们自己搭建yum源完成


yum install squid

需要在squid.conf上完成相关的配置,将需要使用squid server服务器代理的网段配置允许访问(目前还没有做更加细致的squid配置设置,如果是现网使用,建议从安全方面以及性能方面做更合理的配置)


在squid.conf中填写如下信息(需要允许访问的网段为192.122.16.0/24)


acl testhosts src 192.122.16.0/24
http_access allow testhosts

5.设置conda通过squid server访问
在当前用户目录下的.condarc文件中填写squid服务器的信息(squid服务器的IP为10.10.12.13)


proxy_servers:
http: http://10.10.12.13:3128
https: https://10.10.12.13:3128

详细的说明可以参照conda官网


以上,完成了所有的conda配置,可以安装一下某个python的包试试


conda installpsutil
Part2:python开发环境搭建

为了解决日常python运维脚本的开发环境、测试环境的统一,以及更便捷的知识分享,


我们选择 jupyter notebook工具搭建我们的日常运维开发环境,即在我们是测试环境服务器上安装jupyter notebook,运维人员通过远程访问jupyter notebook,完成运维脚本测试。


jupyter官网上安装指南推荐通过conda的安装


conda install jupyter notebook

安装完成后需要完成以下配置,实现远程访问。


1. 设置jupyter note访问密码


启动ipython或者python,


from notebook.auth import passwd; passwd()

连续两次输入密码,后生成了秘钥


Out[2]: 'sha1:a9c799b407d0:66cexxxxxxxxxxxxxxxxxxxxx33bcd56b72'

2.生成jupyter配置文件


jupyter notebook --generate-config

执行完成后,将会在miniconda安装用户的家目录下 ~/.jupyter/ 下创建默认config 文件:


jupyter_notebook_config.py


3.修改jupyter配置实现远程访问


#改几个地方:
c.NotebookApp.ip = '192.122.16.120' # 即对外提供访问的ip
c.NotebookApp.port = 9527 # 即对外提供访问的端口
c.NotebookApp.open_browser = False # False即启动不打开浏览器
c.NotebookApp.password = u'sha1:a9c799b407d0:66cexxxxxxxxxxxxxxxxxxxxx33bcd56b72' # 这个就是上面生成的秘钥
c.NotebookApp.password_required = True

4.启动jupyter notebook


jupyter notebook

在浏览器输入访问地址http://192.122.16.120:9527就可以访问了
输入图片说明


输入刚才设置的登录密码即可登录


小结

通过以上的配置,已经基本上完成了python的包管理和开发环境的设置,希望以此为出发点,逐步完成对现网生成环境中上万台服务器的conda配置,以及python运维环境的设置。


这是长久以来第一次记录运维环境的部署,测试过程,称之为技术文档尚且不够,希望能在日后继续完善,多加提升文字功底,文章内容深度。


参考资料

conda官网下载链接


清华大学Anaconda 镜像使用帮助


configure-conda-for-use-behind-a-proxy-server-proxy-servers


jupyter server搭建

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台