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

gdxhh發表於2018-11-20
  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上遠端關聯本地資料庫

相關文章