PythonWeb項(xiàng)目Django部署在Ubuntu18.04騰訊云主機(jī)上
Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04
材料準(zhǔn)備
準(zhǔn)備一個(gè)Django項(xiàng)目準(zhǔn)備一臺(tái)Ubuntu18.04的主機(jī)
ssh連接到主機(jī)(騰訊云)
Mac直接在bash中輸入ssh root@你的主機(jī)ip
Windows請(qǐng)下載ssh遠(yuǎn)程連接工具例如Putty
騰訊云默認(rèn)不能以root身份登錄,請(qǐng)使用以下方式登錄
$ ssh -q -l ubuntu -p 22 你的主機(jī)ip
配置Python3.6環(huán)境
Ubuntu18.04已經(jīng)默認(rèn)安裝了python3.6.5,所以不需要再安裝了,可使用python3命令查看
安裝pip3:
$ sudo apt install python3-pip
在命令行中輸入pip3以驗(yàn)證是否安裝成功。
接下來(lái)安裝virtualenv和virtualenvwrapper:
$ pip3 install virtualenv$ pip3 install virtualenvwrapper#創(chuàng)建你項(xiàng)目的虛擬環(huán)境$ mkvirtualenv django# 創(chuàng)建虛擬環(huán)境的根目錄$ mkdir $HOME/.virtualenvs#配置環(huán)境變量$ sudo vim ~/.bashrc
將以下內(nèi)容放到最后面
export WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenvsource ~/.local/bin/virtualenvwrapper.sh
激活環(huán)境變量來(lái)生效:
$ source ~/.bashrc

安裝Nginx
$ sudo apt-get install nginx#查看是否運(yùn)行$ ps aux | grep nginx

安裝完成后,在瀏覽器中輸入你的ip地址,如果看到以下界面則說(shuō)明安裝完成!

安裝Mysql并配置
$ sudo apt-get install mysql-server#查看是否運(yùn)行$ ps aux | grep mysql
接下來(lái)配置mysql的密碼和權(quán)限問(wèn)題
$ sudo mysql_secure_installation
執(zhí)行后會(huì)彈出多個(gè)選擇界面
1.是否安裝密碼校驗(yàn)插件VALIDATE PASSWORD PLUGIN can be used to test passwords......選擇n2.設(shè)置密碼Please set the password for root here.New password:xxxxxxRe-enter new password:xxxxxx3.刪除匿名用戶(生產(chǎn)環(huán)境有必要?jiǎng)h除)By default, a MySQL installation has an anonymous user......選擇y4.是否允許root用戶遠(yuǎn)程登錄Normally, root should only be allowed to connect from‘localhost'. ......選擇y5.是否刪除“測(cè)試”庫(kù)By default, MySQL comes with a database named ‘test' thatanyone can access. This is also intended only for testing,......選擇y6.是否立即生效Reloading the privilege tables will ensure that all changes......選擇y
配置完mysql后,把bind-address注釋掉,使得本機(jī)以外的ip都能連接進(jìn)來(lái):
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf# 把這一行注釋上# bind-address 127.0.0.1#保存退出!wq

然后登錄到mysql中
$ mysql -uroot -pmysql> use mysqlmysql> update user set host='%' where user=‘root';mysql> grant all on *.* to root@'%' identified by '你的密碼' with grant option;flush privileges;

重啟mysql服務(wù):
$ service mysql restart
到此,mysql配置完成,可以在你的本地機(jī)上用navicat連接到遠(yuǎn)程服務(wù)器測(cè)試,方便操作數(shù)據(jù)庫(kù)

測(cè)試Django項(xiàng)目能否正常運(yùn)行
#進(jìn)入虛擬環(huán)境$ workon django$ cd 你的項(xiàng)目根路徑#同步到數(shù)據(jù)庫(kù)$ python manage.py migrate$ python manage.py runserver 0.0.0.0:8000
在你的本機(jī)上輸入服務(wù)器ip:8000測(cè)試能否訪問(wèn),如果能訪問(wèn)則接著往下看(此時(shí)static靜態(tài)資源還沒(méi)有被代理加載不出來(lái))
安裝uwsgi和測(cè)試
#首先進(jìn)入虛擬環(huán)境$ workon django$ pip3 install uwsgi

