django+uwsgi+nginx阿里云服務(wù)器部署

*注:轉(zhuǎn)載自:

https://www.cnblogs.com/znn041622/p/11145952.html

一.環(huán)境介紹:

????(1)阿里云cms(ubumtu18.0.1)

????(2) git

????(3)mysql5.7

????(4)python

? ? (5) uwsgi

????(6) nginx

????(7)django2.0

二:環(huán)境配置:

1.安裝前準(zhǔn)備工作:

(1) 因?yàn)榘⒗镌品?wù)器安全要求比較高隶糕,因此混狠,需要登錄后臺(tái)服務(wù)器摘投,去安全組設(shè)置開放接口,

需要開放3306(數(shù)據(jù)庫),22(22)ssh后續(xù)連接,80(http)服務(wù),此外打開3000-9000端口孝鹊。

(2)開啟FTP服務(wù),方便后續(xù)上傳文件和安裝包穴墅。

2.git安裝以及相關(guān)設(shè)置

sudo apt-get install git

2.1文件保存到github上惶室。

(1)注冊(cè)github賬戶,同時(shí)下載bendigit客戶端

(2)在git客戶端做基本配置,自己的名字和郵箱:

git config --global user.name "yourname"

git config --global user.email "youremail"

(3)二玄货、生成SSH密鑰過程:

1.查看是否已經(jīng)有了ssh密鑰:cd ~/.ssh如果沒有密鑰則不會(huì)有此文件夾皇钞,有則備份刪除

2.生成密鑰:$ ssh-keygen -t rsa -C “yourenail”按3個(gè)回車,密碼為空松捉〖薪纾可以看到如下內(nèi)容:

“Your identification has been saved in /home/tekkub/.ssh/id_rsa.

Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.

The key fingerprint is:………………最后得到了兩個(gè)文件:id_rsa和id_rsa.pub”

文件在用戶/users/username/.ssh下。

3.登錄github,點(diǎn)擊settings,添加密鑰到ssh:ssh-add,添加的是“id_rsa.pub”里面的公鑰隘世。

5.測(cè)試:ssh -Tgit@github.com可柿,出現(xiàn)如下內(nèi)容說明測(cè)試連接成功:

“The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts.ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell accessConnection to github.com closed.”

git安裝成功

2.2搭建自己的git服務(wù)器:

(1)創(chuàng)建git用戶和權(quán)限:

添加用戶:adduser git

修改權(quán)限:vi /etc/passwd

找到文件:git:x:1001:1001:,,,:/home/git:/bin/bash做修改如下:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shel

(2)創(chuàng)建git公鑰匙:

同上述步驟3.1步驟的1和2.復(fù)制id_rsa.pub內(nèi)容,回到服務(wù)器操作:

cd/home/git/cd/home/git/?mkdir .ssh

cd.sshcd.ssh?vi authorized_keys

需要先檢測(cè)是否有.ssh目錄丙者,將公匙保存在文件里复斥,然后退出。

(3)測(cè)試械媒,創(chuàng)建一個(gè)倉庫目锭,常識(shí)獲取:

cd/varcd/var?chown -R git:git git

chmod777gitchmod777git?cd git

接下來纷捞,我們用git命令初始化一個(gè)倉庫:

$ git init --bare arepoforyourproject.git

回到你本地的電腦上痢虹,我們通過克隆來試試倉庫是否可以使用:

$ git clone git@10.0.0.121:/var/git/arepoforyourproject.git

然后會(huì)提示你輸入git的密碼(創(chuàng)建用戶時(shí)的密碼),輸入進(jìn)去主儡,

git服務(wù)器已經(jīng)OK了奖唯。

3.數(shù)據(jù)庫安裝:

sudo apt-get install mysql

sudo apt-get update

sudo apt-get install mysql-server

sudo apt-get install mysql-client (安裝過程中需要設(shè)置密碼:123456)

sudo apt-get install libmysqlclient-dev

安裝完成以后,輸入:mysql -uroot -p 回車 輸入密碼看能否進(jìn)行正常的本地登錄糜值。

如果無法登陸(確認(rèn)服務(wù)器打開了3306端口):

3.1修改mysql監(jiān)聽I(yíng)P:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address丰捷,如果監(jiān)聽固定遠(yuǎn)程IP坯墨,則改成遠(yuǎn)程主機(jī)IP,

若監(jiān)聽所有IP瓢阴,則改成0.0.0.0或者注釋bind-address:

service mysql restart

查看MySQL監(jiān)聽地址:

