centos 搭建 搭建uwsgi服務


1. 安裝linux系統所需的一些軟件依賴

yum groupinstall "Development tools" 
yum install openssl openssl-devel sqlite-devel zlib-develbzip2-devel ncurses-devel readline-devel tk-devel
yum install pcre pcre-devel pcre-static

 

2.安裝python3.7


當前版本:2.7.5

下載:wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
解壓:tar xJf Python-3.7.1.tar.xz
編譯:
cd Python-3.7.1
./configure --prefix=/usr/local/python3.7 --enable-optimizations
--prefix 是預期安裝目錄,--enable-optimizations 是優化選項(LTO,PGO 等)加上這個 flag 編譯后,性能有 10% 左右的優化(如果沒記錯的話),但是這會明顯的增加編譯時間。
安裝:
make
make install

此時出現錯誤:Fatal Python error: _PySys_BeginInit: can't initialize sys module

 

上面錯誤解決辦法:python版本降級,安裝了3.6。猜測是centos版本與python3.7版本不匹配
錯誤:執行 ./configure --prefix=/usr/local/python3.7 --enable-optimizations 時 configure: error: no acceptable C compiler found in $PATH
解決。可能需要安裝GCC,執行了 yum install gcc 可以繼續執行了
錯誤:執行 make install 時 ModuleNotFoundError: No module named '_ctypes'
解決:執行 yum install libffi-devel -y 然后再執行 make install


2.1 檢查是否成功
which python3:執行此方法將無法查詢不到python3,因為此命令是從(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)這幾個中查找。而我是將python3.6安裝在了/usr/local/python3.7中,所以此時可以用/usr/local/python3.7/bin/python3檢查
2.2 將當前python版本修改為python3

[1] cd /usr/bin
[2] 備份當前python:mv python python.backup 或者直接刪除: rm -rf python
[3] 將當前python軟鏈接到python3: ln -s /usr/local/python3.7/bin/python3.7 python
[4] 檢測當前版本:python -V

 

 

 

2.3 將當前pip版本修改為pip3

[1] cd /usr/bin
[2] 備份當前pip:mv pip pip.backup 或者直接刪除: rm -rf pip
[3] 將當前pip軟鏈接到pip3:ln -s /usr/local/python3.7/bin/pip3.7 pip
[4] 檢測當前版本:pip -V

 

 

 

PS:linux命令:【1】查看當前文件夾中python/pip所有版本:ll /usr/bin/pyth* ll /usr/bin/pip*

3.安裝Django

pip install Django==2.1.3

 

4.安裝uwsgi

pip install uwsgi
ln -s /usr/local/python3.7/bin/uwsgi /usr/bin/uwsgi

5.安裝mysqlclient

[1] pip install mysqlclient
遇到錯誤

 

解決辦法:yum install mysql-devel
此時又出現 yum 語法錯誤,這是因為 yum 不支持 python3 ,而上面的操作已經將默認的 python2 改為了 3 ,所以出現錯誤
修改 vim /usr/bin/yum 及 /usr/libexec/urlgrabber-ext-down 第一行的 /usr/bin/python 改為 python2

 

錯誤:

 

解決:修改錯誤的文件python版本

 

6.配置並啟動uwsgi服務

參考:https://blog.csdn.net/weixin_39198406/article/details/79277580
[1] 在項目創建 uwsgi.ini 文件(與manage.py同級,不知是不是必須),並填寫以下配置信息:

[uwsgi]
# Django-related settings
# Django項目本地端口
socket = :8000
# 項目根目錄位置
chdir = /root/blog/
# wsgi.py文件在項目的中的相對位置
wsgi-file = /blog/wsgi.py
module =blog.wsgi
# 進程設置,無需變動
# master
master = true
# maximum number of worker processes
# 啟動4個uwsgi進程
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
pidfile=uwsgi.pid
daemonize=uwsgi.log

 


[2] 啟動 uwsgi
uwsgi在哪個目錄啟動,就會在哪個目錄生成uwsgi.pid和uswgi.log文件。
啟動:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重啟:uwsgi --reload uwsgi.pid
強制停止:killall -9 uwsgi
這里我們啟動uwsgi服務,可以通過ps -ef | grep uwsgi看到已經有四個uwsgi服務啟動。

7.配置nginx

server {
  listen 8080;  #啟動的nginx進程監聽請求的端口
  server_name localhost;  #域名
  error_log /var/log/easy_sysman/error.log;   #nginx錯誤日志,可自行設置,但必須保證提前建立好該目錄和文件
  location / {
    include /etc/nginx/uwsgi_params;  
    uwsgi_pass 127.0.0.1:9090;  #對於動態請求,轉發到本機的9090端口,也就是uwsgi監聽的端口
  }
  #error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;  
  location = /50x.html {
     root /usr/share/nginx/html;
  }
  location /static/ {
    alias /var/www/easy_sysman/static/;   #設定靜態文件所在目錄
  }
  location /media/ {  
    alias /var/www/easy_sysman/media/;    #同樣自行設置,要保證目錄已經建好
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM