如何把本地的Django專案部署到伺服器(親測)
如何將本地的Django專案部署到雲伺服器
開發環境
- 開發語言: Python
- 後臺框架:Django
- 前端框架:bootstrap
- web伺服器:nginx
- wsgi伺服器:uwsgi
檢視本地專案Django和Python版本:
(可以直接安裝Django最新版本就可以了,Python版本不能低於3.4)
Django2.0.4
Python3.6.5
首先python3的安裝
首先在官網下載安裝包 python-3.6.5
(直接使用wget命令下載,速度也賊快,下載完成後發現在根目錄下多了一個Python-3.6.5.tgz的壓縮包)安裝相關包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
伺服器自帶的python2安裝在usr/bin/目錄中,可以通過
which python
命令來檢視python的安裝目錄。
然後進入該目錄,用我們熟悉的python -v來檢視python版本。(其實直接在根目錄下用python -v也是可以的,但which這個命令是真的可不錯)利用
tar xf Python-3.6.5.tgz
命令解壓解壓完成後,(進入解壓後的目錄),編輯安裝命令。
./configure –prefix=/usr/local/python3/ # 安裝目錄為/usr/local/python3(可以自定義安裝目錄)
make && make install # 編譯並安裝- 提示bug: ./configure: No such file or directory
- 是因為沒有進入解壓後的目錄,configure是安裝檔案裡面的配置工具。
設定軟連線
一條命令解決,再也不用配環境變數了。linux的軟連結相當於windows裡的快捷方式,快捷方式刪了就刪了,原來檔案還是存在的。軟連線後面也有大用。ln -s /usr/local/python3/bin/python3 /usr/bin/python3.6
即在/usr/bin裡面建立一個快捷方式python3.6,該快捷方式指向python3的安裝路徑。
輸入python3.6 -v
測試,成功
- 可以通過以下命令檢視所有的軟連線:
cd usr/bin/
ls -l
可以看到python,python2,連線的都是python2.7,而python3.6連線的就是剛安裝的版本 參考連結:[百度經驗-怎麼修改軟連線](https://jingyan.baidu.com/article/6b97984dd6dbb01ca2b0bf0a.html)
- 也可以將python3.6直接改為python。
- 備份原連線為:python -> python2
- 使用ln -s /usr/local/python3/bin/python3 /usr/bin/python,建立失敗,發現python已經存在。
- 刪除原連線 rm /python2
- 再次建立成功。
安裝各種軟體
- 安裝資料庫
安裝sqlite,mysql
yum install mysql mysql-devel
yum install sqlite-devel
- 安裝pip
yum -y install python-pip
報錯
[root@VM_0_12_centos bin]# yum -y install python-pip
File “/usr/bin/yum”, line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
先安裝get-pip
wget –no-check-certificate https://bootstrap.pypa.io/get-pip.py
安裝成功。再用python命令安裝pip
python get-pip.py
安裝成功,pip版本為:
Successfully installed pip-10.0.1 wheel-0.31.0
但此時未配置軟連線的情況下,需要使用python -m pip來使用python3的pip。
- 安裝Django
pip install django
安裝失敗:
This version of Django requires Python 3.4, but you’re trying to
install it on Python 2.7.
This may be because you are using a version of pip that doesn't
understand the python_requires classifier. Make sure you
have pip >= 9.0 and setuptools >= 24.2, then try again:
$ python -m pip install --upgrade pip setuptools
$ python -m pip install django
This will install the latest version of Django which works on your
version of Python. If you can't upgrade your pip (or Python), request
an older version of Django:
$ python -m pip install "django<2"
2.0.5版本需要python3.4以上版本
這裡因為使用的是python2的pip,為了解決這個問題可以修改軟連線,也可以直接使用python -m pip install django
來指定pip為python3的。
我這裡使用了第二種方法。
- 安裝mysqlclient(聯結器)
python -m pip install mysqlclient
報錯:
OSError: mysql_config not found
加入環境變數:
PATH=”$PATH”:/usr/local/mysql/bin
重新安裝,成功。
版本:mysqlclient-1.3.12
- 安裝uwsgi
python -m pip install uwsgi
Successfully installed uwsgi-2.0.17
- 安裝nginx
線上專案部署
在伺服器上建立簡單Django專案hello,結合uwsgi+Django+nginx。
測試uwsgi
測試uwsgi -version
顯示環境變數未配置好 -bash: uwsgi: command not found
建立軟連線:(好用的一匹,順便把其他的都配了)
ln -s /usr/local/python3/bin/django-admin.py /usr/bin/django-admin.py
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
ln -s /usr/local/python3/bin/gunicorn /usr/bin/gunicorn
檢視軟連線:
cd /usr/bin
ls -l
建立好軟連線後,檢視uwsgi是否安裝成功:
uwsgi –version
成功,顯示:
[root@VM_0_12_centos projects]# uwsgi –version
2.0.17
繼續測試,建立test.py:
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
使用uwsgi執行test.py:
uwsgi –http :8000 –wsgi-file test.py
訪問失敗:
localhost拒絕了我們的請求。
有毒,這些教程是真的有毒。在本地瀏覽器訪問雲伺服器的時候一定要用IP地址或者域名。
訪問http://www.zosurn.xyz:8000
訪問成功,但出現的是seafile登入頁面,說明該埠被佔用了,可以釋放8000埠,也可以換其他的埠。
修改埠為8002:
uwsgi –http :8002 –wsgi-file test.py
成功訪問到hello world。
建立Django專案hello
在/home/projects/目錄下,使用Django建立一個簡單hello專案後,配置setting.py中的allowed_host設定為:
ALLOWED_HOSTS = [‘.zosurn.xyz’, ‘localhost’, ‘127.0.0.1’]
將uwsgi與Django連線:
uwsgi –http :8008 –chdir /home/projects/hello –wsgi-file hello/wsgi.py –master –processes 4 –threads 2 –stats 127.0.0.1:9192
訪問http://www.zosurn.xyz:8008
成功,出現Django歡迎頁面。
引數太多,可以將其寫入ini檔案中
在hello專案的目錄下建立uwsgi.ini檔案,寫入如下內容(採用字典格式):
# hello_uwsgi.ini file
[uwsgi]
# Django-related settings
http = :8008
# the base directory (full path)
chdir = /home/projects/hello
# Django s wsgi file
module = hello.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
然後使用如下命令啟動uwsgi:
uwsgi –ini uwsgi.ini
再次測試,訪問http://www.zosurn.xyz:8008成功。
測試nginx:
檢視nginx是否安裝成功,檢視nginx的版本:
[root@VM_0_12_centos hello]# nginx -v
nginx version: nginx/1.12.2
在/home/projects目錄下新建一個test目錄,在裡面新增一個簡單的html檔案。然後在nginx.conf中簡單配置:
events{}
http{
server{
server_name www.zosurn.xyz;
root /home/projects/test;
index index.html;
}
}
啟動該nginx:(啟動之前,要將/usr/local/nginx/mime.types檔案複製到該nginx.conf所在目錄,並且必須使用絕對路徑)
nginx -c /home/projects/test/nginx.conf
如果埠被佔用,則先釋放該埠,則使用lsof -i :8082
檢視佔用埠程式的pid,並使用kill -9 [pid]關閉相應的程式。
在瀏覽器中訪問自己的域名http://www.zosurn.xyz,訪問成功。
將nginx和uwsgi以及Django結合
在hello專案的目錄下建立nginx.conf
vim nginx.conf
新增如下內容:
events{}
http{
server{
listen 8082; # 如果不加的話,會預設為80,這裡也可以不改
server_name www.zosurn.xyz;
root /home/projects/hello;
index index.html;
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:8008; # 需要和ini檔案中的埠保持一致,這樣才能實現兩者的通訊。
uwsgi_read_timeout 2;
}
}
}
啟動nginx:
nginx -c /home/projects/hello/nginx.conf
啟動uwsgi:
uwsgi –ini /home/projects/hello/uwsgi.ini
使用域名訪問,成功訪問到該hello專案的Django歡迎頁面。
部署本地專案到伺服器
clone本地專案程式碼到伺服器/通過ftp複製專案到伺服器
在我的專案目錄/home/projects裡建立一個blog目錄,並在裡面建立一個conf目錄,用來存放配置檔案,這樣分離開來,方便更新維護專案程式碼。
- home/
- projects/
- blog/
- conf/
- nginx.conf
- uwsgi.ini
- uwsgi.log
- mysite/ # 你的Django專案目錄,假設為mysite
- blog/
- mysite/
- urls.py
- settings.py
- static/
- template/
- manage.py
- …
- conf/
- blog/
- projects/
修改專案程式碼
修改settings.py:
DEBUG = False # Django是否載入靜態資源
ALLOWED_HOSTS = ['localhost','127.0.0.1','.zosurn.xyz'] # 允許訪問的主機地址
STATIC_ROOT = os.path.join(BASE_DIR, "static/") # 收集Django的靜態檔案到同一個static中
建立uwsgi.ini和uwsgi.log
uwsgi.ini
不變,依舊為:
# myblog uwsgi.ini file
[uwsgi]
socket = 127.0.0.1:8002
# http = :8002 如果不通過nginx可以直接用http,但要通過web伺服器就必須要用socket
# the base directory (full path)
chdir = /home/projects/blog/mysite
# Django s wsgi file
module = mysite.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 4
# clear environment on exit
vacuum = true
建立nginx.conf
# worker_rlmit_nofile 65500; # 提升nginx的程式檔案開啟數
events{}
http{
include mime.types;
server{
listen 80;
server_name www.zosurn.xyz;
index index.html ;
root /home/projects/blog/mysite;
location /static {
alias /home/projects/blog/mysite/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
uwsgi_pass 127.0.0.1:8002;
}
}
}
建立資料庫、收集靜態檔案
python manage.py migrate
python manage.py collectstatic
啟動服務
啟動nginx
nginx -c /home/projects/blog/conf/nginx.conf
後臺啟動uwsgi
uwsgi /home/projects/blog/conf/uwsgi.ini -d /home/projects/blog/conf/uwsgi.log
如此就可以通過域名訪問自己的Django專案了。
相關文章
- 把django專案部署到阿里雲伺服器流程Django阿里伺服器
- 如何把本地網站部署到雲伺服器上網站伺服器
- Vue專案打包到django部署VueDjango
- django專案部署到centos,踩的坑DjangoCentOS
- 【django輕量級框架】django專案部署到阿里雲伺服器流程Django框架阿里伺服器
- 如何將專案部署到伺服器上伺服器
- 阿里雲伺服器部署django專案阿里伺服器Django
- 伺服器(Aliyun)部署Django專案(Ubunto版)伺服器Django
- 把本地專案上傳到github 不使用eclipseGithubEclipse
- 把spring-boot專案部署到tomcat中的方法SpringbootTomcat
- 如何將React專案,部署到Web伺服器的Tomcat 上ReactWeb伺服器Tomcat
- 測試如何把控專案
- Linux學習,部署django專案到伺服器,及安裝python,uwsgi等LinuxDjango伺服器Python
- 一學就會的django專案伺服器部署nginx-uwsgi-django/buildDjango伺服器NginxUI
- 部署vue專案到Linux伺服器VueLinux伺服器
- Djang專案部署阿里雲伺服器(四)之執行Django專案阿里伺服器Django
- 使用SAP iRPA Studio建立的本地專案,如何部署到SAP雲平臺上?
- 5.Django專案部署Django
- Linux 下部署Django專案LinuxDjango
- 如何把本地開發的 SAP UI5 應用部署到 ABAP 伺服器上試讀版UI伺服器
- 部署Django到阿里雲伺服器教程Django阿里伺服器
- docker 部署 django + mysql + vue 專案DockerDjangoMySqlVue
- 騰訊雲伺服器 Django專案部署 傻瓜式部署全流程 (一)伺服器Django
- 打造專屬測試平臺4-使用Docker部署Django專案DockerDjango
- IDEA一鍵部署SpringBoot專案到伺服器IdeaSpring Boot伺服器
- SpringBoot專案如何打包部署到tomcat中去Spring BootTomcat
- 使用 uWSGI 和 Nginx 部署 Django 專案NginxDjango
- 使用nginx+uwsgi部署Django專案NginxDjango
- 藉助Github Page把你的React專案部署到線上環境GithubReact
- 專案部署到LinuxLinux
- Java專案部署到雲伺服器最簡單的方法Java伺服器
- SpringBoot專案部署到阿里雲伺服器全流程Spring Boot阿里伺服器
- 將寶塔PHP專案下載到本地部署之nginx配置PHPNginx
- 怎麼把本地資料庫檔案上傳到雲伺服器ecs資料庫伺服器
- 關於idea部署本地專案的問題Idea
- Ubuntu Apache下部署Django2專案UbuntuApacheDjango
- Centos7系統部署django專案CentOSDjango
- 阿里雲部署Django專案(nginx+uWSGI)阿里DjangoNginx