日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器

發(fā)布時間:2023/12/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如何將本地的Django項目部署到云服務(wù)器

開發(fā)環(huán)境

開發(fā)語言: Python

后臺框架:Django

前端框架:bootstrap

web服務(wù)器:nginx

wsgi服務(wù)器:uwsgi

查看本地項目Django和Python版本:

(可以直接安裝Django最新版本就可以了,Python版本不能低于3.4)

Django2.0.4

Python3.6.5

首先python3的安裝

首先在官網(wǎng)下載安裝包 python-3.6.5

(直接使用wget命令下載,速度也賊快,下載完成后發(fā)現(xiàn)在根目錄下多了一個Python-3.6.5.tgz的壓縮包)

安裝相關(guān)包yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

服務(wù)器自帶的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是安裝文件里面的配置工具。

設(shè)置軟連接

一條命令解決,再也不用配環(huán)境變量了。linux的軟鏈接相當(dāng)于windows里的快捷方式,快捷方式刪了就刪了,原來文件還是存在的。軟連接后面也有大用。

ln -s /usr/local/python3/bin/python3 /usr/bin/python3.6

即在/usr/bin里面創(chuàng)建一個快捷方式python3.6,該快捷方式指向python3的安裝路徑。

輸入python3.6 -v測試,成功

可以通過以下命令查看所有的軟連接:

cd usr/bin/

ls -l

可以看到python,python2,連接的都是python2.7,而python3.6連接的就是剛安裝的版本

也可以將python3.6直接改為python。

備份原連接為:python -> python2

使用ln -s /usr/local/python3/bin/python3 /usr/bin/python,建立失敗,發(fā)現(xiàn)python已經(jīng)存在。

刪除原連接 rm /python2

再次建立成功。

安裝各種軟件

安裝數(shù)據(jù)庫

安裝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

安裝成功。再用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

加入環(huán)境變量:

PATH="$PATH":/usr/local/mysql/bin

重新安裝,成功。

版本:mysqlclient-1.3.12

安裝uwsgi

python -m pip install uwsgi

Successfully installed uwsgi-2.0.17

安裝nginx

在線項目部署

在服務(wù)器上創(chuàng)建簡單Django項目hello,結(jié)合uwsgi+Django+nginx。

測試uwsgi

測試uwsgi -version

顯示環(huán)境變量未配置好 -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

繼續(xù)測試,創(chuàng)建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

訪問http://127.0.0.1:8000/

訪問失敗:

localhost拒絕了我們的請求。

有毒,這些教程是真的有毒。在本地瀏覽器訪問云服務(wù)器的時候一定要用IP地址或者域名。

訪問http://www.zosurn.xyz:8000

訪問成功,但出現(xiàn)的是seafile登錄頁面,說明該端口被占用了,可以釋放8000端口,也可以換其他的端口。

修改端口為8002:

uwsgi --http :8002 --wsgi-file test.py

成功訪問到hello world。

創(chuàng)建Django項目hello

在/home/projects/目錄下,使用Django創(chuàng)建一個簡單hello項目后,配置setting.py中的allowed_host設(shè)置為:

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成功,出現(xiàn)Django歡迎頁面。

參數(shù)太多,可以將其寫入ini文件中

在hello項目的目錄下創(chuàng)建uwsgi.ini文件,寫入如下內(nèi)容(采用字典格式):

# 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

測試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文件復(fù)制到該nginx.conf所在目錄,并且必須使用絕對路徑)

nginx -c /home/projects/test/nginx.conf

如果端口被占用,則先釋放該端口,則使用lsof -i :8082查看占用端口進程的pid,并使用kill -9 [pid]關(guān)閉相應(yīng)的進程。

將nginx和uwsgi以及Django結(jié)合

在hello項目的目錄下創(chuàng)建nginx.conf

vim nginx.conf

添加如下內(nèi)容:

events{}

http{

server{

listen 8082; # 如果不加的話,會默認(rèn)為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文件中的端口保持一致,這樣才能實現(xiàn)兩者的通信。

uwsgi_read_timeout 2;

}

}

}

啟動nginx:

nginx -c /home/projects/hello/nginx.conf

啟動uwsgi:

uwsgi --ini /home/projects/hello/uwsgi.ini

使用域名訪問,成功訪問到該hello項目的Django歡迎頁面。

部署本地項目到服務(wù)器

clone本地項目代碼到服務(wù)器/通過ftp復(fù)制項目到服務(wù)器

在我的項目目錄/home/projects里創(chuàng)建一個blog目錄,并在里面創(chuàng)建一個conf目錄,用來存放配置文件,這樣分離開來,方便更新維護項目代碼。

home/

projects/

blog/

conf/

nginx.conf

uwsgi.ini

uwsgi.log

mysite/ # 你的Django項目目錄,假設(shè)為mysite

blog/

mysite/

urls.py

settings.py

static/

template/

manage.py

...

修改項目代碼

修改settings.py:

DEBUG = False # Django是否加載靜態(tài)資源

ALLOWED_HOSTS = ['localhost','127.0.0.1','.zosurn.xyz'] # 允許訪問的主機地址

STATIC_ROOT = os.path.join(BASE_DIR, "static/") # 收集Django的靜態(tài)文件到同一個static中

創(chuàng)建uwsgi.ini和uwsgi.log

uwsgi.ini不變,依舊為:

# myblog uwsgi.ini file

[uwsgi]

socket = 127.0.0.1:8002

# http = :8002 如果不通過nginx可以直接用http,但要通過web服務(wù)器就必須要用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

創(chuàng)建nginx.conf

# worker_rlmit_nofile 65500; # 提升nginx的進程文件打開數(shù)

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;

}

}

}

創(chuàng)建數(shù)據(jù)庫、收集靜態(tài)文件

python manage.py migrate

python manage.py collectstatic

啟動服務(wù)

啟動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項目了。

總結(jié)

以上是生活随笔為你收集整理的如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。