在网上找过很多教程大多讲述的不够完善与清晰,对我们小学生真的不太友好,最主要的是djngo关于uwsgi的解释不太详细,再去看uwsgi的内容更是让人头疼,这里记录这些天来尝试最终安装成功的案例操作步骤,分享给大家。
项目已经做到,python多版本共存,pipenv的多虚拟环境,以及宝塔的可视化管理,宝塔挺好用的包括各种配置,所以安装他并与多个python项目共存。废话不多说了以下是安装的整个过程
1.安装依赖
yum整体修改为清华源参照如下网址
https://mirror.tuna.tsinghua.edu.cn/help/centos/
配置完成一定记得执行
sudo yum makecache
1.1安装部分扩展
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel mysql-devel sqlite-devel gcc gcc-devel python-devel
yum install python-devel nginx
2.安装python对应版本,复制链接wget下载
http://npm.taobao.org/mirrors/python
wget http://npm.taobao.org/mirrors/python/3.6.9/Python-3.6.9.tgz
// 创建安装目录
mkdir -p /usr/local/python3
// 解压安装包
tar -zxvf Python-3.6.9.tgz
// 进入解压后的目录,编译安装
cd Python-3.6.9
./configure --prefix=/usr/local/python3
make && make install
# 执行pip升级 (错误或失败请查看2.1项是否已经创建好软连接)
pip3 install --upgrade pip
pip3 install --upgrade setuptools
2.1.如果输入python不存在,则需要建立python3的软链
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
此时执行python3就是我们新安装的python,执行python将会是服务器自带的
3.安装pipvenv
pip3 install pipenv
# 查看虚拟环境
pipenv --venv
# 指定python版本环境
pipenv --python 3.6.9
#如果这时报错,找不到pipenv命令,则需要进行以下步骤 :
# 添加python的bin目录到path路径中,vim /etc/profile添加如下命令,完成后执行source /etc/profile生效
export PATH=$PATH:/usr/local/python3/bin
3.1.创建虚拟环境
cd / mkdir www cd www python -m venv py3env
# 启动/进入 source /www/wwwroot/py3env/bin/activate
4.虚拟环境安装django
pip3 install django (指定安装和你项目相同的版本)
5.虚拟环境与系统环境都装上uwsgi
# 在系统环境下安装后,一般在虚拟环境就有uwsgi,没有的话在虚拟环境安装一次
pip3 install uwsgi
# 退出虚拟环境在安一次,退出虚拟环境 exit 可能直接推出了linux远程
6.安装宝塔并安装nginx与mysql
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装好数据库之后在宝塔首页进入安全放行9090,也就是项目的指定端口,非必须9090
7.安装git
yum install git cd /www git clone https://git.lug.ustc.edu.cn/weishuyuan/djonevue.git
7.1此时可以安装项目需要的扩展
# 优先在本地导出pip3 freeze > requirements.txt
pip3 install -r requirements.txt
一定在宝塔安装完成数据库之后载安装,否则会导致安装失败
7.2将django的数据插入线上数据库
# 优先运行一次让django创建自己的必须数据库
python3 manage.py migrate
# xxxx为需要创建表的app名称
python3 manage.py makemigrations xxxx
# 运行完makemigrations只是创建了django的文件,在之后继续运行migrate
8.nginx配置
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090;
}
location /static {
alias /www/wwwroot/xxxx.com/static;
}
9.项目目录下uwsgi配置
[uwsgi]
socket = 127.0.0.1:9494
chdir=/www/wwwroot/testinter
wsgi-file=testinter/wsgi.py
module=testinter.wsgi:application
master=true vacuum=true
virtualenv=/www/wwwroot/py3env
env=DJANGO_SETTINGS_MODULE=testinter.settings
**不能存在空格**
socket 本地地址与nginx的配置要一毛一样
chdir 项目目录绝对路径
wsgi-file wsgi的相对路径
module wsgi书写格式不能变,项目下文件夹 点 wsgi 冒号 application
virtualenv 虚拟环境路径
env django项目配置(settings)导入
10.启动uwsgi
# 直接在对应的虚拟环境运行
uwsgi --ini /www/wwwroot/testinter/uwsgi.ini
uwsgi -d --ini /www/wwwroot/testinter/uwsgi.ini # 插入root
# 查看是否启动
ps -aux | grep uwsgi
# 存在多个时,执行命令,查询uwsgi是否启动,端口检查netstat -ntlp|grep 80
ps -aux | grep uwsgi
# 被占用kill进程 kill -9 7043
10.1启动、重新加载与关闭uwsgi
# 命令行运行,会显示再shell界面
uwsgi -i /www/wwwroot/testinter/uwsgi.ini
# 插入root运行,系统运行
uwsgi -d -i /www/wwwroot/testinter/uwsgi.ini
uwsgi --stop /www/wwwroot/testinter/uwsgi.ini
uwsgi --reload /www/wwwroot/testinter/uwsgi.ini
**每次上传新代码后需要重新运行uwsgi,同时需要强制关闭uwsgi重启才有效**
*11.所以采用wget方式安装redis
# 选择redis版本,
http://download.redis.io/releases/
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
# 解压安装包
tar -zxvf redis-5.0.0.tar.gz
# 需要gcc的支持,未安装使用:
yum -y install gcc automake autoconf libtool make
# 进行gcc的编译安装
make MALLOC=libc make install
# 已经安装在了root目录下
cd redis-5.0.0
# 配置
redis vi redis.conf
# 进程在后台运行
daemonize no 修改为 daemonize yes
# 日志输出文件等信息
logfile "" 修改为指定的日志文件 logfile "/www/wwwlogs/redis_logs.log"
# 保存退出,并创建对应位置的log
touch /www/wwwlogs/redis_logs.log
# 进入启动文件
cd /root/redis-5.0.0/src
# 启动redis
./redis-server ../redis.conf
# 查看redis是否使用了6379端口,不是直接kill掉重启
netstat -nlpt
# 命令行模式检测开启(再redis目录下)
./redis-cli
# 添加到启动
mkdir /etc/redis
cp /root/redis-5.0.0/redis.conf /etc/redis/6379.conf
# 将启动文件复制到init.d里面会有nginx与mysql在那里
cp /root/redis-5.0.0/utils/redis_init_script /etc/init.d/redisd
# 执行自启命令
cd /etc/init.d/ chkconfig redisd on
# 启动与关闭
service redisd start service redisd stop
看结果是否支持chkconfig 如果报service redisd does not support chkconfig 错误 则修改redisd 文件 vi redisd 在第一行加入如下两行注释,保存退出
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database