一、Linux下安裝、配置virtualenv
在使用 Python 開發的過程中,工程一多,難免會碰到不同的工程依賴不同版本的庫的問題;
亦或者是在開發過程中不想讓物理環境里充斥各種各樣的庫,引發未來的依賴災難。
此時,我們需要對於不同的工程使用不同的虛擬環境來保持開發環境以及宿主環境的清潔。
這里,就要隆重介紹 virtualenv,一個可以幫助我們管理不同 Python 環境的絕好工具。
virtualenv 可以在系統中建立多個不同並且相互不干擾的虛擬環境。
#指定清華源下載pip的包 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv #升級pip工具 pip3 install --upgrade pip
1.安裝virtualenv pip3 install virtualenv
2.創建目錄 mkdir Myproject cd Myproject 3.創建獨立運行環境-命名 virtualenv --no-site-packages --python=python3 venv#得到獨立第三方包的環境,並且指定解釋器是python3 4.進入虛擬環境 source venv/bin/activate#此時進入虛擬環境(venv)Myproject 5.安裝第三方包 (venv)Myproject: pip3 install django==1.9.8 #此時pip的包都會安裝到venv環境下,venv是針對Myproject創建的 6.退出venv環境 deactivate命令 7. virtualenv是如何創建“獨立”的Python運行環境的呢?原理很簡單,就是把系統Python復制一份到virtualenv的環境,用命令source venv/bin/activate進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。
二、確保開發環境的一致性
1.假設我們在本地開發環境,准備好了項目+依賴包環境 2.現在需要將項目上傳至服務器,上線發布 3.那么就要保證服務器的python環境一致性
解決方案: 1.通過命令保證環境的一致性,導出當前python環境的包 pip3 freeze > requirements.txt 這將會創建一個 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表。
可以使用 “pip list”在不產生requirements文件的情況下, 查看已安裝包的列表。 2.上傳至服務器后,在服務器下創建virtualenv,在venv中導入項目所需的模塊依賴 pip3 install -r requirements.txt
三、虛擬環境之virtualenvwrapper
virtualenv
的一個最大的缺點就是: 每次開啟虛擬環境之前要去虛擬環境所在目錄下的 bin
目錄下 source
一下 activate
,這就需要我們記住每個虛擬環境所在的目錄。 並且還有可能你忘記了虛擬環境放在哪。。。
- 一種可行的解決方案是,將所有的虛擬環境目錄全都集中起來,例如/opt/all_venv/,並且針對不同的目錄做不同的事。
- 使用virtualenvwrapper管理你的虛擬環境(virtualenv),其實他就是統一管理虛擬環境的目錄,並且省去了source的步驟。
步驟1:安裝virtualenvwrapper
pip3 install virtualenvwrapper
步驟2:設置Linux的環境變量,每次啟動就加載virtualenvwrapper
把下面兩行代碼添加到 ~/.bashrc文件中 打開文件 vim ~/.bashrc 寫入以下幾行代碼 export WORKON_HOME=~/Envs #設置virtualenv的統一管理目錄 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的參數,生成干凈隔絕的環境 export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 #指定python解釋器 source /opt/python36/bin/virtualenvwrapper.sh #執行virtualenvwrapper安裝腳本 讀取文件,使得生效,此時已經可以使用virtalenvwrapper source ~/.bashrc
步驟3:基本使用virtualenvwrapper
創建一個虛擬環境: $ mkvirtualenv my_django115 這會在 ~/Envs 中創建 my_django115 文件夾。 在虛擬環境上工作:激活虛擬環境my_django115 $ workon my_django115 再創建一個新的虛擬環境 $ mkvirtualenv my_django2 virtualenvwrapper 提供環境名字的tab補全功能。 當有很多環境, 並且很難記住它們的名字時,這就顯得很有用。 workon還可以任意停止你當前的環境,可以在多個虛擬環境中來回切換 workon django1.15 workon django2.0 也可以手動停止虛擬環境 deactivate 刪除虛擬環境,需要先退出虛擬環境 rmvirtualenv my_django115
步驟四:常用其他命令
lsvirtualenv 列舉所有的環境。 cdvirtualenv 導航到當前激活的虛擬環境的目錄中,比如說這樣您就能夠瀏覽它的 site-packages 。 cdsitepackages 和上面的類似,但是是直接進入到 site-packages 目錄中。 lssitepackages 顯示 site-packages 目錄中的內容。
完整官網介紹:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

