-
下载python3.7.1
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz -P /usr/src
下载到 /usr/src内
= -
解压
tar xf Python-3.7.1.tar.xz
-
安装依赖包
如果有就不用安装
yum -y install gcc-* openssl-* libffi-devel sqlite-devel
-
配置文件检测
./configure --enable-optimizations --with-openssl=/usr/bin/openssl
-
可以在这里先把pip的ssl错误调整,看下面
-
编译
make j4
-
安装
make install
注意
- 默认安装 径:/usr/local/lib/python3.7
- 升级pip
pip3 install --upgrade pip
'''如果在升级pip过程报错提示 找不到SSL模块'''
# cd到python目录中
vim Modules/Setup
# 将SSL注释解开一共4行!!
# 第211-214行
SSL=/usr/local/ssl
_ssl _ssl.c \
...
...
然后重新 make install
python
安装python虚拟环境
为每一个项目创建一个python的虚拟环境,不用每个项目都共用一个环境(每个环境可以安装自己的插件)
pip3 install virtualenv
使用方法
# 创建环境
virtualenv -p python3 web (环境名叫web)
# 生效环境
source web/bin/activate
'''当命令行前面有web后,说明已经进入虚拟环境'''
安装Django
pip3 install django
部署发布环境
uwsgi的安装
uwsgi是服务 和服务端应 程序的通信协议,规定 怎么把请求转发给应 程序和返回,用来发布python网站的
- 安装
pip3 install uwsgi
- 创建配置文件目录
mkdir /etc/uwsgi
- 编辑配置文件
vim /etc/uwsgi/uwsgi.ini
【最下一行是django路径根据不同配置】
[uwsgi]
uid = root
gid = root
socket = 127.0.0.1:9090
master = true
vhost = true
no-site = true
workers = 2
reload-mercy = 10
vacuum = true
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi9090.pid
daemonize = /var/log/uwsgi9090.log
pythonpath = /root/web/lib/python3.7/site-packages
【说明】
[uwsgi]
uid = root //谁启动的uwsgi
gid = root //组是谁
socket = 127.0.0.1:9090 //启动的ip和端口
master = true //启动主进程
vhost = true //多站模式
no-site = true //多站模式时设置模块和件
workers = 2 //进程数
reload-mercy = 10 //平滑的重启
vacuum = true //退出、重启时清件
max-requests = 1000 //开启10000个进程后,自动respawn下
limit-as = 512 // 将进程的总内存 控制在512M
buffer-size = 30000
pidfile = /var/run/uwsgi9090.pid //pid件于脚本启动、停该进程
daemonize = /var/log/uwsgi9090.log
pythonpath = /root/web/lib/python3.7/site-packages //django的路径,如果是虚拟环境要特别注意一下
手动启动方法:
uwsgi --ini /etc/uwsgi/uwsgi.ini
检查是否启动netstat -ntpl
- 制作脚本启动
vim /etc/init.d/uwsgi
- 写进脚本(严格按照格式)复制的时候前面两行会自动复制错误,请注意!!
#!/bin/sh
DESC="uwsgi daemon"
NAME=uwsgi
DAEMON=/usr/local/bin/uwsgi
CONFIGFILE=/etc/uwsgi/$NAME.ini
PIDFILE=/var/run/${NAME}9090.pid
SCRIPTNAME=/etc/init.d/$NAME
FIFOFILE=/tmp/uwsgififo
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
if [ ! -f $PIDFILE ];then
$DAEMON $CONFIGFILE || echo -n "uwsgi running"
else
echo "The PID is exist..."
fi
}
do_stop() {
if [ -f $PIDFILE ];then
$DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
rm -f $PIDFILE
echo "$DAEMON STOPED."
else
echo "The $PIDFILE doesn't found"
fi }
do_reload() {
if [ -p $FIFOFILE ];then
echo w > $FIFOFILE
else
$DAEMON --touch-workers-reload $PIDFILE || echo -n "uwsgi
can't reload"
fi }
do_status() {
ps aux|grep $DAEMON
}
case "$1" in
status)
echo -en "Status $NAME: \n"
do_status ;;
start)
echo -en "Starting $NAME: \n"
do_start
;; stop)
echo -en "Stopping $NAME: \n"
do_stop
;;
reload|graceful)
echo -en "Reloading $NAME: \n"
do_reload
;; *)
echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
exit 3
;;
esac
exit 0
- 给与权限!
chmod 755 /etc/init.d/uwsgi
- 启动命令
/etc/init.d/uwsgi status
运行/etc/init.d/uwsgi start
检查是否启动netstat -ntpl
或sudo netstat -antup
- 停止命令
/etc/init.d/uwsgi stop