centos daemonize_手把手教你在centos上配置Django項目(超詳細步驟)

3797284f0408680706018dbc6d63e5b2.png

前言

關于Django的部署,本人也踩了很多坑,這篇文章一步一步教你怎么進行部署,只需要你按照我的步驟來就OK了!這里我們使用的服務器是一個全新的服務器,沒有安裝任何東西。

基礎環境搭建步驟

★ 注意:下面的步驟都需要在root權限下進行

一、更新系統軟件包

yum update -y

二、安裝軟件管理包和可能使用的依賴

yum -y groupinstall "Development tools"yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel

三、下載Pyhton3到/usr/local 目錄

cd /usr/localwget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
★ 這里我們安裝的Python是3.6.6版本,版本可以自己選擇,如果版本不同,后面相應的代碼也會不同!!!

解壓python包

tar -zxvf Python-3.6.6.tgz

進入 Python包的路徑

cd Python-3.6.6

編譯安裝到自己指定路徑-/usr/local/python3

./configure --prefix=/usr/local/python3

安裝python3

make
make install

安裝完成之后,建立軟鏈接,添加變量,這樣的好處是方便我們在終端中能夠直接使用python3

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

Python3安裝完成之后pip3也一塊安裝完成,不用再單獨安裝 這里給pip3也建立軟鏈接

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

四、查看是否成功安裝Python3和pip3

python3 -V
pip3 -V

4b3a3ad59086d762b0bed932800e2bdc.png

五、安裝virtualenv

★ 建議大家都安裝一個virtualenv,方便不同版本項目管理。虛擬環境這塊大家可以自行百度進行了解,當然也可以直接按照我下面的步驟進行
pip3 install virtualenv

我們也給它建立軟鏈接

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

安裝成功在根目錄下建立文件夾,主要用于存放env,當然項目你也可以創建一個文件夾存放。我的項目是存放在/~/blog中的,影響不大,后面自己可以進行相關修改(我會注明)

mkdir -p /data/env

六、切換到/data/env/下,創建虛擬環境。

virtualenv --python=/usr/bin/python3 djangoenv

這里的djangoenv名稱可以自己定義但是后面步驟一定要跟你所定義的名稱相同,然后進入/data/env/djangoenv/bin

啟動虛擬環境:

source activate

進入之后,你就會發現下面紅框中的內容就是自己定義的名稱

d68b42e1743f93f83d04b6d8d0faec45.png

七、虛擬環境里用pip3安django和uwsgi

pip3 install django (需要指定安裝和你項目相同的版本)
pip3 install uwsgi
★ uwsgi要安裝兩次,一次在虛擬環境中,另一次退出虛擬環境進行安裝

給uwsgi建立軟鏈接

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

本地Django項目部署到服務器

上面的步驟已經將整個大致的環境安裝好了,接下來我們就需要把自己本地的項目搬運上來。

一、備份本地數據庫。使用Mysql數據庫,要先在本地Mysql里備份導出數據,然后在服務器上安裝Mysql數據庫

關于在centos中安裝Mysql,我會在下篇文章中寫,敬請關注(里面的坑比較多,我都會總結好的)

二、在項目目錄下把當前的環境依賴包導出到requirements.txt文件

pip freeze > requirements.txt
★ 注意:這里是在自己本地上進行的,導出你整個項目需要的依賴包

三、把項目源碼壓縮打包。

四、把項目上傳到服務器對應的目錄里,解壓。

這里我使用的是Fileziila軟件進行上傳的,大家可以自己去下載相關的ftp軟件,把自己項目上傳到服務器。

在服務器中解壓,可以先安裝支持ZIP的工具

yum install -y unzip zip

解壓zip文件

unzip 文件名.zip

五、創建新的虛擬環境(參照上面基礎環境步驟中的第六步)

六、進入虛擬環境,然后進入項目安裝目錄requirements.txt里的依賴包。

pip3 install -r requirements.txt

七、導入數據庫到服務器。(Mysql)

關于數據庫的導入步驟:

# 進入數據庫
mysql -u root -p
# 創建與項目中相應的名稱的數據庫
create database kulsblog;use kulsblogsource /你導入sql文件的目錄地址

八、通過python3 manage.py runserver 運行一下項目,如果能正常啟動則進行下一步,不能正常運行往上檢查。

這里需要注意使用python3來執行manage.py,否則會出現報錯情況!

九.配置uwsgi文件(重點!!!)

我的網站項目路徑是/root/blog/kuls_blog,在項目根目錄下創建 項目名稱.xml (例如我的就是 kuls_blog.xml) 編輯該文件:

<uwsgi>    <socket>127.0.0.1:8000</socket> <!-- 內部端口,自定義 --> <chdir>/root/blog/kuls_blog</chdir> <!-- 項目路徑 -->            <module>kuls_blog.wsgi</module>  <!-- mysite為wsgi.py所在目錄名--> <processes>4</processes> <!-- 進程數 -->     <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>
★ 注意里的kuls_blog,這個是wsgi.py所在的目錄名。大家記得仔細看我的注釋進行填寫!!!

十、安裝nginx和配置nginx.conf文件

進入home目錄,執行下面命令,我這里安裝的是1.13.7版本。

cd /home/wget http://nginx.org/download/nginx-1.13.7.tar.gz

下載完成后,執行解壓命令:

tar -zxvf nginx-1.13.7.tar.gz

進入解壓后的nginx-1.13.7文件夾,依次執行以下命令:

./configure
make
make install

nginx一般默認安裝好的路徑為/usr/local/nginx

在/usr/local/nginx/conf/中先備份一下nginx.conf文件,防止我們出錯。

cp nginx.conf nginx.conf.bak

然后打開nginx.conf,把原來的內容刪除,直接加入以下內容:

events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;server {listen 80;server_name  127.0.0.1:80; #改為自己的域名,沒域名修改為127.0.0.1:80charset utf-8;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8000;  #端口要和uwsgi里配置的一樣uwsgi_param UWSGI_SCRIPT kuls_blog.wsgi;  #wsgi.py所在的目錄名+.wsgiuwsgi_param UWSGI_CHDIR /root/blog/kuls_blog; #項目路徑}location /static/ {alias /root/blog/kuls_blog/static/; #靜態資源路徑}}
}
★ 大家一定仔細看每個參數后面的注釋,這里容易出錯!!!這里的參數一定要和之前配置的xml文件相對應

進入/usr/local/nginx/sbin/目錄 執行 ./nginx -t 命令先檢查配置文件是否有錯,沒有錯就執行以下命令:

./nginx

終端沒有任何提示就證明nginx啟動成功。

★ uwsgi和Nginx兩個配置,在整個部署里面是非常非常重要的,如果出現報錯,一定往上面翻一翻,看看有沒有哪個步驟出現問題。

重點

如果修改了Django文件或者一些其他的配置,一定要重啟uwsgi和Nginx,否則不會生效!

#查看Uwsgi進程
ps -ef|grep uwsgi
#用kill方法把uwsgi進程殺死,然后啟動uwsgi
killall -9 uwsgi
#啟動方法
uwsgi -x mysite.xml#Nginx平滑重啟方法
/usr/local/nginx/sbin/nginx -s reload

上面是重啟uswgi和Nginx的步驟,大家每次修改之后,調用上面的方法即可。

一些注意事項

如果你的項目中的應用含有靜態文件,你需要在setting.py中進行STATIC_ROOT的設置

STATIC_ROOT  = os.path.join(BASE_DIR, 'static')#指定樣式收集目錄
#或
STATIC_ROOT = '/www/mysite/kuls_blog/static'  #指定樣式收集目錄

并且執行下面的指令:

python manage.py collectstatic

運行這個命令之后,就會自動把靜態文件收集到/static/目錄下。

轉自:JAVAandPython君

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534921.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql8.0.17壓縮包安裝教程_mysql 8.0.16 壓縮包安裝配置方法圖文教程

本文為大家分享了mysql 8.0.16 壓縮包安裝配置方法&#xff0c;供大家參考&#xff0c;具體內容如下運行環境&#xff1a;windows 10 x641、下載zip安裝包&#xff1a;mysql8.0 for windows zip包&#xff1a;&#xff0c;進入頁面后可以不用登錄。后點擊底部“no thanks, just…

python收集數據程序_基于Python語言的互聯網數據收集軟件的設計

軟件建立所需的工具及其版本 編寫環境與 IDE Python3.5.2 Windows10 PyCharm 2016.3 Sublime Text3 第三方庫與版本號 Requests 2.12.1 BeautifulSoup 4.5.1 PYQT5 5.8.1 Pyinstaller 庫的作用 用于爬蟲編寫 用于爬蟲編寫 用于軟件 GUI 設計 用于封裝 python 程序 1.1 百度地圖…

Mysql保存是事件驅動嗎_【CHRIS RICHARDSON 微服務系列】事件驅動的數據管理-5

編者的話 |本文來自 Nginx 官方博客&#xff0c;是「Chris Richardson 微服務」系列的第五篇文章。第一篇文章介紹了微服務架構模式&#xff0c;并且討論了使用微服務的優缺點&#xff1b;第二和第三篇描述了微服務架構模塊間通訊的不同方面&#xff1b;第四篇研究了服務發現中…

chrome postman插件_收集了一些Chrome插件神器,助你快速成為老司機

剛開始開發項目的時候&#xff0c;我一直都在用火狐&#xff0c;因為它有一個fireBug插件&#xff0c;特別好用(目前已不支持)&#xff0c;也不知道什么時候&#xff0c;就一直用起來Chrome瀏覽器了&#xff0c;可能是因為它有強大的插件作為后盾吧。開發了這么多年&#xff0c…

phpmyadmin 導出mysql,在phpmyadmin中導入/導出非常大的mysql數據庫