學習運維架構技術乃王道 1.Nginx高可用負載均衡/緩存、限流/提升集群處理並發能力 2.mysql主從復制,讀寫分離 3.redis緩存加速與主從復制,哨兵,集群 4.異步消息/服務解耦之rabbitMQ消息隊列 5.代碼層優化/改進算法/多線程與內存優化 6.使用golang,Erlang等csp並發編程語言 7.docker容器時代 服務器介紹: 1.路飛的7台阿里雲,騰訊雲,亞馬遜雲,華為雲 數據都放在其他人的電腦上,安全性由別人掌控 2.公司有錢,有26台Dell實體服務器,vmware esxi虛擬化的300+Linux 公司有錢,自建機房(蓋了一個廠房,里面專業托管服務器) 有專業的公司,建造機房(世紀互聯) 機房都是有嚴格的標准,保護機器不斷電,不損壞 1.無靜電 2.無塵 3.無濕度 4.低溫 Linux發行部: Linux是一個名詞,是系統的代表 1.紅帽子公司 redhat Linux 收費 -2045之前,外企 -紅帽Linux 資格認證證書 rhcsa 紅帽系統管理員 rhce 紅帽工程師 rhca 紅帽構架師 2.centos 免費版,社區版 centos7 3.Ubuntu 烏班圖系統 4.suse 德國 Linux 收費 保證開發環境的一致性 1.手動解決 2.自動化解決 3.通過docker鏡像 4.通過vmware系統模板鏡像 Linux網絡連接方式 橋接: 在一個局域網內,添加了一個新的機器 vmware就像是虛擬化的一個機房的服務器 遠程連接 1.使用ssh命令 2.獲取服務器的ip地址 3.window的xshell中輸入:ssh root@192.168.0.101 遠程連接Linux機器 Linux重要的目錄 bin目錄 有關bin的文件夾都是存放可執行文件的 etc目錄存放配置文件的 /etc/my.conf /etc/nginx.conf /etc/redis.conf 配置文件就是定制一堆參數,自己控制的參數 opt目錄 存放第三方軟件的安裝路徑的 /opt/redis /opt/nginx /opt/python36 root目錄 存放超級用戶的家目錄 var目錄 存放系統日志相關 Linux目錄結構的操作 cd - 上一次的工作目錄 cd ~ 當前登錄用戶的家目錄 cd . 當前目錄 cd .. 上一級目錄 絕對路徑:一切從根目錄開始,就是一個絕對路徑 相對路徑:以當前位置為相對,找到路徑 PATH變量是用於,當用戶直接輸入命令的時候,去查找的一個路徑尋找點 當我們輸入ls的時候,Linux回去PATH中尋找,哪里有ls Linux命令學習: ssh root@192.168.0.101 1.查看ip地址 ip a ifconfig 2.linux目錄分割是正斜杠/ 3.w 那些用戶在登錄 4.whoami 我是誰 5.pwd 我在哪 6.更改目錄 cd / 7.用於輸出文件夾的內容 ls ll ls -a 查看隱藏文件 ls -la ls -lh 帶文件大小 8.linux文件的顏色 淺藍是軟鏈接目錄 藍色是文件夾 白色是普通文件 綠色是可執行文件 9.創建目錄 mkdir mkdir -p ./a/b/c/d mkdir -p ./bubu/{linux,python} 10.創建文件 touch 11.vi/vim寫入內容 a.此時進入了命令模式,輸入鍵盤的i,進入編輯模式 b.編輯模式下可以寫入代碼 c.退出編輯模式按下Esc,此時就進入了底線命令模式 d.輸入:wq! :進入底線模式 w 寫入 q 退出 !強制的 底線命令模式 :set nu 顯示行號 12.cat查看寫入cat >>ceshi.txt <<EOF [root@localhost /tmp/bubu 00:19:28]#cat >>ceshi.txt <<EOF > ceshi > 123 > EOF [root@localhost /tmp/bubu 00:20:02]#cat ceshi.txt ceshi [root@localhost /tmp/bubu 00:20:09]# cat /etc/passwd > ./passwd.txt 將/etc/passwd的內容寫入到當前passwd.txt文件中 13.創建新用戶 useradd bubu passwd bubu 14.切換用戶 su bubu 15.刪除 rmdir 刪除空文件夾 rm -rf * == rm -rf ./* 強制刪除當前目錄的所有內容 rm -rf /* 刪除根(作死) -f遞歸刪除文件夾 -r強制性刪除 -i提示性操作,是否刪除 16.ctrl+c 中斷當前操作 17.which ls 18.echo $PATH 19.hostname 查看主機名 20.hostnamectl set-hostname localhost 21.logout 退出重新登錄查看 22.Linux命令提示符 [root@localhost ~]# 23.修改命令提示符 PS1變量控制 [root@localhost ~]# echo $PS1 [\u@\h \W]\$ 修改命令提示符: PS1='[\u@\h \w \t]\$' 24.軟件時間date,硬件時間hwclock ntpdate -u ntp.aliyun.com 25.clear 26.history 27.yum install tree -y 安裝樹狀圖命令 28.tree mysite/ 29.echo 寫入文件內容 echo 'hello' > ./test.txt > 重定向覆蓋寫入符 >> 追加 30.拷貝 cp 目標文件 拷貝后的文件 cp my.py my.py.bak 31.重命名命令,以及移動命令 mv 舊文件名 新文件名 mv 目標文件 移動后的路徑 mv ../tmp/ceshi/txt ./ 32.find 查找文件 find / -name test.txt 從根目錄開始找,一個叫做test.txt的文件 find /opt -name '*.py' 從/opt目錄下查找所有的.py文件 linux 管道符“|” 語法就是將第一條命令的結果傳給第二條 33.過濾出python有關的進程 ps -ef | grep python 34.過濾出22端口的信息 netstat -tunlp| grep 22 35.過濾命令grep grep nobody ./passwd.txt 從當前的passwd.txt文件中過濾出nobody的信息 grep all settings.py 過濾出django中settings.py 中allow_hosts的信息 grep all settings.py -n 過濾出allow_hosts的信息且輸出行號 grep -v all settings.py 過濾出除allow_hosts之外的信息 grep -v all settings.py -n 過濾出除allow_hosts之外的信息且輸出行號 cat settings.py | grep allow 36.head head -5 test.txt 37.tail tail -5 test.txt tail -f test.txt 實時監控 37.alias別名 alias rm="rm -i" alias rm="echo 求求你了,你可別坑我了!!!" 38.unalias rm 取消別名 39.遠程傳輸文件,在兩台Linux上 scp 想要操作的文件地址 存放的目標文件地址 scp test.txt root@192.168.0.109:/tmp/ scp -r a root@192.168.0.109:/tmp/ -r遞歸傳輸文件夾 40.查看文件夾大小 方式1:ls -lh 方式2:du -h du -sh /var/log/ -s 合計文件夾大小 -h 顯示友好的單位換算 41.top命令(任務管理器)用於動態地監視進程活動和系統負載等信息 q退出 42.wget 下載 wget -r -p http://www.luffycity.com 43.Linux和window互相傳遞文件 1.lrzsz sz test.txt(下載 從Linux傳給window) rz test.txt(上傳) 2.xftp 44.reboot 重啟 45.poweroff 關閉系統 46.free -m 查看內存 47.man grep 查看grep的幫助手冊 48.防火牆 iptables -L #查看規則 iptables -F #清空防火牆規則 永久關閉防火牆,可能防火牆會阻擋你的Linux環境配置實驗,為了方便,關閉它。 systemctl stop firewalld #關閉防火牆服務 systemctl disable firewalld #永久關閉,開機自啟 49.tar -xf Python-3.6.2.tgz 解壓 50.logout 退出賬號 ####################################################################### 用戶權限相關 [root@localhost ~]# id #返回用戶的身份信息,當uid為0的時候,這個用戶就是超級用戶 uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@localhost ~]# id root uid=0(root) gid=0(root) groups=0(root) 用戶的存放文件: /etc/passwd /etc/shadow 存放用戶密碼的文件 用戶的管理命令: 添加普通用戶(只有root用戶有這個權利) [root@localhost ~]# useradd tom #創建用戶,這個用戶的信息會存放到/etc/passwd [root@localhost ~]# grep tom /etc/passwd #查看用戶信息,普通用戶的id默認是從1000開始的 tom:x:1001:1001::/home/tom:/bin/bash [root@localhost ~]# 修改普通用戶的密碼 passwd 用戶名 切換用戶(必須加上中橫線- 代表完全用戶切換) [root@localhost ~]# su - tom [tom@localhost root]$ 添加用戶組 groupadd it_dep 刪除用戶 userdel -rf tom -f 強制刪除用戶 -r 同事刪除用戶以及家目錄 sudo命令用來以其他身份來執行命令,預設的身份為root 1.編輯sudoers配置文件,添加tom用戶信息 vim /etc/sudoers (/查找root n查找下一個) 2.定位權限設置到 root ALL=(ALL) ALL 添加 root ALL=(ALL) ALL tom ALL=(ALL) ALL 3.使用sudo命令,去執行Linux命令,解決權限不足 [tom@localhost ~]$ ls /root ls: cannot open directory /root: Permission denied [tom@localhost ~]$ sudo ls /root [sudo] password for tom: anaconda-ks.cfg 4.sudo還提供了一個語法檢測的命令 visudo 文件權限: 讀取(vim) 查看(cat) 執行(xx.py xx.sh) 通過解釋器執行 ./xx.sh 或者 source xx.sh 或者 . xx.sh 文件夾的權限: 新增 修改 刪除 進入目錄 Linux軟鏈接創建注意用絕對路徑 ln -s 目標文件絕對路徑 軟鏈接絕對路徑 tar命令,參數 -x 解壓 -v 顯示壓縮解壓過程 -f 指定壓縮文件 -z 指定調用gzip命令 -c 壓縮當前目錄的所有內容: -r 添加文件到已有的壓縮文件中 tar -rf alltmp.tgz 新加的文件名 壓縮當前目錄的所有內容: tar -cf alltmp.tgz ./* tar -cf alltmp.tgz * tar -cf alltmp.tar * tar -zcf alltmp.tar.gz * 解壓到當前目錄 tar -xf alltmp.tgz 查看命令幫助: tar --help man tar linum 中文手冊 進程查看 ps -ef 查看所有進程的狀態 ps -ef | grep python 網絡端口管理命令 netstat -tunlp | grep 8000 kill命令 殺死進程 kill pid (pid通過ps -ef 查看) 一次性殺死多個匹配的進程,一個是pkill,一個是killall, 如果沒有killall就安裝一下 yum install psmisc -y killall python 查看磁盤空間 df -h Linux的dns服務相關 1.dns服務指定配置文件,這個文件,告訴Linux去那解析dns域名, 有主備兩個dns服務器ip地址 [root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManager domain www.tendawifi.com search www.tendawifi.com nameserver 192.168.0.1 [root@localhost ~]# 2.Linux解析dns的命令 nslookup www.baidu.com #解析到這個域名對應的ip地址 3.Linux強制dns,或者本地dns域名解析 vim /etc/hosts ip 自定義的域名 4.域名解析的流程,(一個域名從瀏覽器訪問,解析過程是如何的) 1.瀏覽器輸入域名,瀏覽器首先會去當前機器的本地dns緩存中查找記錄 2.去hosts文件中查找是否寫死了對應的記錄 3.去指定的dns服務器中尋找dns記錄,如果找到了域名解析記錄后 4.將這個dns記錄緩存到本機的緩存記錄中 5.下一次尋找域名,就去緩存中找 Linux的計划任務,也叫做定時任務,名字是crond 1.查看Linux本機的定時任務 crontab -l #查看計划任務 2.編寫自己的計划任務 crontab -e #編輯計划任務 分時日月周 命令絕對路徑 * * * * * /user/bin/echo "666" >> /tmp/ceshi.txt Linux系統服務管理命令 系統服務(Linux安裝的軟件名) 只有通過yum安裝的軟件才可以使用這個命令 systemctl 這是centos7系列的命令 service 這是centos6系統的服務管理命令 查看網絡狀態 systemctl status network 查看發行版 cat /etc/os-release

