Centos7下部署Python項目
一、配置系統環境
- yum -y install gcc gcc-c++ 編譯的時候
- yum -y install wget
- yum -y install zlib zlib-devel openssl openssl-devel ncurses-devel sqlite sqlite-devel bzip2-deve readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
- yum -y install epel-release
- yum -y install libffi-devel 編譯Python時候,如果缺少,會導致pip安裝不成功
- yum install psmisc 幫助管理/proc目錄,fuser,killall,pstree等
二、源碼安裝Python3.7.4 && Django
-
cd /opt 進入opt目錄
-
使用wget命令下載壓縮包 wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
-
tar -zxvf Python-3.7.4.tgz
-
cd Python-3.7.4
-
./configure --prefix=/usr/local/python3
-
make && make install
-
cd ~ 創建軟鏈接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 -
給python3安裝django
pip3 install django
建立軟連接
ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin -
上傳自己的項目 在項目內 python3 manage.py runserver
-
如果出錯:SQLite 3.8.3 or later is required (found 3.7.17)
參考:https://blog.csdn.net/qq_39969226/article/details/92218635

三、 安裝配置uwsgi
-
從網站https://uwsgi-docs.readthedocs.io/en/latest/Download.html下載最新版uwsgi,下載Stable/LTS版本的源文件,上傳到/opt下
-
tar -zxvf uwsgi壓縮包文件
-
cd uwsgi解壓過的目錄(安裝包)
-
python3 setup.py install
-
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi 建立軟連接
-
在manage.py的同級目錄下,新建一個uwsgi.xml文件,配置此文件
<uwsgi> <socket>127.0.0.1:8000</socket> <!-- 內部端口,自定義 --> <chdir>/data/wwwroot/demo/</chdir> <!-- 項目路徑 --> <module>demo.wsgi</module> <!-- mysite為wsgi.py所在目錄名--> <processes>4</processes> <!-- 進程數 --> <daemonize>uwsgi.log</daemonize> <!-- 日志文件 --> </uwsgi>
四、安裝配置nginx
-
安裝
# 1.進入home目錄 cd /home # 2.下載nginx wget http://nginx.org/download/nginx-1.13.7.tar.gz # 3.解壓 tar -zxvf nginx-1.13.7.tar.gz # 4.進入解壓后的nginx-1.13.7文件夾 cd nginx-1.13.7 # 5.編譯安裝 ./configure make && make install -
nginx一般默認安裝好的路徑為/usr/local/nginx
在/usr/local/nginx/conf/中先備份一下nginx.conf文件,以防意外。cd /usr/local/nginx/conf cp nginx.conf nginx.conf.bak -
然后打開nginx.conf,把原來的內容刪除,直接加入以下內容:
vim nginx.confevents { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name xx.xx.xx.xx; #改為自己的域名,沒域名修改為127.0.0.1:80 charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一樣 uwsgi_param UWSGI_SCRIPT demo.wsgi; #wsgi.py所在的目錄名+.wsgi uwsgi_param UWSGI_CHDIR /data/wwwroot/demo/; #項目路徑 } location /static/ { alias /data/wwwroot/demo/static/; #靜態資源路徑 } } }
五、啟動服務
-
進入項目目錄下將settings.py中:
ALLOWED_HOSTS = ['*'] DEBUG = False -
cd /data/renwu ls
manage.py/uwsgi.ini -
啟動uwsgi: uwsgi -x demo.xml
-
cd /usr/local/nginx/sbin/
-
啟動nginx:./nginx
六、配置靜態資源
-
打開django項目中settings.py文件(/unicom/settings.py),添加:
STATIC_ROOT = '/root/www/unicom/static/' -
運行python3 manage.py collectstatic,此命令是搜集靜態文件的命令,搜集后的靜態文件存放在/root/www/unicom/static/中
-
重新啟動uwsgi和nginx。
1. killall -9 nginx 2. killall -9 uwsgi 3. nginx 4. uwsgi uwsgi.ini
七、常用命令
關閉nginx&&uwsgi
killall -9 nginx
killall -9 uwsgi
查看服務器正在運行的端口
netstat -ntpl

關閉8000端口(端口被占用)
sudo fuser -k 8000/tcp
#啟動Django項目,如果出現Error:That port is already in use. 關掉8000的進程就好
重啟nginx
nginx -s reload
檢查nginx配置文件語法是否正確
cd /etc/nginx
nginx -t

查看軟連接指向
# 1. 查看軟連接位置---》在/usr/bin 目錄
whereis python
whereis python3
whereis pip
whereis pip3
# 2. 列出軟連接指向文件
ls -al python*
ls -al pip*
卸載python
# 1. 刪除python3.x的安裝包
cd 安裝目錄
rm -rf python3.xx
# 2. 刪除軟件的軟連接
cd /usr/bin
rm -rf python3 #刪除兩個軟連接
rm -rf pip3
重啟nginx
nginx -s reload
本地測試鏈接是否成功
curl http://127.0.0.1:80
安裝virtualenv
# python安裝完成后!!!
#1. 安裝虛擬環境管理庫
pip3 install virtualenv
#2. 創建軟連接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
#3.安裝成功在根目錄下建立兩個文件夾,主要用於存放env和網站文件的。(個人習慣,其它人可根據自
己的實際情況處理)
mkdir -p /data/env # env保存各種項目對應虛環境
mkdir -p /data/wwwroot #wwwroot,存放網站源碼!
#4. 切換到/data/env/下,創建指定版本的虛擬環境。
virtualenv --python=/usr/bin/python3 jd(虛擬環境名)
#5. 激活
cd /data/env/jd/bin
source activate # deactivate 退出虛擬環境
#6. 安裝項目依賴
pip install django==2.1.8/requets/numpy/pandas......
防火牆
firewall-cmd --state #查看防火牆狀態
systemctl stop firewalld.service #停止防火牆
systemctl disable firewalld.service #禁止firewall開機啟動
