Python 3之Django2部署(centos7+nginx+python3+django2.0)

前置工具,系統爲centos7.5,爲了方便管理,能夠安裝寶塔免費版本php

首先,html

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.shpython

正常乾淨系統會順利完成安裝,使用過程是感受本身記下配置和更新的過程,相似版本更新或者衝突的先別急着百度,容易形成衝突。nginx

寶塔6.6版本是依賴python2.7的,因此python能夠升級到最後版本,例如2.7.15,不要用python3代替2,這樣會致使寶塔衝突。web

第一,Python3安裝sql

在Centos7 系統中,自帶的有python2環境
安裝相關包
命令:yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
在python官網下載python3源碼
    下載源碼
    命令:wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
    解壓源碼
    命令:tar -xvJf Python-3.7.1.tar.xz  
編譯安裝python3
   進入解壓包中
    命令:cd Python-3.7.1
    設置安裝路徑
    命令:./configure prefix=/usr/local/python3
    執行編譯安裝
    命令: make && make install
設置python3命令軟鏈接
    設置python3軟鏈接
    命令:ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    設置pip3環境變量
    命令:ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3django

到此Python3運行環境安裝和配置完,關鍵:必須帶3,這樣整個系統不會影響到寶塔,python3,pip3等centos

第二,安裝supervisorbash

這塊能夠安裝後掛載不一樣的服務。例如Python網站,core網站,php網站。微信

 yum install supervisor

安裝完畢後,會生成 

/ect/supervisor/supervisord.conf

編輯,能夠用winscp打開,也能夠直接用vi命令

編輯關鍵部分。

[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; (ip_address:port specifier, *:port for all iface)
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))

 

這裏是supervisor的管理界面,設置*:9001表明能夠在外網訪問,固然也能夠指定IP

[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
chmod=0766 ; socket file mode (default 0700)
;chown=nobody:nogroup ; socket file uid:gid owner
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))

 

這裏主要chmod設置爲0766打開對應的權限

 拉到最下

[include]
files = conf.d/*.conf

配置一下網站獨立的conf,用*.conf表明裏面的因此文件。

我建了個pydjangoweb.conf的配置,內容以下

[program:PyDjangoWeb]

command=python3 /website/py.django.web/manage.py runserver  0.0.0.0:8090 ; 運行程序的命令

autorestart=true ; 程序意外退出是否自動重啓

stderr_logfile=/var/log/pydjango.err.log ; 錯誤日誌文件

stdout_logfile=/var/log/pydjango.out.log ; 輸出日誌文件

python3是運行程序 /website/py.django...是網站部署的路徑,0.0.0.0:8090是端口並設置爲外網能夠訪問.這個留意一點,每行結束需有空格隔開 ;

修改完成後這行

supervisorctl reload讓配置生效。

3、設置supervisor爲開機啓動


/usr/lib/systemd/system/下,新建supervisor.service文件。

[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf

[Install]
WantedBy=multi-user.target

systemctl enable supervisord

設置啓動supervisor

驗證是否開機啓動:

systemctl is-enabled supervisord

4、配置nginx

具體不詳細說,用了寶塔,能夠直接編輯配置文件。

#這段是core2.1的
server {
    listen 80;
    server_name quce.lttgx.top; 
    location / {
        proxy_pass http://localhost:5000; 
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    }
#這段是django2.1的
  server {
    listen 80;
    server_name py.django.web; 
    location / {
        proxy_pass http://localhost:8090; 
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
    }

配置完成後nginx需從新加載

cd usr/local/nginx/sbin

./nginx -s reload 

也能夠用寶塔的界面操做。

5、具體代碼須要注意點

urlpatterns = [# Examples:
    url(r'^$', app.views.home, name='home'),
    url(r'^contact$', app.views.contact, name='contact'),
    url(r'^about$', app.views.about, name='about'),
    url(r'^login/$', views.LoginView.as_view(template_name= 'app/login.html',
            authentication_form= app.forms.BootstrapAuthenticationForm,
            extra_context=
            {
                'title': 'Log in',
                'year': datetime.now().year,
            }),
        name='login'),
    url(r'^logout$',
        views.LogoutView.as_view(next_page='/'),
                                 name='logout')

urls.py文件,django2.0後,login,logout方法已取消,能夠用views.LoginView.as_view去配置模版頁和方法。

settings.py文件

ALLOWED_HOSTS = ['*']
//原來空白的需加上'*',容許在外網訪問

補充:

如django運行出錯,能夠先獨立運行  

進入網站路徑,運行: python3 manage.py runserver  0.0.0.0:8090

若有錯誤,看缺什麼包沒安裝,例如須要安裝pip3 install django

 

supervisor管理界面,其中包括django項目,tastetest是.net core2.1的微信項目

相關文章
相關標籤/搜索