pip3是管理python模塊的工具,自動解決模塊依賴 pip3 list pip3 install flask 默認是去python官方下載,網速很慢 更改pip下載的源,加速下載,使用離咱們近的豆瓣源,163源或者清華源 pip3 install -i https://pypi.douban.com/simple flask Linux安裝軟件包 rpm手動安裝 yum工具自動化安裝 效果等同於 pip3 1.理解yum源(阿里雲的yum源 epel額外倉庫) yum源倉庫的位置:cd /etc/yum.repos.d/,並且只能讀出第一層的repo文件 yum倉庫的文件都是以.repo結尾的 2.下載阿里雲的.repo倉庫文件,放到/etc/yum.repos.d/ 第一步:備份原本的倉庫文件 cd /etc/yum.repos.d/ mkdir allbak mv * allbak 1.下載第一個阿里雲倉庫文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo -O 參數,指定一個下載地址,且改名 2.配置第二個倉庫文件 epel 額外倉庫(redis,nginx,mongo,ipython) wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 3.清空原本yum緩存 yum clean all 4.生成新的阿里雲的yum緩存,加速下載預熱數據(此步驟非必須) yum makecache 代碼: 1.cd /etc/yum.repos.d/ 2.mkdir allbak 3.mv * allbak 4.wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 5.wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 6.yum clean all 7.yum makecache yum安裝nginx: 1.yum install nginx -y 2.systemctl start/restart/stop nginx 3.netstat -tunlp | grep 80 查看端口,過濾80端口的信息 4.iptables -F (清空防火牆規則) 5.客戶端:192.168.0.101:80 訪問 /usr/share/nginx/html/index.html yum remove nginx

