搭建跨平台的統一python開發環境:
使用開發環境的好處:
可不用在服務器上直接修改源代碼---寫的代碼首先得入版本庫(放git或giitlab中),在本地寫代碼提交到git中.然后在服務器上git pull把代碼拉上來運行。
項目大層級目錄多用vim寫不利於管理項目--用ide管理可組織代碼結構,甚至能自動import,還可做到集成的功能:如可直接在ide中運行我的服務,甚至解釋器使用遠程在本地進行調試(如果在本地寫python腳本的話要在本地安裝一python腳本,那還得各種依賴--這就麻煩)。
不管何種開發語言,目前用的比較多的開發環境基本就是Vagrant+VirtualBox搭建的虛擬開發環境,這種開發環境的好處就是一次搭建處處可用,各個平台和系統都可以使用。開發團隊中,可以自己制作一個box,讓團隊的成員方便安裝,保證每個人的開發環境都是一致的。
Vagrant可以創建一些共享目錄,讓物理機和虛擬機使用共享的目錄,虛擬機只提供開發環境。這樣的話,開發環境隨處可用。代碼目錄只要在物理機上共享就可以使用這套開發環境。
一.Windows7 PowerShell 2.0升級到 PowerShell 5.1:
這里使用的是win7系統,可能會出現powershell過低的情況,所以需要先檢查本機的powershell版本:
Windows + R 輸入powershell回車,打開命令行窗口,輸入$PSVersionTable
,查看powershell版本號
Windows7 PowerShell 2.0升級到 PowerShell 5.1:
1.安裝必要的.net插件 確保你已經安裝了.net 4.5以上。如果沒裝,直接裝.net 4.6即可Microsoft .NET Framework 4.61 https://www.microsoft.com/zh-cn/download/details.aspx?id=49982 1.2 Microsoft .NET Framework 4.61 簡體中文語言包 https://www.microsoft.com/zh-cn/download/details.aspx?id=49977 1.3 裝ps5.1安裝包下載地址: https://www.microsoft.com/en-us/download/details.aspx?id=54616
安裝上圖所示的插件后,再次查看powershell版本截圖如下:

二.安裝virtualbox和vagrant:
請務必完全參照以下步驟順序一步步來:
1.下載並安裝https://www.virtualbox.org/ 建議用迅雷下載比較快
2.下載並安裝https://www.vagrantup.com/ virtualbox和vagrant版本要對應,建議都安裝最新版的
3.重啟--->cmd--->進入代碼的項目目錄f:--->mkdir devops--->新建一存放vagrant的項目目錄mkdir data---->cd data-->vagrant box list列出本地模版(此時vagrant還需要一個模版vagrant box:虛擬鏡像文件---下載地址http://cloud.centos.org/centos/7/vagrant/)這里我用的是自己網盤中的鏡像,因為此鏡像已有所有基礎環境,不是純凈版-- >
- 添加鏡像到Vagrant:
.最后如下可以看到鏡像文件列表了
.初始化vagrant項目:如下命令后就會在當前目錄下生成一Vagrantfile配置文件
.先不着急打開虛擬系統,我們配置vagrantfile,執行上面那條語句后生成的,對應生成的還有一個.vagrant文件,接下來是vagrantfile配置信息如下:
修改端口轉發為8000(訪問本機host的哪個端口時它會幫我轉發到虛虛擬機guest的哪個端口)
config.vm.box = "centos7.1" #box名稱 config.vm.hostname = "CentOS7" #win10系統下的主機名 config.vm.network "forwarded_port", guest: 8000, host: 8000 --->修改26行
config.vm.synced_folder "../data", "/vagrant_data", disabled: true --->修46行禁用默認同步目錄
config.vm.synced_folder "F:/devops/data", "/share",type: "virtualbox" --->設置同步目錄
由於vagrant沒有Guest
Additions,通過vagrant不能創建共享文件夾,所以需要下載vbguest插件,當啟動時自動安裝Guest Additions
在命令行:
$ vagrant plugin install vagrant-vbguest --->需要花幾分鍾耐心等待
完成后啟動系統,在命令行:
$ vagrant up --->這個要花點時間耐心等待
$vagrant halt --->同時在virtualbox圖形軟件中點擊關閉虛擬機
$vagrant reload --->重新加載虛擬機-->如下圖說明已經掛載成功!!
由於我們上面安裝好了Guest Additions,需要修改vagrantfile配置文件,以免下次啟動時重復安裝Guest Additions,在配置文件最后一個end前添加兩行命令:
config.vbguest.auto_update = false
config.vbguest.no_remote = true
$vagrant halt--->同時在virtualbox軟件中點擊關閉虛擬機
配置好后我們基本上已經配置好了虛擬系統,下一步在命令行啟動系統
.啟動虛擬機器:$ vagrant up有如下提示信息:網絡/名稱/端口轉發/端口映射/ssh認證方式/目錄映射
密鑰生成是在F:\devops\data\.vagrant此隱藏目錄中
.此時直接vagrant ssh就進入虛擬機了#sudo su - 切換root ---->vi /etc/ssh/sshd_config--->passwordAuthentication no-->改為yes如下兩圖:
.並systemctl restart sshd
.此時機器就起來了,然后exit退出。打開virtualbox如下圖可看到有機器運行了
. 此時可直接關掉virtuabox因為占系統資源,並可直接用crt去連了:
用戶名密碼都是vagrant
此時如下圖中自動掛載了一個本地的一個目錄(在本地此目錄中操作什么虛擬中就會有什么):
此時我在本機F:\devops\data目錄下建一名為111.txt文件,在虛擬機中也能同步看到了
如下圖:若上述圖中沒顯示掛載目錄則從下圖中可以看出 centos/7 鏡像缺少 Virtualbox Guest Additions---照上述幾個步驟操作即可。
到此虛擬開發環境就搭建成功了!!
三.安裝python
1. python和django的版本選擇:
https://www.python.org/downloads/source/
https://www.djangoproject.com/download/ 打開它可看到中下圖:所知要選長期也穩定版,否則后期官方不維護你項目就麻煩
https://docs.djangoproject.com/en/2.2/ ---閱讀django2.2官文中有python版本依賴說明--選穩定版本python3.6
https://www.django-rest-framework.org/ ---閱讀drf官文,看它對版本的要求
所以看完上述三個官文后版本就定了:python3.6 + django2.2
python官網中:
[root@centos7 ~]$ wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz 下載
2.安裝依賴--python會用到的工具:如自動提示/ssl相關軟件包
[vagrant@centos7 ~]$ sudo su - root
[root@centos7 ~]# yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
3.編譯安裝python
[root@centos7 ~]$ tar -xzf Python-3.6.6.tgz
[root@centos7 ~]$ cd Python-3.6.6
[root@centos7 Python-3.6]$ ./configure -prefix=/usr/local/python36 ---->指定安裝目錄
[root@centos7 Python-3.6]$ make && make install --->編譯如下圖結束后它幫我把pip和setuptools都安裝了
4.配置pip源
tee /etc/pip.conf <<EOF [global] index-url = http://pypi.douban.com/simple trusted-host = pypi.douban.com [list] format=columns EOF
四.創建虛擬環境
1.用pip安裝python的虛擬環境virtualenv--開發中用虛擬環境來開發為了隔離默認python環境
切換到vagrant用戶:
[vagrant@CentOS7 ~]$ sudo /usr/local/python36/bin/pip3 install virtualenv
2.用virtualenv去初始化一python的虛擬環境:
[vagrant@CentOS7 ~]$ /usr/local/python36/bin/virtualenv ./python36env 生成一當前用戶家目錄下的此目錄
3.進入虛擬環境:一定要在vagrant普通用戶下進入
[vagrant@CentOS7 ~]$ source ./python36env/bin/activate
(python36env) [vagrant@CentOS7 ~]$
五.開發django項目:
1.安裝django---用django2.2
(python36env) [vagrant@CentOS7 ~]$ pip install django==2.2.1
2.安裝並配置數據庫:安裝vim:
sudo yum -y install vim 安裝mariadb: (python36env) [vagrant@CentOS7 ~]$ sudo yum -y install mariadb mariadb-server mariadb-devel 修改/etc/my.cnf配置: [mysqld] default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8 啟動服務: sudo systemctl start mariadb sudo systemctl enable mariadb
安裝mysqlclient:----python的mysql擴展 pip install mysqlclient
初始化數據庫: mysql_secure_installation
空(回車)--y--123456(root密碼)--y,y,y,y,y 創建數據庫: mysql -uroot -p123456
create database devops CHARACTER SET utf8;
3.初始化django項目:
(python36env) [vagrant@CentOS7 ~]$ cd /vagrant/
(python36env) [vagrant@CentOS7 vagrant]$ django-admin startproject devops 啟動django項目后如下圖生成devops項目目錄
用windows上裝的pycharm軟件(打開遠程項目)打開此devops項目:
進行項目設置:
找解釋器(用遠程的)file-->setting-->project:devops--->project interpreter-->add這里選vagrant且它的目錄一定要選vagrant的項目目錄,此時它會把遠程的python的全所包同步下來。

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'devops', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': 3306, 'OPTIONS':{ 'init_command': 'SET default_storage_engine=INNODB;', }, } }
啟動服務:第一種方式:
(python36env) [vagrant@CentOS7 vagrant]$ cd devops/
(python36env) [vagrant@CentOS7 devops]$ ls
devops manage.py
(python36env) [vagrant@CentOS7 devops]$ python manage.py migrate
(python36env) [vagrant@CentOS7 devops]$ python manage.py runserver 此時它就監聽127.0.0.0:8000,但此時你訪問此地址是訪問不到的。
因為這個是一vm的linux機器,它只監聽127.0.0.1這個網卡上的8000端口所以不行,得改成0.0.0.0的8000端口。
(python36env) [vagrant@CentOS7 devops]$ python manage.py runserver 0.0.0.0:8000 此時你在瀏覽器訪問127.0.0.1的8000端口它就會幫轉發到虛擬機中。
第二種方式:通過pycharm來啟動給manage.py一個參數runserver 0.0.0.0:8000如下圖,並點擊三角號就運行了
此時在瀏覽器輸入http://127.0.0.1:8000/ 就能看到如下圖效果了
但是這里要注意下我的vagrant是用的nat網絡模式:所以宿主機不能直接連虛擬機,得做如下文中設置
https://www.cnblogs.com/dbslinux/p/12982385.html
到此完整的python開發環境就搭建完成了!!!!
六.vagrant package 打包自己的box鏡像
搭建完畢后等虛擬機的細節都調整好后強烈建議打包成自己的鏡像,以后需要在其他電腦安裝虛擬機環境或者電腦的虛擬機出問題的時候可以直接一鍵還原,不然要重新搭建有點繁瑣。
開發環境配置一次可以生成box文件,可移植.我們在vagrant的虛擬機下面進行了一些操作之后想把它導出作為備份,為的是以后在別的機器上安裝完vagrant以后可以立即導入自己熟悉的box進行開發。就是將虛擬機打包出去,方便以后或者別人直接使用。當別人拿到我們打包后的鏡像文件,直接使用vagrant init即可使用,此時同樣的會生成一個Vagrantfile配置文件,我們需要對虛擬機進行操作,直接在配置文件修改即可。
1、查看虛擬機名稱
去到虛擬機安裝目錄,執行命令:vboxmanage list vms
這里有可能提示:‘vboxmanage’ 不是內部或外部命令,也不是可運行的程序
或批處理文件。那是因為VirtualBox安裝的時候沒有將vboxmanage自動放入環境變量中,我們可以直接進入VirtualBox的安裝目錄執行這句命令,也就是VirtualBox.exe這個文件的同級目錄.
data_default_1590575788478_13541就是我本地的虛擬機名稱,復制下這個名字,后面打包box鏡像需要用到。
2、執行打包命令
vagrant自帶打包命令,需要去到你的vagrant目錄下,也就是vagrantFile文件目錄下執行
F:\devops\data>vagrant ssh
F:\devops\data>vagrant halt
3、部署回自己的box環境
到上面第二步的時候已經打包完畢了,如果想在其他電腦部署自己的box很簡單
先把box文件放到需要部署的磁盤目錄下。
執行以下操作命令:
1、將box安裝到vagrant容器
$ vagrant box add -name centos7 package.box
$vagrant init centos7
2、然后直接啟動即可
$ vagrant up