热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vagrant使用及trusty的配置记录

2019独角兽企业重金招聘Python工程师标准##前言虽然日常的学习和工作都在windows上完成,但与学习和工作无关的业余时间里,我喜欢捣鼓l

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

##前言 虽然日常的学习和工作都在windows上完成,但与学习和工作无关的业余时间里,我喜欢捣鼓linux。在将光盘驱动换成500G硬盘之后,我就在新硬盘上装了个fedora 20系统。但不得不让人吐槽的是,fedora系统并不尽如人意,比如要自己编译vim(我添加了各种支持,python、python3、ruby、tcl、ruby、lua,省得以后再为某种使用重新搞一次编译),fedora上居然提示我xsubpp的问题(谷歌也不得其解)。
在浏览osc的相关内容的时候,我发现了vagrant(应该是老早关注docker的时候,想在windows上使用docker,docker官方的文档里提到了vagrant)。使用了这货之后,发觉它相当适合我。最近心血来潮,想学学django开发,于是就开始了配置环境之路。
##vagrant的简介 vagrant就是一个虚拟化工具,用于创建和配置轻量级、可重用、便捷的开发环境,支持多种虚拟化平台(virtualbox,vmware,hyper-v等)。另外加一点,开发vagrant的HashiCorp公司是相当不错的,除了vagrant之外,它还有packer(如其字面意思是打包开发环境的软件,与vagrant结合使用)和serf(这个不怎么关注)。 ##vagrant简单使用 百度搜索vagrant,可以得到一大堆的博客介绍如何使用vagrant,我就不多说,仅依凭官方文档及自己的平常使用来说明一下。
要使用vagrant,首先要下载这个软件。它提供了windows和linux的二进制版本,方便安装。我是使用virtualbox的,于是也下载安装了最新版的virtualbox。
安装好vagrant之后,根据自己的需求去找相关的打包好的box(官方文档说这是vagrant环境的包格式),当然也可以自己去打包一个box(我没有那样的折腾精神,毕竟在开发环境上没有我的个人信息,使用他人打包好的环境也是可以的)。找box的地方有两个,一个是旧的,另一个是新的。
vagrant支持自定义插件(当然是用ruby写的),为了让vagrant能够自动更新box里的virtual guest additions(或者自己更新),我谷歌到了一个vagrant-vbguest插件。根据其文档,后面的vagrantfile将添加一些内容。
ubuntu trusty版本即将发布,有一系列的新特性,但我关注的不是这个,只是想用新一点库,而且我也不用其桌面系统。于是我去vagrantcloud里找trusty,看到了ubuntu官方的cdimage里有官方的给出的box,于是就下了这个。当然有其他的版本,都是可以的,看个人需求了。
下来以后,就开始使用了,为避免box更新的麻烦,于是就自定义了一个在vagrant cloud里找不到的box。

vagrant init phm/trusty64

它会自动生成一个vagrantfile,我根据官方文档及自己的使用将其更改如下:

# -*- mode: ruby -*-
# vi: set ft=ruby :VAGRANTFILE_API_VERSION = "2"Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|config.vm.box = "phm/trusty64"# 自定义的box地址,默认是要从vagrant cloud上下载的。config.vm.box_url = "phm.box"# 不要让vagrant自动检测box的更新,因为我是不会更新这box的config.vm.box_check_update = false# 自定义的trusty主机名config.vm.hostname = "trusty-phm"# 自定义的网络端口映射config.vm.network "forwarded_port", guest: 4000, host: 14000config.vm.network "forwarded_port", guest: 8000, host: 18000config.vm.network "forwarded_port", guest: 5432, host: 15432config.vm.network "forwarded_port", guest: 80, host: 10080# 我的代码是直接推送到github或者gitoschina上的,不需要与主机同步config.vm.synced_folder "./data", "/vagrant", disabled: true# 插件vbguest的一些设置# 启用virtual guest additions的自动更新config.vbguest.auto_update = true# 不要远程下载virtual guest addtionsconfig.vbguest.no_remote = true# vboxguestaddions.iso文件的本地地址config.vbguest.iso_path = "F:/HashiCorp/VBoxGuestAdditions.iso"
end

当然要把刚刚下载来的box放到这个vagrantfile所在的目录里,并重命名成与vagrantfile里相同的名称。然后就是简单的启动命令

vagrant up

命令执行完成后,就可以用

vagrant ssh

或者用其他的终端登录工具登录了,我是用xshell的(因为是在windows上,其用户名是vagrant,密码也是vagrant,ssh地址和端口是127.0.0.1:2222)。 ##trusty的配置 ###更新软件 登录进这个trusty之后,我第一件要做的事就是更改其apt源。我用的是中科大的源,当然也可以是其他的源,oschina源也行(但不得不吐槽oschina的速度有时还是有点慢,不如中科大的,可能我是教育网用户的缘故)。更改/etc/apt/sources.list成如下

deb http://mirrors.ustc.edu.cn/ubuntu trusty main universe restricted multiverse
deb http://mirrors.ustc.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb http://mirrors.ustc.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb http://mirrors.ustc.edu.cn/ubuntu trusty-backports main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu trusty-backports main universe restricted multiverse

接下来就是更新软件,因为ubuntu的cdimage里vagrant的box版本是2月22日的,软件肯定略旧。执行

sudo apt-get update && sudo apt-get dist-upgrade

进行软件更新。更新之后最好重启一下:

sudo reboot

###安装zsh 我比较喜欢zsh(其实也是因为在osc的博客里看到有人介绍oh-my-zsh,然后到github上看到了它相当惊艳的一面,于是就决定使用它以代替bash),于是就安装zsh:

sudo apt-get install zsh