編譯安裝python3 1.切換opt目錄(這是一個約定) cd /opt 2.下載python3的源代碼 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 3.安裝python前的庫環境,非常重要 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 4.解壓縮python3的源代碼壓縮文件 cd /opt/ 進入存在這個文件的目錄 tar -xf Python-3.6.2.tgz 解壓 5.cd Python-3.6.2/ 進入源代碼目錄下,准備開始編譯安裝 6.編譯安裝三部曲 第一曲: cd Python-3.6.2/ #configure 這個腳本文件,只是為了釋放makefile,用於指定python3安裝到哪里 ./configure --prefix=/opt/python36 --with-ssl --prefix 這個參數用於指定python安裝的路徑 第二曲: 執行make開始編譯python3.6的源代碼 make 第三曲: make install 生成/opt/python36 (第二曲和第三曲可以寫成 make && make install) 7.配置環境變量 echo $PATH #$PATH是有優先級順序的 將/opt/python36/bin/放入環境變量,注意要添加到path的最前面 #變量的賦值只是臨時有效 PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" #將這個參數,寫入到Linux的全局變量配置文件中 vim /etc/profile #打開這個全局變量文件,寫入PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"到文件最后 8.退出(logout),重新加載全局變量. 9.which python3 確認是否正確安裝 10.不要將系統默認的python 改成python3 這是一個大坑。 (因為Linux有很多工具,默認是用的python2,例如yum) 11.在Linux下安裝django程序 pip3 install -i https://pypi.douban.com/simple django==1.11.16 pip3 install django==1.11.16 pip3 list 12.使用django命令創建項目 [root@localhost ~]# cd /opt [root@localhost opt]# django-admin startproject mysite 13.修改mysite的settings.py中的ALLOWED_HOSTS vim /opt/mysite/mysite/settings.py #/查找 ALLOWED_HOSTS = ["*"] 14.啟動項目 [root@localhost opt]# cd mysite/ [root@localhost mysite]# python3 manage.py runserver 0.0.0.0:9999 補充: python3的管理工具是pip3 install flask python2的是easy_install flask [root@localhost ~]# python -V Python 2.7.5 [root@localhost ~]# python --version Python 2.7.5 [root@localhost ~]# python3 --version Python 3.6.2 [root@localhost ~]# pip3 list DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning. Django (1.11.16) pip (9.0.1) pytz (2019.2) setuptools (28.8.0) You are using pip version 9.0.1, however version 19.2.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command. [root@localhost ~]#

virtualenv 是python解釋器的分身 它是基於物理解釋器,進行一個解釋器分身,這個分身,可以用於運行各種python開發環境, 並且創建簡單,刪除銷毀也簡單,解決環境依賴災難。 1.安裝虛擬環境 pip3 install -i https://pypi.douban.com/simple virtualenv 2.通過virtualenv創建虛擬環境 mkdir /opt/allenv #建立統一管理目錄 cd /opt/allenv #進入統一管理目錄 virtualenv --no-site-packages --python=python3 venv1 #建立虛擬環境venv1 --no-site-packages 創建一個干凈隔離的python環境 --python=python3 基於python3創建虛擬環境 venv1 虛擬環境文件夾的名字,自己定義 3.激活虛擬環境 cd /opt/allenv 通過source命令,讀取激活腳本,激活虛擬環境 source /opt/allenv/venv1/bin/activate 4.激活虛擬環境后,檢查以下幾個步驟,是否正確激活 which pip3 which python3 5.檢查虛擬環境是否干凈隔離 pip3 list 6.退出虛擬環境的命令 deactivate [root@localhost ~]# pip3 install -i https://pypi.douban.com/simple virtualenv [root@localhost ~]# cd /opt [root@localhost opt]# mkdir allenv [root@localhost opt]# cd allenv [root@localhost allenv]# virtualenv --no-site-packages --python=python3 venv1 Running virtualenv with interpreter /opt/python36/bin/python3 Already using interpreter /opt/python36/bin/python3 Using base prefix '/opt/python36' New python executable in /opt/allenv/venv1/bin/python3 # 這個就是虛擬環境venv1的python3解釋器 Also creating executable in /opt/allenv/venv1/bin/python Installing setuptools, pip, wheel... done. [root@localhost allenv]# [root@localhost allenv]# ls venv1 [root@localhost allenv]# cd venv1 [root@localhost venv1]# ls bin include lib [root@localhost venv1]# cd bin [root@localhost bin]# ls activate activate.fish activate_this.py easy_install pip pip3.6 python3 python-config activate.csh activate.ps1 activate.xsh easy_install-3.6 pip3 python python3.6 wheel [root@localhost bin]# source activate (venv1) [root@localhost bin]# (venv1) [root@localhost bin]# which pip3 /opt/allenv/venv1/bin/pip3 (venv1) [root@localhost bin]# (venv1) [root@localhost bin]# pip3 list Package Version ---------- ------- pip 19.2.3 setuptools 41.2.0 wheel 0.33.6 (venv1) [root@localhost bin]# which python3 /opt/allenv/venv1/bin/python3 (venv1) [root@localhost bin]# (venv1) [root@localhost bin]# echo $PATH /opt/allenv/venv1/bin:/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin (venv1) [root@localhost bin]# pip3 install -i https://pypi.douban.com/simple django==2.0 確保開發環境的一致性: 解決方案: 1.通過命令保證環境的一致性,導出當前python環境的包 pip3 freeze > requirements.txt 這將會創建一個 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表。 可以使用 “pip list”在不產生requirements文件的情況下, 查看已安裝包的列表。 2.上傳至服務器后,在服務器下創建virtualenv,在venv中導入項目所需的模塊依賴 pip3 install -r requirements.txt

