阿里雲部署Django專案(nginx+uWSGI)
前言:部署的前提是你的專案已經在本地完成可以執行了,我的本地環境是ubuntu16.04+python3.6+Django2.2+Mysql,在python虛擬環境(virtualenv)下建的專案。阿里雲部署用的是nginx+uWSGI。
雲伺服器購買和配置
去雲伺服器官網購買一臺雲伺服器ECS(Elastic Compute Service),可以直接支付寶掃碼登入,個人用的話入門級就可以了. 購買的時候會讓你選作業系統,因為我本地用的就是Ubuntu所以選的ubuntu16.04 64位。
1.ubuntu升級python版本(3.5->3.6)
預設的Python版本是2.7和3.5,Python版本需>=3.6所以進行升級
命令如下:
$ sudo add-apt-repository ppa:jonathonf/python-3.6
$ sudo apt-get update
$ sudo apt-get install python3.6
#移除原3.4link
$ sudo rm /usr/bin/python3
更換預設python3 的版本為3.6
$ sudo ln -s /usr/bin/python3.6 /usr/bin/python3
安裝完Python後pip需重新安裝:
$ wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
$ sudo python get-pip.py
2.虛擬環境(virtualenv)的安裝
本地專案是建在python虛擬環境下的,所以在阿里雲上也要先建下虛擬環境。安裝如下步驟如下:
1、安裝virtualenv
$sudo pip install virtualenv
安裝虛擬環境管理工具
$sudo pip install virtualenvwrapper
在home下建立虛擬環境安裝目錄
$mkdir .virtualenvs
為virtualenv配置環境變數,開啟.bashrc檔案,在末尾加上兩行程式碼,在阿里雲的ubuntu上,你想編輯檔案只能用vi/vim開啟,對於沒用過vi的話還是需要點時間學習的。或者你可以在本地pc編輯好,再用Xftp工具上傳覆蓋原來的檔案。用vim開啟.bashrc ,一般就在home資料夾下
$cd .virtualenvs
$sudo vim ~/.bashrc
在末尾新增兩行程式碼
export WORKON_HOME=$HOME/.virtualenvs # 所有虛擬環境儲存的目錄
source /usr/local/bin/virtualenvwrapper.sh
使用編輯器語言
: wq
儲存退出
使配置檔案生效
$source ~/.bashrc
建立虛擬環境,預設命令建立的是python2的虛擬環境,指定建立python3.6的虛擬環境可以使用以下命令
mkvirtualenv -p /usr/bin/python3.6 XX
XX是虛擬環境名字,這個可以自己定義
workon xx #進入虛擬環境XX
deactivate #退出虛擬環境
在虛擬環境裡安裝需要的包
安裝命令 pip3 install xxx 其中 xxx 是包名,會python的都會安裝,不多說
3.安裝資料庫
Mysql資料庫的安裝和資料的遷移
安裝Mysql:輸入以下命令,安裝過程會設定密碼
$sudo apt-get update
$sudo apt-get install mysql-server
$sudo apt-get install mysql-clien
可能出現的問題
1.mysql配置:找到mysqld.cnf檔案註釋掉bind-address這一行
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#bind-address= 127.0.0.1 #註釋掉這一行
2.針對ubuntu的mysql資料庫預設字型是拉丁文,需要修改配置檔案,防止插入中文出現錯誤.針對這個問題的修改可以自行百度方案,修改即可,非常容易
4.nginx,uWSGI的安裝
$sudo apt-get install gcc zlib1g-dev libpcre3 libpcre3-dev libssl-dev
#新買的雲伺服器 ,需要先配置gcc編譯環境
$sudo apt-get install nginx
#再安裝nginx
安裝成功後,用瀏覽器訪問你的阿里雲IP地址,可以看到以下提示 :
nginx常用命令:
service nginx start #啟動
service nginx stop #停止
service nginx reload #重啟
安裝好的檔案位置:這些檔案暫時跟你沒什麼關係,越學習,越會熟悉
/usr/sbin/nginx:主程式
/etc/nginx:存放配置檔案
/usr/share/nginx:存放靜態檔案
/var/log/nginx:存放日誌
檢查是否安裝成功過
$ps -ef | grep nginx
nginx配置:開啟配置檔案default,路徑/etc/nginx/sites-available/default
sudo vim /etc/nginx/sites-available/default
設定以下內容
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 129.211.59.60;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static{
alias /home/ubuntu/myblog-master\myblog-master\post\static\post;
}
}
一個是server_name後面換成你的阿里雲公網IP,有的文章說不換也行,經過實驗,不換確實可以。
關鍵是下面2個location:
第一個location是設定的和uWSGI的關聯。
第二個location /static是設定的靜態檔案的路徑。
如果你的專案還有media資料夾,那還要加一個location /media,把路徑設定上。
注意:location 和alias後面有空格,格式不能有任何語法錯誤
配置靜態檔案
第一步:新建資料夾 /home/myweb/nginx/static
第二步:修改setting.py檔案,增加STATIC_ROOT
STATIC_URL = '/static/'
STATIC_ROOT = '/home/ubuntu/myblog-master\myblog-master\post\static\post'
STATICFILES_DIRS = [
('css',os.path.join(STATIC_ROOT,"css").replace('\\','/')),
('images',os.path.join(STATIC_ROOT,'image').replace('\\','/')),
('js',os.path.join(STATIC_ROOT,'js').replace('\\','/')),
]
第三步:執行以下程式碼收集靜態檔案
python manage.py collectstatic
第四步:修改nginx的配置
location /static{
alias /home/ubuntu/myblog-master\myblog-master\post\static\post;
}
uWSGI安裝:
這個是安裝在虛擬環境中,先workon xxx 進入虛擬環境,安裝uWSGI前需要先安裝依賴,輸入以下命令完成安裝
$sudo apt-get install build-essential python
$sudo apt-get install python-dev
$sudo pip install uwsgi
配置uWSGI:在django專案的根目錄下,新建兩個檔案,uwsgi.ini和run.log 。第一個是uWSGI的配置檔案,第二個是日誌記錄檔案。設定uwsgi.ini檔案如下:
[uwsgi]
chdir=/home/ubuntu/myblog-master/myblog-master
module=myblog.wsgi:application
socket=127.0.0.1:8000
master=true
disable-logging=true
wsgi-file=/home/ubuntu/myblog-master/myblog-master/myblog/wsgi.py
pidfile=/home/ubuntu/myblog-master/myblog-master/uwsgi.pid
socket後面的地址是和上面nginx配置檔案中的地址uwsgi_pass 127.0.0.1:8000對應的,規定nginx和uWSGI之間的通訊埠。daemonize就是日誌檔案的路徑。disable-logging = true 表示不記錄正常資訊,只記錄錯誤資訊。wsgi-file是你django專案根目錄下專案同名目錄中有一個wsgi.py檔案的路徑。pidfile是uwsgi.pid檔案的路徑,這個檔案是uWSGI執行後自動生成的,裡面記錄了uWSGI的程式號,可以用來重啟uWSGI。
路徑一定要準確,=前後不允許有空格!!!
uWSGI基本命令:
啟動:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重啟:uwsgi --reload uwsgi.pid
全部配置好後,重啟nginx和uWSGI,使用雲伺服器公網ip就可以瀏覽你的專案了,參考 http://129.211.59.60/
相關文章
- 使用nginx+uwsgi部署Django專案NginxDjango
- 阿里雲部署Django專案(nginx+uWSGI)-2018.11阿里DjangoNginx
- centos8-django專案部署 nginx+uwsgiCentOSDjangoNginx
- 阿里雲伺服器部署django專案阿里伺服器Django
- 阿里雲centos7部署Django專案阿里CentOSDjango
- 把django專案部署到阿里雲伺服器流程Django阿里伺服器
- Djang專案部署阿里雲伺服器(四)之執行Django專案阿里伺服器Django
- 【django輕量級框架】django專案部署到阿里雲伺服器流程Django框架阿里伺服器
- 5.Django專案部署Django
- Vue專案打包到django部署VueDjango
- Linux 下部署Django專案LinuxDjango
- docker 部署 django + mysql + vue 專案DockerDjangoMySqlVue
- Django筆記四十四之Nginx+uWSGI部署Django以及Nginx負載均衡操作Django筆記Nginx負載
- 阿里雲部署nuxt專案阿里UX
- 使用 uWSGI 和 Nginx 部署 Django 專案NginxDjango
- 阿里雲部署Django專案(超詳細圖文教程)—— Part3. Django settings修改、PostgreSQL配置阿里DjangoSQL
- 阿里雲部署Django專案(超詳細圖文教程) —— Part2. 使用Nginx, Gunicorn, virtualenv, supervisor 部署Django應用阿里DjangoNginx
- 寶塔皮膚成功部署Django專案流程Django
- django專案部署到centos,踩的坑DjangoCentOS
- Ubuntu Apache下部署Django2專案UbuntuApacheDjango
- Centos7系統部署django專案CentOSDjango
- 在centos8使用Docker部署Django專案CentOSDockerDjango
- 伺服器(Aliyun)部署Django專案(Ubunto版)伺服器Django
- 部署Django到阿里雲伺服器教程Django阿里伺服器
- 如何在阿里雲上部署django(番外篇)阿里Django
- vue+express+mysql專案總結(node專案部署阿里雲通用)VueExpressMySql阿里
- CentOS下寶塔部署Django專案的詳細教程CentOSDjango
- django專案在uwsgi+nginx上部署遇到的坑DjangoNginx
- centos+nginx+uwsgi部署django專案上線詳解CentOSNginxDjango
- 專案完成小結 - Django-React-Docker-Swag部署配置DjangoReactDocker
- Windows下使用Apache和mod_wsgi部署django專案WindowsApacheDjango
- Centos 7下Nginx+uWsgi部署Flask應用CentOSNginxFlask
- 騰訊雲伺服器 Django專案部署 傻瓜式部署全流程 (一)伺服器Django
- 一學就會的django專案伺服器部署nginx-uwsgi-django/buildDjango伺服器NginxUI
- 打造專屬測試平臺4-使用Docker部署Django專案DockerDjango
- 如何在阿里雲上部署 Django 應用程式阿里Django
- mac osx 上面部署Django專案 apache+mysql+mod_wsgiMacDjangoApacheMySql
- django專案使用Django