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/; #同樣自行設置,要保證目錄已經建好 } }