虛擬環境之virtualenvwrapper: 1.因為virtualenv工具使用並不方便 2.安裝virtualenvwrapper pip3 install virtualenvwrapper 3.設置Linux的環境變量,每次啟動就加載virtualenvwrapper 1.打開文件 vim ~/.bashrc (這個文件是用戶個人配置文件) 2.寫入以下幾行代碼 (export和source一樣都是讀取Linux shell 變量的命令) export WORKON_HOME=~/Envs #設置virtualenv的統一管理目錄 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的參數,生成干凈隔絕的環境 export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 #指定python解釋器 source /opt/python36/bin/virtualenvwrapper.sh #這一步才是真正使用工具的步驟,執行virtualenvwrapper安裝腳本 3.退出當前會話,重新登錄Linux logout 4.重新登錄,查看是否可以使用virtalenvwrapper 5.確保可以使用后,學習這個工具的命令 1.創建新的虛擬環境 mkvirtualenv django201 mkvirtualenv django115 2.切換不同的虛擬環境 workon django201 workon django115 3.退出虛擬環境 deactivate 4.刪除虛擬環境 rmvirtualenv django116 5.進入虛擬環境的家目錄(直接進入到 site-packages 目錄中) cdsitepackages 6.列舉所有的環境。 lsvirtualenv 7.顯示 site-packages 目錄中的內容。 lssitepackages

運行crm 1.准備代碼 2.上傳代碼到Linux中 方式1:lrzsz(只能傳單個的文件,必須是壓縮包) yum install lrzsz -y # 安裝傳輸工具 sz test.txt(下載 從Linux傳給window) rz test.txt(上傳) 方式2:xftp 3.解壓 unzip crm.zip 4.用之前建好的虛擬環境去運行 : workon django201 5.啟動 python3 /opt/crm/manage.py runserver 0.0.0.0:9000 上面第四步也可以新建虛擬環境去運行 : 1.mkvirtualenv myblog 2.解決環境依賴,少什么裝什么 pip3 install -i https://pypi.douban.com/simple django==2.0 pip3 install -i https://pypi.douban.com/simple pymysql pip3 install -i https://pypi.douban.com/simple django-multiselectfield [multiselectfield模塊] 3.安裝Linux的mysql數據庫 在centos7中,mysql叫mariadb 安裝mariadb的服務端和客戶端 yum install mariadb-server mysql -y 4.啟動mariadb數據庫 [root@localhost ~]# systemctl start mariadb 5.檢查數據庫是否正常(下面幾種方式都可以) ps -ef|grep mariadb netstat -tunlp |grep 3306 systemctl status mariadb 6.看settings的配置,DATABASES,ALLOWED_HOSTS 7.建數據庫,導入數據 [root@localhost ~]# systemctl start mariadb [root@localhost ~]# mysql -uroot -p MariaDB [(none)]> create database myblog; MariaDB [(none)]> use myblog; MariaDB [myblog]> source /opt/myblog.sql; MariaDB [myblog]> show databases; 8.運行 python3 /opt/myblog/manage.py runserver 0.0.0.0:9000

運行路飛學城 1.下載代碼 路飛學城django代碼 wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip vue代碼 wget https://files.cnblogs.com/files/pyyu/07-luffy_project_01.zip 2.解壓 unzip 07-luffy_project_01.zip unzip luffy_boy.zip 3.先從后端代碼開始,進入后端代碼文件夾 4.新建虛擬環境 mkvirtualenv luffy 5.解決所需的依賴模塊,准備一個模塊版本文件:requirements.txt 這個文件可以手動創建寫入如下依賴 (luffy) [root@localhost opt]# cd /opt/luffy/luffy_boy (luffy) [root@localhost luffy_boy]# touch requirements.txt (luffy) [root@localhost luffy_boy]# vim requirements.txt ############################## certifi==2018.11.29 chardet==3.0.4 crypto==1.4.1 Django==2.1.4 django-redis==4.10.0 django-rest-framework==0.1.0 djangorestframework==3.9.0 idna==2.8 Naked==0.1.31 pycrypto==2.6.1 pytz==2018.7 PyYAML==3.13 redis==3.0.1 requests==2.21.0 shellescape==3.4.1 urllib3==1.24.1 uWSGI==2.0.17.1 ############################## (luffy) [root@localhost luffy_boy]# ls api db.sqlite3 keys luffy_boy manage.py requirements.txt static templates 6.安裝所需的依賴模塊 (luffy) [root@localhost luffy_boy]# pip3 install -i https://pypi.douban.com/simple -r requirements.txt 7.看一看 pip3 list 8.運行 python3 manage.py runserver 0.0.0.0:8000 (注意端口得是8000,因為前端的vue發的就是8000) 9.新開一個終端開始前端(要在服務器上,編譯打包vue項目,必須得有node環境) 1.准備node環境 下載node二進制包,此包已經包含node,不需要再編譯 [root@localhost ~]# cd /opt [root@localhost opt]# wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz 2.解壓縮 [root@localhost opt]# tar -zxvf node-v8.6.0-linux-x64.tar.gz 3.進入node文件夾 [root@localhost opt]# cd node-v8.6.0-linux-x64/ [root@localhost node-v8.6.0-linux-x64]# ls bin CHANGELOG.md etc include lib LICENSE README.md share [root@localhost node-v8.6.0-linux-x64]# cd bin [root@localhost bin]# ls node npm npx [root@localhost bin]# pwd /opt/node-v8.6.0-linux-x64/bin 4.配置環境變量 [root@localhost bin]# vim /etc/profile PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/node-v8.6.0-linux-x64/bin" 5.讀取全局配置文件,加載node的環境變量 [root@localhost bin]# source /etc/profile #就不需要退出重新加載了 [root@localhost bin]# echo $PATH /opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/node-v8.6.0-linux-x64/bin [root@localhost bin]# which node /opt/node-v8.6.0-linux-x64/bin/node 6.檢測node環境 [root@localhost bin]# node -v v8.6.0 [root@localhost bin]# npm -v 5.3.0 [root@localhost bin]# 【注意】進入vue代碼包中,開始進行打包,注意修改vue的api請求接口地址!! 【注意】進入vue代碼包中,開始進行打包,注意修改vue的api請求接口地址!! 【注意】進入vue代碼包中,開始進行打包,注意修改vue的api請求接口地址!! 7.修改src/restful/api.js中Axios的請求地址 ##里面的127.0.0.1都換成你后端服務器的id地址 192.168.0.101 [root@localhost ~]# sed -i "s/127.0.0.1/192.168.0.101/g" /opt/luffy/07-luffy_project_01/src/restful/api.js ##全局替換命令 8.進入vue目錄(安裝vue模塊,默認去裝package.json的模塊內容,如果出現模塊安裝失敗,手動再裝) [root@localhost bin]# cd /opt/luffy/07-luffy_project_01/ [root@localhost 07-luffy_project_01]# ls build config index.html package.json package-lock.json README.md src static [root@localhost 07-luffy_project_01]# npm install [root@localhost 07-luffy_project_01]# ls #增加了node_modules build config index.html node_modules package.json package-lock.json README.md src static 9.打包vue項目,生成一個dist靜態文件夾 [root@localhost 07-luffy_project_01]# npm run build 10.檢查dist文件夾 [root@localhost 07-luffy_project_01]# ls build config dist index.html node_modules package.json package-lock.json README.md src static #增加了dist [root@localhost 07-luffy_project_01]# ls dist index.html static 11.只需要將vue的靜態文件,發布到web我放棄,訪問web服務器即可。 12.安裝配置nginx web服務器,訪問到vue的靜態文件 [root@localhost ~]# yum install nginx -y [root@localhost ~]# systemctl start nginx [root@localhost ~]# netstat -tunlp|grep nginx [root@localhost ~]# find / -name index.html # 192.168.0.101 看到的就是這個頁面/usr/share/nginx/html/index.html [root@localhost ~]# vim /etc/nginx/nginx.conf ################### server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /opt/luffy/07-luffy_project_01/dist; ##更改這的路徑 #root這個參數代表定義網頁根目錄,只要訪問Nginx,Nginx就去這個根目錄下尋找一個index.html的文件 # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } ################### 12.重啟nginx服務才能生效 [root@localhost ~]# systemctl restart nginx 13.添加課程數據是存放到redis中的,需要安裝redis yum install redis -y 14.啟動redis [root@localhost ~]# systemctl start redis [root@localhost ~]# netstat -tunlp |grep 6379 [root@localhost ~]# redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> FLUSHDB #手動清除數據 OK 127.0.0.1:6379> keys * 15.測試 http://192.168.0.101