Linux下進行Django部署

寒窗苦讀十年書,聞雞起舞自奮發

最近剛學了linux,需要進行Django部署環境,摸索了好長時間,功夫不負有心人,整理出了一套完整的操作流程,希望能給大家帶來一些便利.

一. 在Linux 下開啓服務, 我用的是CentOS 6.10版本

  1. 開啓網絡

  2. vi /etc/sysconfig/network-script/ifcfg-eth0

  3. 退出保存

       onboot=yes
    
  4. 重啓網絡服務

    service network restart
    
  5. 試啓動

    ping www.bai.com
    

安裝一些基礎庫,一般編譯軟件的時候需要,個人習慣裝完系統就安裝一下

yum -y install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel

安裝python3.5.3

  1. yum install wget
    
    下載Pyhton3到/usr/local 目錄
  2. cd /usr/local     wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz
    
    解壓
  3.  tar -zxvf Python-3.5.3.tgz
    
    進入 Python-3.5.3
  4. cd Python-3.5.3
    
    編譯安裝到指定路徑
  5. ./configure --prefix=/usr/local/python3 --enable-shared
    
    安裝python3
  6.  make && make install
    
    安裝完成之後 建立軟鏈接 添加變量 方便在終端中直接使用python3
  7. ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    
  8.  python3 -v
    

python3.5安裝報錯

python3.5: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory

原因是因爲python運行時沒有加載到libpython3.5m.so.1.0 這個庫文件 將其複製到響應目錄OK
解決方法:

[root@www Python-3.5.0]# cd /root/test/Python-3.5.0 進入解壓後的編譯目錄

[root@www Python-3.5.0]# cp libpython3.5m.so.1.0 /usr/local/lib64/

[root@www Python-3.5.0]# cp libpython3.5m.so.1.0 /usr/lib/ [root@www Python-3.5.0]# cp libpython3.5m.so.1.0 /usr/lib64/

安裝setuptools

  •  wget --no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
    
  •  tar -zxvf setuptools-19.6.tar.gz	
    
  •  cd setuptools-19.6
    
  •  python3 setup.py build
    
  •  python3 setup.py install
    
  •  (如有報錯: RuntimeError: Compression requires the (missing) zlib module,則需要安裝yum install zlib-devel,安裝後要重新編譯 python3.5:  
    
     make && make install)
    

安裝pip3

  •  wget --no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
    
  •  tar -zxvf pip-8.0.2.tar.gz
    
  •  cd pip-8.0.2
    
  •  python3 setup.py build
    
  •  python3 setup.py install
    
  •  使用pip安裝包測試:
     	 如報錯,則缺少yum install openssl-devel,安裝完成後一樣需要重新編譯python3.5(make&&make install)
    
  •   ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    

    更新pip3

  •   pip3 install --upgrate pip
    

安裝virtualenv ,建議大家都安裝一個virtualenv,方便不同版本項目管理。

  • 安裝virtualenv

     pip3 install virtualenv
    
  • 建立軟鏈接

     ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
    
  • 安裝成功在根目錄下建立兩個文件夾,主要用於存放env和網站文件的。(個人習慣,其它人可根據自己的實際情況處理)

     mkdir -p /data/env mkdir -p /data/wwwroot
    
  • 切換到/data/env/下,創建指定版本的虛擬環境。

     virtualenv --python=/usr/bin/python3 pyweb
    
  • 然後進入/data/env/pyweb/bin 啓動虛擬環境:

     source activate
    

虛擬環境裏用python3安django和uwsgi

安裝django

pip3 install django==2.1.1

安裝uwsgi:

export LDFLAGS="-Xlinker --no-as-needed"
$ pip3 install uwsgi

建立軟連接

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

安裝:pip install uwsgi
  •   啓動:uwsgi -x 'uwsgi.xml'
      報錯:uwsgi: invalid option -- 'x'
    
      原因:centos下,在沒有安裝libxml2時,pip安裝的uwsgi無法支持xml格式的配置文件
      解決:
      rm ~/.cache/pip pip
      yum install libxml*
      pip uninstall uwsgi
      pip install uwsgi
    
      注意刪除 ~/.cache/pip pip安裝緩存文件
    

關閉防火牆 或者 放開80端口

  •   service iptables stop
    
  •   ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi	
    

測試uwsgi是否可用

	def application(env, start_response):
	    start_response('200 OK', [('Content-Type','text/html')])
	    return [b"Hello World"]
  •   uwsgi --http :9001 --wsgi-file app.py
    

將你的django項目放到你想放的路徑下,例如/home/www/,假設我們的Django項目名爲"myproject",裏面有一個應用叫"myapp" 在你的django項目下myproject中新建 myproject.xml,內容如下:

<uwsgi>
    <socket>127.0.0.1:8997</socket><!-- 內部端口,自定義 -->
        <chdir>/home/www/myproject</chdir><!-- 項目路徑 -->
            <module>myproject.wsgi</module>
                <processes>4</processes> <!-- 進程數 --> 
    <daemonize>uwsgi.log</daemonize><!-- 日誌文件 -->
</uwsgi>

安裝nginx和配置nginx.conf文件

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

tar -zxvf nginx-1.13.7.tar.gz

./configure

make && make install

nginx一般默認安裝好的路徑爲/usr/local/nginx
在/user/local/nginx/conf/中打開nginx.conf,加入以下內容

server {
    listen 8996; #暴露給外部訪問的端口
    server_name localhost;
        charset utf-8;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8997; #外部訪問8996就轉發到內部8997
    }
    location /static/ {
        alias /home/www/myproject/myapp/static/; #項目靜態路徑設置
    }
}


wq保存後進入/usr/local/nginx/sbin/目錄

執行./nginx -t命令先檢查配置文件是否有錯,沒有錯就執行以下命令:

./nginx

終端沒有任何提示就證明nginx啓動成功,可以通過鏈接查看nginx是否啓動成功:
http://192.168.1.111 (請將該ip替換成你的服務器ip)

訪問項目頁面

進入你的django項目路徑,執行以下命令:

uwsgi3 -x myproject.xml

# 以上步驟都沒有出錯的話,打開你的瀏覽器,輸入以下鏈接,記得關閉系統防火牆或者開放8996端口
# 出錯的話回到安裝uwsgi處 ,有解決方法

http://192.168.1.111:8996 (請將該ip替換成你的服務器ip)
網站訪問成功!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章