Linux學習,部署django項目到伺服器,及安裝python,uwsgi等

来源:https://www.cnblogs.com/lxh1771/archive/2018/11/20/9991008.html
-Advertisement-
Play Games

更新系統軟體包 在進行安裝前,先大概瞭解一下在Linux下如何安裝應用軟體? 作為一個剛開始學習Linux的小白,對於一些基礎性問題卻總是理不清,比如,我的軟體安裝在什麼地方,安裝以後如何運行,怎麼查找我安裝的具體位置等. 這裡,主要安裝以tar打包的應用為主,大致分為這幾步,從網上下載需要安裝的軟 ...


  1. 開啟網路
  2. vi /etc/sysconfig/network-script/ifcfg-eth0
  3. onboot=yes 退出保存
  4. service network restart
  5. ping www.baidu.com

更新系統軟體包

yum update -y

 

在進行安裝前,先大概瞭解一下在Linux下如何安裝應用軟體?

作為一個剛開始學習Linux的小白,對於一些基礎性問題卻總是理不清,比如,我的軟體安裝在什麼地方,安裝以後如何運行,怎麼查找我安裝的具體位置等.

這裡,主要安裝以tar打包的應用為主,大致分為這幾步,從網上下載需要安裝的軟體壓縮包,解壓,安裝,清除安裝包.

一些命令,參數解釋
1 ./configure 用來生成Makefile, --prefix=/usr/*** 指定該軟體將安裝在哪裡
2. make 執行編譯
3. make install 執行安裝
4. make clean 清除產生的臨時文件
5. ln  創建軟連接,相當創建快捷命令,可以直接調用

 

接下來安裝一些基礎庫,軟體管理包和可能使用的依賴關係,一般編譯軟體的時候需要,個人習慣裝完系統就安裝一下

yum -y install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel
yum -y groupinstall 
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel    (這是從網上直接copy的,有些不是必須的,可根據自己的需求選擇下載)

 

安裝python3.5.3

yum install wget
wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz
tar -zxvf Python-3.5.3.tgz
cd Python-3.5.3
./configure --prefix=/usr/local/python3 --enable-shared
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
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

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

 

安裝pip

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.5make&&make install
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

 

安裝django

pip3 install django==2.1.1

安裝uwsgi:

 1 export LDFLAGS="-Xlinker --no-as-needed"
 2 $ pip3 install uwsgi
 3 ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
 4 安裝:pip install uwsgi
 5 啟動:uwsgi -x 'uwsgi.xml'
 6 報錯:uwsgi: invalid option -- 'x'
 7 
 8 原因:centos下,在沒有安裝libxml2時,pip安裝的uwsgi無法支持xml格式的配置文件
 9 解決:
10 yum install libxml*
11 pip uninstall uwsgi
12 pip install uwsgi
13 
14 註意刪除 ~/.cache/pip pip安裝緩存文件

 

關閉防火牆 或者 放開80埠

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

 

測試uwsgi是否可用

#python中
def
application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]

[root@lxh ~]# uwsgi --http :9001 --wsgi-file app.py

 

將你的django項目放到你想放的路徑下,例如/home/www/,假設我們的Django項目名為"myproject",裡面有一個應用叫"myapp" 在你的django項目下新建 myproject.xml,即和manage.py同級。

(上傳你的項目可以通過git,ftp之類上傳,本人只是學習測試,直接下載Xshell 關聯,然後通過rz上傳項目,具體自行百度)

內容如下:

<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

cd nginx-1.13.7

./configure

make && make install

nginx一般預設安裝好的路徑為/usr/local/nginx
在/usr/local/nginx/conf/中打開nginx.conf,在http{}中加入以下內容

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項目配置了venv,需要配置虛擬環境

# 安裝virtualenv
pip3 install virtualenv virtualenvwrapper

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

virtualenv venv

 

訪問項目頁面

進入你的django項目路徑,執行以下命令:
uwsgi3 -x myproject.xml

以上步驟都沒有出錯的話,打開你的瀏覽器,輸入以下鏈接,記得關閉系統防火牆或者開放8996
http://192.168.1.111:8996 (請將該ip替換成你的伺服器ip網站訪問成功!

顯示 Internal Server Error

需要把這個django項目中用到的模塊在虛擬機上重新下載部署。
並且如果使用的是mysql即不是自帶的資料庫,需要在mysql上遠程關聯本地資料庫

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 記憶體節點node 1.1 為什麼要用node來描述記憶體 這點前面是說的很明白了, NUMA結構下, 每個處理器CPU與一個本地記憶體直接相連, 而不同處理器之前則通過匯流排進行進一步的連接, 因此相對於任何一個CPU訪問本地記憶體的速度比訪問遠程記憶體的速度要快 Linux適用於各種不同的體繫結構, 而 ...
  •     迴圈語句常用於重覆執行一條命令或一組命令等,直到達到結束條件後,則終止執行。在Shell中常見的迴圈命令有 while 、 until 、 for 和 select 等。 while語句 基礎語法 while迴圈讀取文件 1、使用exec until語句的語法與while ...
  • 部分內容選自《Linux命令行與shell腳本編程大全.第3版》1 什麼是LinuxLinux可劃分為以下四部分:Linux內核GNU工具圖形化桌面環境應用程式完整的Linux系統如下圖:1.1 Linux內核Linux系統的核心就是內核,內核控制電腦系統上的所有硬體和軟體,在必要時分配硬體,並根... ...
  • 文件目錄管理 一.認識Linux文件系統的架構 在Linux中是沒有盤符這個概念的,即Linux中沒有C盤和D盤的分盤。那麼我們直接通過對目錄的操作實現對磁碟的讀寫,因為已經建立的文件系統分區被掛載到一個目錄下。 我們可以註意到Linux表示目錄是使用"/"而不是像Windows那樣的"\"。 那麼 ...
  • 筆記本配置:8G記憶體,200G SSD,先在virbox中成功安裝雙系統,能正常進入並使用 Windows 7 和 CentOS 7。 網上看到一大堆的安裝 wingrub easyBCD,折騰了一天沒安裝成功,結果還是 google 找到一篇靠譜的文章,step by step 終於在第二天搞定雙 ...
  • 為什麼學習shell編程 shell腳本語言是實現linux/unix 系統管理機自動化運維所必備的重要工具,linux/unix系統的底層及基礎應用軟體的核心大部分涉及shell腳本的內容。每一個合格的linux系統管理員或運維工程師,都需要熟練的編寫shell腳本語言,並能夠閱讀系統及各類軟體附 ...
  • 1.Devops介紹 1.Devops是什麼 開發 development 運維 operations 2.Devops能幹嘛 3.Devops如何實現 設計架構規劃‐代碼的存儲‐構建‐測試、預生產、部署、監控 2.Git版本控制系統 1.版本控制系統簡介 2.為什麼需要版本控制系統 3.常見版本管 ...
  • 最終目標: useradd stu01;echo 123456|passwd --stdin stu01 useradd stu02;echo 123456|passwd --stdin stu02 useradd stu03;echo 123456|passwd --stdin stu03 第一步 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...