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.conf
events { 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开机启动