netstat -ano | grep 3306畅蹂,看到:

tcp 0 0.0.0:3306 0.0.0.01:*(配置監(jiān)聽所有人)

監(jiān)聽成功

3.2遠(yuǎn)程登錄實(shí)現(xiàn):

grant all privileges on *.* to '用戶'@'ip' identified by '密碼' with grant option;

flush privileges;

第一句語句語句中,*.*代表所有庫表荣恐,若想給予所有IP權(quán)限, ”ip”寫成“%”,所以第一句sql的意思是給予來自所有IP地址的通過“用戶”累贤, “密碼”登錄的用戶對(duì)所有庫表的所有操作權(quán)限叠穆。 第二句sql,刷新權(quán)限臼膏。

service mysql restart

然后同樣重啟MySQL生效硼被。

3.3 mysql -u ‘user’ -p,然后輸入密碼就可以登陸成功。

mysql安裝成功

4.python安裝:

系統(tǒng)自帶了2.7版本渗磅,以及3.6.7.項(xiàng)目使用3.6.2,因此嚷硫,采用編譯安裝3.6.2版本的python:

(1)依賴庫的預(yù)安裝:

sudo apt-get install gcc make zlib1g-dev

sudo apt-get install libbz2-dev

sudo apt-get install libsqlite3-dev

sudo apt-get install python3-dev libxml2-dev libffi-dev libssl-dev libxslt1-dev

(2)安裝:

獲取python包:

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

或者下載本地,通過ftp上傳服務(wù)器

解壓:

tar xJf Python-3.6.1.tar.xz

進(jìn)入目錄配置:

./configure --prefix=/usr/python3

編譯:

make

安裝:sudo -H make install

建立鏈接:

ln -s /usr/python/bin/python3 /usr/bin/python3

python3安裝成功始鱼。

4.1虛擬環(huán)境建立:

apt-get install virtaulenv

apt-get install virtualenvwrapper

安裝完virtualenvwrapper后仔掸,還需要配置virtualenvwrapper的環(huán)境變量。

首先通過which virtualenvwrapper.sh命令查看virtualenvwrapper.sh文件所在的路徑医清。

在當(dāng)前用戶目錄下創(chuàng)建.virtualenv文件夾起暮,用來存放所有的虛擬環(huán)境目錄。

在當(dāng)前用戶目錄下編輯.bashrc文件会烙,添加以下代碼:

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

然后退出bashrc文件负懦,輸入命令source ~/.bashrc。

5.安裝uwsgi:

pip3 install uwsgi

6.安裝nginx:

apt-get install nginx

三.部署自己的項(xiàng)目到服務(wù)器上:

本地工作:

(1)確認(rèn)項(xiàng)目沒有bug柏腻。

(2)用pip freeze > requirements.txt將當(dāng)前環(huán)境的包導(dǎo)出到requirements.txt文件中纸厉,方便部署的時(shí)候安裝。

(3)項(xiàng)目上傳到github或者自己服務(wù)器:

git init 初始化倉庫

git add . 批量跟蹤倉庫文件

git commit -m '提交說明'(必須要寫)

創(chuàng)建一個(gè)遠(yuǎn)程倉庫:

git remote add origin xxx.git (倉庫地址)

將本地倉庫中的代碼提交到遠(yuǎn)程服務(wù)器的master分支上

git push -u origin master(首次提交需要加-u)

服務(wù)器端工作:

(1)mkvirtualenv --python=/usr/bin/python3 xfz-env 新建虛擬環(huán)境

(2)進(jìn)入虛擬環(huán)境:

git init

創(chuàng)建一個(gè)遠(yuǎn)程倉庫:

git remote add origin xxx.git (倉庫地址)

git pull origin master

pip install -r requirements.txt

(3)進(jìn)入mysql數(shù)據(jù)庫中五嫂,創(chuàng)建好項(xiàng)目的數(shù)據(jù)庫颗品。

執(zhí)行python manage.py makemigrations/migrate將模型映射到數(shù)據(jù)庫中。

執(zhí)行python manage.py runserver 0.0.0.0:8000贫导,然后在自己電腦上訪問這個(gè)網(wǎng)站抛猫,確保沒有BUG。

在settings.py中的ALLOWED_HOST添加網(wǎng)站的域名或者ip地址孩灯。

設(shè)置DEBUG=False闺金,避免如果你的網(wǎng)站產(chǎn)生錯(cuò)誤,而將錯(cuò)誤信息暴漏給用戶峰档。