i have a db in phpmyadmin having 3000000 records. i want to export this to another pc. now when i export this only 200000 entries exported into .sql file and that is also not imported on the other pc.解決方案Answering this for anyone else who lands here. I…

python字符串是否包含某元素_Python實現判斷一個字符串是否包含子串的方法總結...

本文實例總結了Python實現判斷一個字符串是否包含子串的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a; 1.使用成員操作符 in >>> snihao,shijie >>> tnihao >>> result t in s >>> print result True 2.使用string模塊的f…

python怎么全選_有沒有一種方法可以在Python網頁上模擬“全選復制粘貼”?

我對Python相當陌生&#xff0c;我不知道selenium是什么&#xff0c;但是如果您能夠找到某種模式&#xff0c;您應該能夠執行您描述的內容。關鍵是找到一個模式。下面是幾個示例腳本&#xff0c;它們可能會讓您了解如何開始。在import urllib2from bs4 import BeautifulSoupf …

python當前時間怎么弄_python獲取當前時間

我有的時候寫程序要用到當前時間&#xff0c;我就想用python去取當前的時間&#xff0c;雖然不是很難&#xff0c;但是老是忘記&#xff0c;用一次丟一次&#xff0c; 為了能夠更好的記住&#xff0c;我今天特意寫下這篇文章&#xff0c;如果你覺的對你有用的話&#xff0c;可以…

window.open不重復打開同一個名稱的窗口_干貨滿滿|Ctrl鍵的正確打開方式

“ctrl”是鍵盤中一個常用的鍵&#xff0c;全名為"control"&#xff0c;中文意為"控制"&#xff0c;在計算機基礎中稱為“控制鍵”。那么你知道“ctrl”都能控制什么嗎&#xff1f;難道只知道 “ctrl”C 復制、“ctrl”V 粘貼 這些&#xff1f;&#xff1f…

java 按位_Java中的按位運算

一、位運算符簡介&#xff1a;1.按位與&。如果兩個整形數據 a、b 對應位都是1&#xff0c;則結果位才為1&#xff0c;否則為0&#xff0c;(int 最大值0x7fffffff ):1 int a 0x7fffffff;2 int b 12;3 int c 0;4 int aAndB a&b; //aAndB is 125 int aAndC a&c; …

jmeter安裝包_分布式執行jmeter腳本步驟(非GUI)

備注&#xff1a;【Linux查看服務器是32位還是64位命令】uname -mgetconf LONG_BIT1.Linux環境安裝jmeter可參考https://www.cnblogs.com/surewing/p/9271886.html如需要用到3臺客戶機&#xff0c;分別在三臺機器中安裝&#xff0c;以下安裝之前需安裝jdk環境1&#xff09;將jm…

java mapreduce程序_簡單的java Hadoop MapReduce程序(計算平均成績)從打包到提交及運行...

[TOC]簡單的java Hadoop MapReduce程序(計算平均成績)從打包到提交及運行程序源碼import java.io.IOException;import java.util.Iterator;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache…

python刪除列表一段元素_Python基礎--list列表刪除元素

列表中刪除元素主要分為以下 3 種場景&#xff1a; 根據目標元素所在位置的索引進行刪除&#xff0c;可以使用 del 關鍵字或者 pop() 方法&#xff1b; 根據元素本身的值進行刪除&#xff0c;可使用列表&#xff08;list類型&#xff09;提供的 remove() 方法&#xff1b; 將列…

microbit編程_使用圖形化編程實現主控板與手機藍牙通訊(2019.3.25)

本文轉自&#xff1a;DFRobot創客社區原文鏈接&#xff1a;[Mind]使用圖形化編程實現主控板與手機藍牙通訊-Mind論壇-DF創客社區?mc.dfrobot.com.cn本帖最后由 Forgotten 于 2019-3-25 12:58 編輯做項目時我們經常會遇到藍牙的問題&#xff0c;例如使用appinventor制作一個app…

山海伏妖錄java_山海伏妖錄攻略大全 劇情結局加點妖獸大全

山海伏妖錄是一款非常經典的ARPG游戲&#xff0c;其中有許多的劇情&#xff0c;結局&#xff0c;妖獸以及加點方案。Remilia為大家帶來山海伏妖錄攻略大全&#xff0c;各種攻略都能在這里查到&#xff0c;助您暢玩山海伏妖錄&#xff01;山海伏妖錄人物介紹配角介紹山海伏妖錄結…

spark環境搭建java_Spark MLlib 環境搭建超詳細教程

1、系統及環境版本系統&#xff1a;Win7 旗艦版 64位 sp1JDK&#xff1a;1.8.0Spark&#xff1a;2.3.2Hadoop&#xff1a;2.7Scala&#xff1a;2.11.8文章最后&#xff0c;有所有版本的下載鏈接&#xff0c;不用再去折騰版本之間的問題。2、環境下載2.1 Spark 下載spark2.2 had…