主要的安裝流程參考原文地址:https://blog.csdn.net/xing851483876/article/details/84306953
使用XShell工具 上傳和下載文件 安裝
yum -y install lrzsz
或者
apt install lrzsz
如果rz上傳失敗請(qǐng)嘗試
$ rz -are --o-sync
1氯材、虛擬環(huán)境(virtualenv)的安裝
1审丘、安裝virtualenv
sudo pip install virtualenv
sudo pip install virtualenvwrapper #安裝虛擬環(huán)境管理工具
2、在home下創(chuàng)建虛擬環(huán)境安裝目錄
mkdir .virtualenvs
3砚哗、為virtualenv配置環(huán)境變量,打開(kāi).bashrc文件
sudo vim ~/.bashrc
在末尾添加兩行代碼
export WORKON_HOME=$HOME/.virtualenvs # 所有虛擬環(huán)境存儲(chǔ)的目錄
source /usr/local/bin/virtualenvwrapper.sh
使配置生效
source ~/.bashrc
如果有Python2 Python3兩個(gè)環(huán)境請(qǐng)加入環(huán)境變量
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
fi
如果遇到" command not found: shopt "的 "~/.bashrc" 配置問(wèn)題 說(shuō)明使用的是zsh shell
將所需配置修改寫入~/.zshrc
執(zhí)行 source ~/.zshrc
或者zsh切換bash
chsh -s /bin/bash
bash切換zsh
chsh -s /bin/zsh
4饰及、創(chuàng)建虛擬環(huán)境蔗坯,默認(rèn)命令創(chuàng)建的是python2的虛擬環(huán)境,指定創(chuàng)建python3.6的虛擬環(huán)境可以使用以下命令
mkvirtualenv -p /usr/bin/python3.6 XX #XX是虛擬環(huán)境的名字旋炒,創(chuàng)建python3.5的虛擬環(huán)境
其他命令:
workon xx #進(jìn)入虛擬環(huán)境XX
deactivate #退出虛擬環(huán)境
2步悠、在虛擬環(huán)境中安裝相應(yīng)的工具包
我們?cè)诒镜貙慸jango項(xiàng)目肯定是安裝了一堆相應(yīng)的包,需要把他們移植到阿里云上瘫镇。首先在本地ubuntu進(jìn)入虛擬環(huán)境鼎兽,在項(xiàng)目根目錄下,執(zhí)行以下命令收集安裝的包铣除,就是生成一個(gè)包的清單文件plist.txt谚咬。
pip freeze > requirment.txt
然后用xftp把這個(gè)requirment.txt文件上傳到阿里云項(xiàng)目的根目錄,然后進(jìn)入虛擬環(huán)境test(test是我新建的虛擬環(huán)境的名字)
workon test #進(jìn)入虛擬環(huán)境test
cd到plist.txt所在目錄
pip install -r requirment.txt #安裝txt文件上的包
3尚粘、Mysql數(shù)據(jù)庫(kù)的安裝和數(shù)據(jù)的遷移
安裝Mysql:輸入以下命令择卦,安裝過(guò)程會(huì)設(shè)置密碼,設(shè)置成和原來(lái)本地一樣的郎嫁,就不用在setting中修改了秉继。
sudo apt-get update
sudo apt-get install mysql-server
sudo apt-get install mysql-client
創(chuàng)建數(shù)據(jù)庫(kù):先登錄數(shù)據(jù)庫(kù), 然后創(chuàng)建數(shù)據(jù)庫(kù)v1泽铛,數(shù)據(jù)庫(kù)名字也創(chuàng)建成和原來(lái)本地一樣的尚辑,我的叫v1。
create database v1盔腔;
數(shù)據(jù)的遷移:把本地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)復(fù)制到阿里云上的數(shù)據(jù)庫(kù)中杠茬。先在本地生成備份文件月褥,v1是要備份的數(shù)據(jù)庫(kù),v1.sql是生成的備份文件瓢喉。然后用Xftp把v1.sql文件上傳到阿里云宁赤。
mysqldump -u root -p v1 >v1.sql
數(shù)據(jù)還原:阿里云終端 cd到v1.sql所在目錄,輸入以下命令
mysql -u root -p v1<v1.sql
mysql配置:找到mysqld.cnf文件注釋掉bind-address這一行
/etc/mysql/mysql.conf.d/mysqld.cnf #配置文件路徑
#bind-address = 127.0.0.1 #注釋掉這一行
4栓票、修改django的setting文件:
DEBUG = False
ALLOW_HOSTS=['XXXXXX'] #改成阿里云的公網(wǎng)IP
USWGI配置
三决左、nginx、uWSGI的安裝
在安裝前先了解下這幾個(gè)是什么東西:WSGI逗载、uWSGI哆窿、nginx。
WSGI:PythonWeb服務(wù)器網(wǎng)關(guān)接口(Python Web Server Gateway Interface)厉斟,這是一種協(xié)議規(guī)范挚躯,用于規(guī)范web server(比如uWSGI)和web application(Flask、Django等)之間的通信方式擦秽。這種協(xié)議其實(shí)是將我們和更加底層的HTTP码荔、TCP等協(xié)議分隔開(kāi)來(lái),使我們?cè)陂_(kāi)發(fā)的時(shí)候可以不用自己去實(shí)現(xiàn)這些協(xié)議的處理感挥,只關(guān)注于更高層次的邏輯處理缩搅,實(shí)現(xiàn)面向?qū)ο蟮木幊獭?/p>
uWSGI:uWSGI是一個(gè)Web服務(wù)器,它實(shí)現(xiàn)了WSGI協(xié)議触幼、uwsgi硼瓣、http等協(xié)議。它本身可以作為一個(gè)服務(wù)器單獨(dú)使用置谦,但是也可以和nginx組合使用堂鲤。一般Django部署都是用的nginx+uWSGI,可以理解為這種組合性能更優(yōu)媒峡。
nginx:這是一個(gè)高性能的web服務(wù)器/反向代理瘟栖,類似Apache。什么叫反向代理谅阿,客戶端通過(guò)一個(gè)代理去訪問(wèn)服務(wù)器半哟,這樣的代理叫正向代理;同樣的服務(wù)器前加一個(gè)代理和客戶端通信签餐,這樣的代理叫反向代理寓涨。nginx就是用來(lái)放在uWSGI前做反向代理。
我們?cè)诒镜亻_(kāi)發(fā)的時(shí)候沒(méi)有安裝過(guò)以上服務(wù)器氯檐,但是也可以python manage.py runserver運(yùn)行項(xiàng)目缅茉,那是因?yàn)镈jango等框架自帶了WSGI服務(wù)器,性能不強(qiáng)男摧,可以用于調(diào)試蔬墩。
轉(zhuǎn)自:https://blog.csdn.net/xing851483876/article/details/84306953
nginx安裝:
sudo apt-get update
sudo apt-get install nginx
安裝成功后,用瀏覽器訪問(wèn)你的阿里云IP地址耗拓,可以看到以下提示 :
nginx常用命令:
service nginx start #啟動(dòng)
service nginx stop #停止
service nginx reload #重啟
nginx配置:打開(kāi)配置文件default拇颅,路徑/etc/nginx/sites-available/default,設(shè)置以下內(nèi)容乔询。一個(gè)是server_name后面換成你的阿里云公網(wǎng)IP樟插,有的文章說(shuō)不換也行。關(guān)鍵是下面2個(gè)location竿刁,第一個(gè)location是設(shè)置的和uWSGI的關(guān)聯(lián)黄锤。第二個(gè)location /static是設(shè)置的靜態(tài)文件的路徑。如果你的項(xiàng)目還有media文件夾食拜,那還要加一個(gè)location /media鸵熟,把路徑設(shè)置上。注意:location 和alias后面有空格负甸。
server_name 47.106.84.245;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static {
alias /home/myweb/static;
}
上面nginx配置靜態(tài)文件有一個(gè)問(wèn)題流强,就是上面的目錄/root/xxx/xxx/static只是我們自己的靜態(tài)文件的目錄,你登錄admin后發(fā)現(xiàn)admin頁(yè)面的樣式都丟失了呻待。因?yàn)閐jango自帶的admin的靜態(tài)文件路徑?jīng)]有導(dǎo)入打月。所以就需要新建一個(gè)文件夾,我的是/root/xxx/xxx/nginx/static蚕捉,然后執(zhí)行命令把整個(gè)項(xiàng)目的所有靜態(tài)文件都收集到這個(gè)目錄下奏篙,再修改下上面的配置。
第一步:新建文件夾 /root/xxx/xxx/nginx/static
第二步:修改setting.py文件迫淹,增加STATIC_ROOT
STATIC_ROOT='/home/myweb/nginx/static/' #添加收集靜態(tài)文件的目錄
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
第三步:執(zhí)行以下代碼收集靜態(tài)文件
python manage.py collectstatic
第四步:修改nginx的配置
location /static {
alias /root/xxx/xxx/nginx/static;
}
uWSGI安裝:
這個(gè)是安裝在虛擬環(huán)境中秘通,先workon test進(jìn)入虛擬環(huán)境,安裝uWSGI前需要先安裝依賴千绪,輸入以下命令完成安裝
apt-get install build-essential python
apt-get install python-dev
pip install uwsgi
這里遇到問(wèn)題uwsgi安裝失敗 異常棧信息忘了復(fù)制了 主要原因是python3還是pip3軟連接出錯(cuò)
我是寫在python3重新安裝才發(fā)現(xiàn)的應(yīng)該安裝沒(méi)問(wèn)題可以直接設(shè)置軟連接
Python3.6安裝
安裝python3.6可能使用的依賴
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
下載python3.6編譯安裝
# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
# tar -xzvf Python-3.6.5.tgz -C /tmp
# cd /tmp/Python-3.6.5/
把Python3.6安裝到 /usr/local 目錄
# ./configure --prefix=/usr/local
# make
# make install
python3.6程序的執(zhí)行文件:/usr/local/bin/python3.6
python3.6應(yīng)用程序目錄:/usr/local/lib/python3.6
pip3的執(zhí)行文件:/usr/local/bin/pip3.6
更改/usr/bin/python鏈接
# ln -s /usr/local/bin/python3.6 /usr/bin/python 此步驟忽略
# ln -s /usr/local/bin/python3.6 /usr/bin/python3
# ln -s /usr/local/bin/pip3.6 /usr/bin/pip3
配置uWSGI:在django項(xiàng)目的根目錄下充易,新建兩個(gè)文件,uwsgi.ini和run.log 荸型。第一個(gè)是uWSGI的配置文件盹靴,第二個(gè)是日志記錄文件。設(shè)置uwsgi.ini文件如下:
[uwsgi]
#使用nginx連接時(shí)使用瑞妇,Django程序所在服務(wù)器地址
socket=127.0.0.1:9002
#項(xiàng)目目錄
chdir=/root/xxx/xxx/xxx/xxx
#項(xiàng)目中wsgi.py文件的目錄稿静,相對(duì)于項(xiàng)目目錄
wsgi-file=wsgi.py
# 進(jìn)程數(shù)
processes=4
# 線程數(shù)
threads=2
# uwsgi服務(wù)器的角色
master=True
# 存放進(jìn)程編號(hào)的文件
pidfile=uwsgi.pid
# 日志文件,因?yàn)閡wsgi可以脫離終端在后臺(tái)運(yùn)行辕狰,日志看不見(jiàn)改备。我們以前的runserver是依賴終端的
daemonize=run.log
chdir是django項(xiàng)目所在目錄,socket后面的地址是和上面nginx配置文件中的地址uwsgi_pass 127.0.0.1:8000對(duì)應(yīng)的蔓倍,規(guī)定nginx和uWSGI之間的通信端口悬钳。daemonize就是日志文件的路徑盐捷。disable-logging = true 表示不記錄正常信息,只記錄錯(cuò)誤信息默勾。wsgi-file是你django項(xiàng)目根目錄下項(xiàng)目同名目錄中有一個(gè)wsgi.py文件的路徑碉渡。pidfile是uwsgi.pid文件的路徑,這個(gè)文件是uWSGI運(yùn)行后自動(dòng)生成的母剥,里面記錄了uWSGI的進(jìn)程號(hào)滞诺,可以用來(lái)重啟uWSGI。但是我的uwsgi.pid文件記錄的進(jìn)程號(hào)老是不對(duì)环疼,用不了习霹。
————————————————
版權(quán)聲明:本文為CSDN博主「Mars_DD」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議炫隶,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明淋叶。
原文鏈接:https://blog.csdn.net/xing851483876/article/details/84306953
uWSGI基本命令:
啟動(dòng):uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重啟:uwsgi --reload uwsgi.pid
注:uwsgi啟動(dòng)命令在自己構(gòu)建的虛擬環(huán)境中啟動(dòng)
然后再外部重啟uwsgi服務(wù) 這樣我們就可以看到啟動(dòng)的進(jìn)程了
root 8754 0.0 1.8 131516 37820 ? S Sep22 0:03 /root/.virtualenvs/xx/bin/uwsgi --iniuwsgi.ini
root 8956 0.0 2.4 224040 49292 ? Sl Sep22 0:01 /root/.virtualenvs/xx/bin/uwsgi --iniuwsgi.ini
root 8957 0.0 2.2 221896 46744 ? Sl Sep22 0:00 /root/.virtualenvs/xx/bin/uwsgi --iniuwsgi.ini
root 8958 0.0 2.3 222400 47404 ? Sl Sep22 0:00 /root/.virtualenvs/xx/bin/uwsgi --iniuwsgi.ini
root 8959 0.0 1.5 205248 31108 ? Sl Sep22 0:00 /root/.virtualenvs/xx/bin/uwsgi --iniuwsgi.ini
通過(guò)外網(wǎng)訪問(wèn)阿里云地址就可以看到nginx代理成功
如果遇到mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
參考https://blog.csdn.net/lmss82/article/details/4414178
1.#ps -A|grep mysql
顯示類似:
1829 ? 00:00:00 mysqld_safe
1876 ? 00:00:31 mysqld
2.#kill -9 1829
3.#kill -9 1876
4.#/etc/init.d/mysql restart
5.#mysql -u root -p
uwsgi是運(yùn)行的virtualenvs 虛擬環(huán)境中的程序如果啟動(dòng)在系統(tǒng)中如/user/local/bin是訪問(wèn)不到服務(wù)的所以要kill 掉錯(cuò)誤的uwsgi進(jìn)程重新啟動(dòng)虛擬環(huán)境中的uwsgi