1瀑志、python3預(yù)置環(huán)境
sudo yum -y update
sudo yum -y wget 或 sudo yum install wget
yum -y groupinstall "Development tools" # 如果報(bào)錯(cuò)指定組沒有可安裝或升級的軟件包吗铐,則yum clean all后再執(zhí)行安裝
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
yum install python3-devel
2、安裝python3
- 下載python3.6到/usr/loca目錄
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
- 解壓
tar -zxvf Python-3.6.8.tgz
- 進(jìn)入解壓好的文件中
cd Python-3.6.8
- 編譯安裝到指定的路徑
./configure --prefix=/usr/local/python3
- 安裝python3
make
make install
- 添加軟鏈接定躏,添加變量患雇,方便直接使用
python3
命令(如果/usr/bin
中已有則無需添加)
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
- 給pip3建立軟鏈接
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
注: 如果軟鏈建立完成临梗,但是卻無法使用的時(shí)候執(zhí)行下面命令:
mv pip pip2 # (將文件 pip 更名為 pip2 )
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
2、虛擬環(huán)境(可選)
- 安裝
virtualenv
, 方便不同版本項(xiàng)目管理(可選)
pip3 install virtualenv
# 創(chuàng)建軟鏈接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv3
- 創(chuàng)建目錄
mkdir -p /data/env # 存放虛擬環(huán)境
- 創(chuàng)建環(huán)境
# 創(chuàng)建虛擬環(huán)境
virtualenv3 --python=/usr/bin/python 項(xiàng)目名
# 進(jìn)入指定的環(huán)境bin目錄
cd /data/env/環(huán)境名稱/bin
# 開啟虛擬環(huán)境(啟動(dòng)后出現(xiàn) (qize_demo)荧止,說明是成功進(jìn)入虛擬環(huán)境屹电。)
source activate
# 退出虛擬環(huán)境的命令
deactivate.bat
3、部署django項(xiàng)目
- 創(chuàng)建目錄
mkdir -p /data/wwwroot # 存放web項(xiàng)目
- 在本地項(xiàng)目目錄下用把當(dāng)前的環(huán)境依賴包導(dǎo)出到requirements.txt文件
pip freeze > requirements.txt
- 把打包的項(xiàng)目放到/data/wwwroot目錄下
- 解壓項(xiàng)目(.zip文件使用
unzip
命令解壓) - 進(jìn)入項(xiàng)目目錄
- 安裝requirements.txt里的依賴包跃巡。
pip3 install -r requirements.txt
- 如果出現(xiàn)報(bào)錯(cuò)
Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build
- 解決方案1:可以安裝
yum install python36u python36u-devel
危号,如果無法安裝,則使用yum install gcc mariadb-devel
- 解決方案2:如果上面的不行素邪,則
- 解決方案1:可以安裝
sudo python -m pip install --upgrade --force pip
sudo pip install setuptools==33.1.1
- 安裝mysql5.7(設(shè)置編碼為utf8)
http://www.reibang.com/p/59d663d73aab
https://blog.csdn.net/airtrioa/article/details/85096469 - 在本地把項(xiàng)目對應(yīng)的sql導(dǎo)出(可用navicat工具界面導(dǎo)出)
mysqldump -uroot -p password >數(shù)據(jù)庫名.sql
- 把導(dǎo)出的sql腳本放到linux的項(xiàng)目目錄下
- 創(chuàng)建項(xiàng)目對應(yīng)的數(shù)據(jù)庫外莲,并導(dǎo)入數(shù)據(jù)
# 登錄mysql
mysql -u用戶名 -p
# 創(chuàng)建項(xiàng)目對應(yīng)的數(shù)據(jù)庫;判斷原來不存在兔朦,則創(chuàng)建數(shù)據(jù)庫偷线,并指定編碼格式和校驗(yàn)集:
create database if not exists xxx default character set utf8 collate utf8_general_ci;
# 創(chuàng)建成功,使用該表
use xxx
# 導(dǎo)入數(shù)據(jù)
source 腳本所在的路徑/數(shù)據(jù)庫腳本名字.sql
# 如果數(shù)據(jù)庫創(chuàng)建錯(cuò)誤烘绽,則刪除
drop database xxx;
# 如果數(shù)據(jù)庫已創(chuàng)建淋昭,但是編碼忘了設(shè)置,則進(jìn)入該 庫安接,然后設(shè)置編碼為utf8
set names utf8;
- 退出mysql翔忽,進(jìn)入django項(xiàng)目根目錄英融,進(jìn)行數(shù)據(jù)庫遷移(期間如果報(bào)錯(cuò),則檢查
setting.py
中設(shè)置的數(shù)據(jù)庫名或用戶名密碼是否正確)
python3 manage.py migrate
- 啟動(dòng)django項(xiàng)目(8000端口)
python3 manage.py runserver 0.0.0.0:8000
- windows機(jī)使用telnet命令查看是否能訪問
telnet xxxx 8000
- 如果啟動(dòng)后歇式,外部無法訪問驶悟,則需要啟動(dòng)端口
http://www.reibang.com/p/3c0060444b4b - 或者檢查
setting.py
的配置
ALLOWED_HOSTS = ['*']
- 編寫和啟動(dòng)腳本
start.sh
,啟動(dòng)sh start.sh
可以編寫一個(gè)簡單的后臺啟動(dòng)+標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出到日志文件中
# 后臺啟動(dòng)django服務(wù)材失,輸出日志到日志文件中痕鳍,內(nèi)容為標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤
MYDATE=`date +%Y%m%d`
ALL_LOGFILE=/data/wwwroot/xxx/log/log_$MYDATE
nohup python3 manage.py runserver 0.0.0.0:8000 > ${ALL_LOGFILE} 2>&1 &
4、部署Vue項(xiàng)目
- 配置node npm環(huán)境
# 下載node龙巨,建議下載到/usr/local/lib
wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
# 解壓node
tar -xvf node-v10.16.3-linux-x64.tar.xz
# 修改node目錄名
mv node-v10.16.3-linux-x64 nodejs
# 創(chuàng)建軟鏈接(注意笼呆,源文件需要是絕對路徑)
ln -s /usr/local/lib/nodejs/bin/node /usr/local/bin/node
ln -s /usr/local/lib/nodejs/bin/npm /usr/local/bin/npm
# 查看版本,正確則OK
npm -v
node -v
- 安裝全局pm2
# 會(huì)安裝到上個(gè)步驟安裝的nodejs/bin目錄下
npm install pm2 -g
#不知道為啥旨别,-g在linux中不起作用诗赌,需要手動(dòng) 創(chuàng)建軟鏈接來設(shè)置全局(默認(rèn)安裝路徑是nodejs/bin)
ln -s /usr/local/lib/nodejs/bin/pm2 /usr/local/bin/
- 修改vue項(xiàng)目設(shè)置api文件中的host
// 換成服務(wù)器的IP和django項(xiàng)目端口
let host = 'http://xxxx:8000';
export {host};
- 打包vue項(xiàng)目,默認(rèn)生成一個(gè)dist目錄秸弛,這個(gè)文件夾就是我們要部署上線的項(xiàng)目
npm run build
- 編寫個(gè)
app.js
啟動(dòng)腳本铭若,主要目的是是讀取dist目錄下的單頁面文件(index.js),監(jiān)聽8080端口递览。
const fs = require('fs');
const path = require('path');
const express = require('express');
const app = express();
app.use(express.static(path.resolve(__dirname, './dist')))
//讀取目錄下的單頁面文件(index.js)叼屠,監(jiān)聽8080端口。
app.get('*', function(req, res) {
const html = fs.readFileSync(path.resolve(__dirname, './dist/index.html'), 'utf-8')
res.send(html)
})
app.listen(8080);
把dist目錄绞铃、app.js镜雨、package.json復(fù)制到linux中的項(xiàng)目目錄下
-
進(jìn)入到vue項(xiàng)目目錄,安裝依賴
npm install
安裝完依賴后的項(xiàng)目結(jié)構(gòu) -
啟動(dòng)服務(wù)
pm2 start app.js
啟動(dòng)成功 -
放開防火墻8080端口后憎兽,則在外網(wǎng)能進(jìn)行訪問了
訪問成功
未完待續(xù)
后續(xù)會(huì)加上Nginx+uwsgi