在settings.py中配置STATIC_ROOT

(4)執(zhí)行g(shù)it命令败匹,更新到服務(wù)器上:

當(dāng)前目錄下新建文件夾:STATIC_ROOT寨昙,并且執(zhí)行python manage.py collectstatic

執(zhí)行python manage.py runserver 0.0.0.0:8000,然后在自己電腦上訪問這個(gè)網(wǎng)站掀亩,確保沒有BUG

(5)當(dāng)前目錄下創(chuàng)建uwsgi,ini(修改項(xiàng)目路徑舔哪,home,按照自己項(xiàng)目的路徑):

[uwsgi]

# 必須全部為絕對(duì)路徑

# 項(xiàng)目的路徑

chdir = /srv/beike/xfz

# Django的wsgi文件

module = xfz.wsgi

# Python虛擬環(huán)境的路徑

home = /root/.virtualenvs/xfz-env

# 進(jìn)程相關(guān)的設(shè)置

# 主進(jìn)程

master = true

# 最大數(shù)量的工作進(jìn)程

processes = 10

http = :8000

# 設(shè)置socket的權(quán)限

chmod-socket = 666

# 退出的時(shí)候是否清理環(huán)境

vacuum = true

daemonize = /var/log/xfz_uwsgi.log

然后通過命令uwsgi --ini uwsgi.ini運(yùn)行,確保沒有錯(cuò)誤槽棍。然后在瀏覽器中訪問http://ip地址:8000捉蚤,如果能夠訪問到頁面(可能沒有靜態(tài)文件)說明uwsgi配置沒有問題

(6)在/etc/nginx/conf.d目錄下,新建一個(gè)文件炼七,叫做zhiliaoketang.conf(根據(jù)自己情況也可以叫其他名字缆巧,

修改server 后的路徑到自己的項(xiàng)目路徑,server_name到自己的項(xiàng)目名):

upstream zhiliaoketang {

server unix:///srv/zhiliaoketang/zhiliaoketang.sock;

}

# 配置服務(wù)器

server {

# 監(jiān)聽的端口號(hào)

listen 80;

# 域名

server_name 192.168.0.101;

charset utf-8;

# 最大的文件上傳尺寸

client_max_body_size 75M;

# 靜態(tài)文件訪問的url

location /static {

# 靜態(tài)文件地址

alias /srv/zhiliaoketang/static_dist;

}

# 最后豌拙,發(fā)送所有非靜態(tài)文件請(qǐng)求到django服務(wù)器

location / {

uwsgi_pass zhiliaoketang;

# uwsgi_params文件地址

include /etc/nginx/uwsgi_params;

}

}

service nginx configtest陕悬,如果ok說明成功了

service nginx restart

在返回到項(xiàng)目目錄,打開uwsgi:

注釋掉:

“http = :8000”按傅,并添加:

“socket = srv/zhiliaoketang/zhiliaoketang.sock”(該內(nèi)容需要與zhiliaoketang.conf下面的upstream

中配置路徑保持一致)捉超。

至此,整個(gè)配置完成唯绍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拼岳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子推捐,更是在濱河造成了極大的恐慌裂问,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牛柒,死亡現(xiàn)場(chǎng)離奇詭異堪簿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)皮壁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門椭更,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛾魄,你說我怎么就攤上這事虑瀑。” “怎么了滴须?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵舌狗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我扔水,道長(zhǎng)痛侍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任魔市,我火速辦了婚禮主届,結(jié)果婚禮上赵哲,老公的妹妹穿的比我還像新娘。我一直安慰自己君丁,他們只是感情好枫夺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绘闷,像睡著了一般橡庞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上簸喂,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天毙死,我揣著相機(jī)與錄音,去河邊找鬼喻鳄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛确封,可吹牛的內(nèi)容都是我干的除呵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爪喘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼颜曾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秉剑,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤泛豪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后侦鹏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诡曙,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年略水,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了价卤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渊涝,死狀恐怖慎璧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跨释,我是刑警寧澤胸私,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鳖谈,受9級(jí)特大地震影響岁疼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚯姆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一五续、第九天 我趴在偏房一處隱蔽的房頂上張望洒敏。 院中可真熱鬧,春花似錦疙驾、人聲如沸凶伙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽函荣。三九已至,卻和暖如春扳肛,著一層夾襖步出監(jiān)牢的瞬間傻挂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工挖息, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留金拒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓套腹,卻偏偏與公主長(zhǎng)得像绪抛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子电禀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355