然后先測(cè)試一下uwsgi能否拉起django項(xiàng)目
$ cd 你的項(xiàng)目根路徑$ uwsgi --http :8000 --module 你的項(xiàng)目名.wsgi
如果能拉起的話,就可以來(lái)配置nginx和uwsgi了。
nginx配置和uwsgi配置
創(chuàng)建自己的nginx.conf配置
vim my_nginx.conf
server {listen 80;server_name 你的ip地址或者域名;charset utf-8;client_max_body_size 75M;#代理django的媒體文件location /media { alias 你的項(xiàng)目路徑/media;}#代理django的靜態(tài)文件location /static { alias 你的項(xiàng)目路徑/static;}#端口轉(zhuǎn)發(fā)location / { uwsgi_pass django; include uwsgi_params;}}
配置完成后把文件復(fù)制到nginx目錄下并重啟服務(wù):
$ cp my_nginx.conf /etc/nginx/conf.d/$ service nginx restart
然后配置uwsgi.ini
$ vim uwsgi.ini
[uwsgi]chdir = 你的項(xiàng)目根路徑module = 你的項(xiàng)目名.wsgimaster = trueprocesses = 10socket = 127.0.0.1:8000vacuum = truevirtualenv = /home/ubuntu/.virtualenvs/django#你的項(xiàng)目的虛擬環(huán)境地址
Django項(xiàng)目生產(chǎn)環(huán)境配置
首先需要收集靜態(tài)文件
#收集靜態(tài)文件$ python manage.py collectstatic
在settings.py中,注釋掉STATICFILES_DIRS
#STATICFILES_DIRS=[#os.path.join(BASE_DIR,'static')#]# 加入 STATIC_ROOT=os.path.join(BASE_DIR,'static')
settings.py中,debug改為True:
DEBUG = TrueALLOWED_HOSTS = ['*']
啟動(dòng)項(xiàng)目,部署成功
來(lái)到uwsgi.ini目錄下
uwsgi -i uwsgi.ini

在瀏覽器中輸入服務(wù)器ip地址
成功訪問(wèn)

部署成功!
以上就是Ubuntu18.04的部署
** 如果想在Ubuntu16.04部署,大致步驟是一模一樣的,只是Ubuntu16.04中預(yù)裝了python2沒(méi)有python3,需要自行安裝python3和pip3,僅僅多了此步驟而已!**
總結(jié)
以上所述是小編給大家介紹的PythonWeb項(xiàng)目Django部署在Ubuntu18.04騰訊云主機(jī)上,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
解決python虛擬環(huán)境切換無(wú)效的問(wèn)題
這篇文章主要介紹了解決python虛擬環(huán)境切換無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
利用python GDAL庫(kù)讀寫geotiff格式的遙感影像方法
今天小編就為大家分享一篇利用python GDAL庫(kù)讀寫geotiff格式的遙感影像方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
Python實(shí)現(xiàn)簡(jiǎn)單的猜單詞
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單的猜單詞,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
關(guān)于python安裝第三方庫(kù)的問(wèn)題與解決方案
Python開發(fā)中經(jīng)常遇到第三方庫(kù)安裝困難的問(wèn)題,速度慢可以使用國(guó)內(nèi)鏡像如清華鏡像加速,若遇到wheel錯(cuò)誤,可以手動(dòng)下載whl文件進(jìn)行安裝,對(duì)于找不到的包,可以嘗試在Python的官方包發(fā)布網(wǎng)站上進(jìn)行搜索和下載,本文提供了具體的解決方案和操作步驟2024-10-10
關(guān)于Python中空格字符串處理的技巧總結(jié)
在我們?nèi)粘9ぷ髦薪?jīng)常會(huì)遇到字符串處理,大家應(yīng)該都不陌生,但空格字符串呢?會(huì)不會(huì)就不太熟悉了呢?所以下面這篇文章就來(lái)給大家總結(jié)了關(guān)于Python中空格字符串處理的技巧,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08
Python加密方法小結(jié)【md5,base64,sha1】
這篇文章主要介紹了Python加密方法,結(jié)合實(shí)例形式總結(jié)分析了md5,base64,sha1的簡(jiǎn)單加密方法,需要的朋友可以參考下2017-07-07
Python時(shí)間獲取及轉(zhuǎn)換知識(shí)匯總
這篇文章主要介紹了Python時(shí)間獲取及轉(zhuǎn)換知識(shí)匯總的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
python GUI庫(kù)圖形界面開發(fā)之PyQt5動(dòng)態(tài)(可拖動(dòng)控件大小)布局控件QSplitter詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5動(dòng)態(tài)(可拖動(dòng)控件大小)布局控件QSplitter詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03

