linux/centos7部署python項目:
2019.8.20
1、部署python項目,需要安裝python,由于linux自帶python為2.7,項目為3.6.8,故需要安裝:
安裝步驟:1)更新yum: sudo yum -y update(-y 標志用于提醒系統我們知道我們正在進行更改,免去終端提示我們要確認再繼續)
? ? ? ? ????????? 2)安裝yum-utils(擴展和補充yum的實用程序和插件):sudo yum -y install yum-utils
? ????????????????3)安裝centos開發工具:sudo yum -y groupinstall development
? ????????????????4)安裝python3:安裝EPEL:sudo yum -y install epel-release
? ????????????????5)安裝IUS軟件源:sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
? ????????????????6)安裝python3.6:sudo yum -y install python36u
????????????????? 7)安裝pip3:sudo yum -y install python36u-pip
? ????????????????8)添加軟鏈接:ln -s /usr/bin/python3.6 /usr/bin/python3
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ln -s /usr/bin/pip3.6 /usr/bin/pip3 注:不要覆蓋原有python,因為系統會用到
2、在pip install uswgi時發現python.h無法找到:
? ? 需要yum install python36u-devel:
????????1)在實施時發現yum無法使用,原因:yum需要使用系統原有python,而在下載python3后原有軟鏈接
出了問題;解決方案:vi /usr/bin/yum 將首行的/usr/bin/python更改,將其指向python2.7的名字。
????????2)使用yum安裝其他軟件時出錯,原因:與上相同;解決方案:vi /usr/libexec/urlgrabber-ext-down 修改第一行的Python
為重命名的名字(指向python2.7的)
3、python虛擬環境的創建與運用:
? ? ????安裝環境:pip3/pip install virtualenv ==>新建虛擬環境:virtualenv --python=python3 env ==> 激活虛擬環境
source env/bin/activate ==> 退出虛擬環境:deactivate
4、在運行代碼時需要更改hosts文件,將ip與名稱映射寫入里面:
? ????? vi /etc/hosts
5、后端python代碼部署啟動完成,接下來便是前端的部署;
由于使用yum下載的nodejs版本太低,故要從自己安裝nodejs,而要安裝新的nodejs,需要先安裝新版本的gcc
? ????1)gcc安裝步驟:
? ????????首先:進入你要安裝gcc的文件夾
????????????? cd /usr/local/src
? ????????用wget下載壓縮包,wget可用 yum install wget下載
????????????? wget https://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz
? ????????解壓壓縮包:
? ????????????????tar -xvf gcc-9.2.0.tar.gz
? ????????進入解壓后文件夾,下載供編譯需求的依賴項gmp, mpfr, mpc, isl,需要一些時間:
????????????? cd gcc-9.2.0
????????????? ./contrib/download_prerequisites
? ????????建立一個文件夾存放編譯文件:
????????????? mkdir build
? ????????進入并生成makefile文件
????????????? cd build
? ????????????../configure
? ????????make編譯:
? ????????????make(需要花費超長時間)
????????????? make install
? ????????查找編譯gcc時生成的最新動態庫:
????????????? find / -name "libstdc++.so*"
? ????????將找到的動態庫libstdc++.so.6.0.21復制到/usr/lib64:
? ????????????cp /usr/local/gcc-9.2.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.27 /usr/lib64
????????? 切換工作目錄至/usr/lib64,刪除原來的軟連接, 將默認庫的軟連接指向最新動態庫:
????????????? cd /usr/lib64
? ????????????rm -rf libstdc++.so.6
????????????? ln -s libstdc++.so.6.0.27 libstdc++.so.6
6、解決ssh登入linux網速慢
? ?解決步驟:
? 先備份/etc/ssh/sshd_config,備份命令為
????? cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
? ????1.su? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (以root用戶登錄)
? ????2.vi /etc/ssh/sshd_config? ? ? (編輯配置文件)
? ????3.輸入 / ,查找GSSAPIAuthentication 賦值為no
? ????4.輸入 /,查找UseDNS,賦值為 no(該項默認不啟用的,要把前面的#刪除掉)
? ????5.最后輸入!wq保存文件并退出
? ????6.重啟systemctl restart sshd
7、項目使用uwsgi部署,下面是uwsgi的概念與作用:
? ? ???? uwsgi是一種線路協議,是uWSGI服務器自有的協議,用于定義傳輸信息類型,每一個uwsgi packet前4byte為
傳輸信息類型描述,其作用便是用于uWSGI服務器與其他網絡服務器的數據通信。
2019.8.21
ps a查看所有進程
1、解決xshell連接linux服務器中斷問題
????進入/etc/ssh目錄打開sshd_config文件,找到下圖兩個參數并設置下圖所示的值:
????ClientAliveInterval 3600
????ClientAliveCountMax 3
????然后重啟sshd
? ? sshd操作:
????查看狀態:
????systemctl status sshd.service
????啟動服務:
????systemctl start sshd.service
????重啟服務:
????systemctl restart sshd.service
????開機自啟:
????systemctl enable sshd.service
2、nodejs升級:
? ? npm install -g n:安裝n工具包
????n stable:升級到最新穩定版
????n latest:升級到最新版
????n v11.13.0:升級到指定版本
????n 11.13.0:切換到指定版本
????n rm 11.13.0:刪除指定版本
????n use 11.13.0 some.js:用指定版本來執行腳本
3、nodejs安裝:
? ? ????首先,進入文件夾,wget https://npm.taobao.org/mirrors/node/v10.16.3/node-v10.16.3-linux-x64.tar.gz
????????然后,解壓 tar -xvf? node-v10.16.3-linux-x64.tar.gz
????????重命名: mv node-v10.16.3-linux-x64 nodejs
????????建立軟連接,變為全局:ln -s /usr/local/src/nodejs/bin/npm /usr/local/bin
? ? ? ? ? ? ? ? ? ? ????????????????????????????? ln -s /usr/local/src/nodejs/bin/node /usr/local/bin
4、centos7.5 解決缺少libstdc++.so.6庫的原因及解決辦法
????????執行node -v報錯如下:
????????[root@bogon ~]# node -v
????????node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
????????解決方法:
? ? ????????加載所有安裝包:yum repolist
? ? ? 查看哪個安裝包包含該庫:yum provides libstdc++.so.6
? ? ????????[root@localhost ~]# yum provides libstdc++.so.6
????????已加載插件:fastestmirror
????????Loading mirror speeds from cached hostfile
????????* base: mirrors.163.com
????????* epel: hkg.mirror.rackspace.com
????????* extras: mirrors.163.com
????????* updates: mirrors.cqu.edu.cn
????????libstdc++-4.8.5-36.el7.i686 : GNU Standard C++ Library
????????源? ? :base
????????匹配來源:
????????提供? ? :libstdc++.so.6
????????libstdc++-4.8.5-36.el7_6.1.i686 : GNU Standard C++ Library
????????源? ? :updates
????????匹配來源:
????????提供? ? :libstdc++.so.6
????????libstdc++-4.8.5-36.el7_6.2.i686 : GNU Standard C++ Library
????????源? ? :updates
????????匹配來源:
????????提供? ? :libstdc++.so.6
????????修復/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory問題
? ? ????????yum install glibc.i686 -y
????????修復error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
????????yum install zlib.i686 -y
????????yum install libstdc++-4.8.5-36.el7_6.2.i686
8.22
1、linux的ps命令:
? ? ????[root@localhost ~]# ps a
? ????PID TTY? ? ? STAT? TIME COMMAND
????1572 tty1? ? Ss+? ? 0:00 -bash
????3471 pts/1? ? Ss+? ? 0:00 -bash
????4223 pts/0? ? Ss? ? 0:00 -bash
????4249 pts/0? ? R+? ? 0:00 ps a
????其中:pid就是進程id,tty告訴用戶進程從哪一個終端開始,stat是當前進程狀態,S:sleeping,R:running,time:進程占cpu的總時間
????command:用戶運行的所有命令名稱
????ps的參數及其作用:
????-e 顯示所有進程;-f 全格式;-h 不顯示標題;-l 長格式; -w 寬輸出;
????a 顯示終端上所有進程,包括其他用戶進程;r 只顯示正在運行進程;u 查看進程所有者及其他信息; x 看到所有控制終端進程(這幾個常用)
2、讓xshell斷開連接后linux的程序仍然運行
? ????? nohup command &
????在這里要注意不能直接關掉xshell,而要使用exit退出,否則進程也會被殺掉。