然后,再把oh-my-zsh给弄来:

curl -L http://install.ohmyz.sh | sh

之后把shell换成zsh,并对.zshrc做点小改动。

由于是要学习django,那么python是必安装的,庆幸的是trusty已经提供了最新版本的python2和python3。于是我就不去弄pyenv这种东西了。更主要的是pip(python的包管理插件)支持--user选项,即在不改动系统的python包下把包安装到用户目录下。

###编译vim 我不太喜欢ubuntu官方编译的vim,一是它的版本没有跟进,二是它的库支持不全(个人见解)。于是我克隆其github的代码(是vim在google code上版本库的镜像):

git clone https://github.com/b4winckler/vim.git

(若提示git命令未找到,那就要安装git-core,

sudo apt-get install git-core

)
在编译vim之前要把编译vim的依赖库安装好,主要是官方编译vim依赖的库

sudo apt-get build-dep vim

然后再确认依赖包是不是都安装了

sudo apt-get install libncurses5-dev python-dev python3-dev \
ruby-dev tcl-dev liblua5.2-dev libperl-dev

之后就开始进入vim源码文件夹里开始configure,选项有点多

./configure --prefix=/home/vagrant/devlibs/vim --enable-pythoninterp \
--enable-python3interp --enable-rubyinterp --enable-tclinterp \
--enable-perlinterp --enable-luainterp --with-features=huge \
--with-compiledby="Xiaoming " \
--enable-multibyte --enable-sniff --enable-cscope --disable-gpm \
--without-x --disable-gui

只在命令行操作trusty,不需要gui或者x,同时需要支持中文(multibyte),安装在用户目录而不是系统的/usr/local里。这些完成后,就是make了:

make VIMRUNTIMEDIR=/home/vagrant/devlibs/vim/share/vim/vim74

这里这个VIMRUNTIMEDIR不能错了,就是在要安装的目录里的share文件夹下,不然在编译安装之后运行vim命令会报错无法找到一些东西。漫长的等待(估计也就七八分钟时间)之后就可以执行

make install

了。然后把vim的安装目录添加进path里(必须在/usr/bin和/usr/local/bin之前,否则系统的vim会代替自行编译安装的vim)。
###vim配置 这里vim的配置我主要是使用了spf13的配置,省得自己各种麻烦去配置了。

sh <(curl https://j.mp/spf13-vim3 -L)

然后它会一路安装下去&#xff0c;包括一些插件的安装&#xff0c;只是耗时较长&#xff0c;我是大概用了15分钟才安装好的&#xff08;不得不吐槽网速跟某墙的重要性&#xff09;。
spf13我唯一不满意的是它居然默认不换行的&#xff08;代码要是很长就悲剧了&#xff09;。我是用github的配色方案的&#xff0c;在.vimrc.local里输入&#xff1a;

colo github

我还在.vimrc.bundles.before里设置了一下g:spf13_bundle_groups&#xff0c;因为我并不需要所有的插件&#xff0c;主要是去掉了一些我用不到的语言插件。
###.zshrc的配置

export ZSH&#61;$HOME/.oh-my-zshZSH_THEME&#61;"agnoster-phm"plugins&#61;(pip git wd tmux python django per-directory-history gitignore)source $ZSH/oh-my-zsh.sh# ssh
export SSH_KEY_PATH&#61;"~/.ssh/id_rsa_github:~/.ssh/id_rsa_heroku"# My Own Libs
export PATH&#61;$HOME/devlibs/vim/bin:$PATHexport http_proxy&#61;http://218.108.170.164:80

其中zsh的插件里我选取了一些可能用到的程序以及工具。per-directory-history就是把每一个目录里的执行过的命令记录下来&#xff0c;这样方便历史命令的查找。http_proxy是指http代理&#xff0c;我用的是杭州华数的代理&#xff0c;目前是免费的&#xff0c;而且速度相当不错。 ###django的配置 我喜欢前沿一点的东西&#xff0c;于是对于django我就去学最新的dev版了。首先是克隆django的版本库&#xff1a;

git clone https://github.com/django/django.git

然后安装之&#xff1a;

pip3 install -e django/ --user

之后就参考django的官方文档开始学习了。


转:https://my.oschina.net/huanming/blog/215877



推荐阅读
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 如何在Lua中调用C语言编译的动态链接库
    本文介绍了如何在Lua中调用C语言编译的动态链接库。通过详细步骤和示例代码,帮助开发者理解和掌握这一技术。参考了《Lua编程入门》一书中的相关内容,并结合实际操作经验,提供了更加清晰和实用的指导。此外,还探讨了在不同操作系统下编译和链接Lua的方法,为跨平台开发提供了有价值的参考。 ... [详细]
  • 利用Python与Android进行高效移动应用开发
    通过结合Python和Android,可以实现高效的移动应用开发。首先,需要安装Scripting Layer for Android (SL4A),这是一个开源项目,旨在为Android系统提供脚本语言支持。SL4A不仅简化了开发流程,还允许开发者使用Python等高级语言编写脚本,从而提高开发效率和代码可维护性。此外,SL4A还支持多种其他脚本语言,进一步扩展了其应用范围。通过这种方式,开发者可以快速构建功能丰富的移动应用,同时保持较高的灵活性和可扩展性。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • Django框架下的对象关系映射(ORM)详解
    在Django框架中,对象关系映射(ORM)技术是解决面向对象编程与关系型数据库之间不兼容问题的关键工具。通过将数据库表结构映射到Python类,ORM使得开发者能够以面向对象的方式操作数据库,从而简化了数据访问和管理的复杂性。这种技术不仅提高了代码的可读性和可维护性,还增强了应用程序的灵活性和扩展性。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
author-avatar
php
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有