安装以下
python3 + nginx + virtualenv + uwsgi + django
安装前准备
1、python3和nginx的安装包
2、更新yum源
[root@localhost admin]# yum clean all
[root@localhost yum.repos.d]# yum makecache
说明:更新yum是因为可以安装到最新的rpm包。
步骤1:安装python3
1、 安装python所需要的RPM包
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel gcc make python-devel
2、新建文件夹
mkdir /usr/local/python3
3、解压文件
tar -zxvf Python-3.7.4.tgz
4、进入文件夹
cd Python-3.7.4
5、编译安装
[root@localhost Python-3.7.4]# ./configure --prefix=/usr/local/python3
[root@localhost Python-3.7.4]# make&&make install
6、备份python2
mv /usr/bin/python /usr/bin/python.bak
7、创建python软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
8、创建pip软连接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
9、检查是否安装成功
python -V
pip -V
10、修复升级python引起的问题
1)vim /usr/libexec/urlgrabber-ext-down
打开以后,找到一个/usr/bin/python的,后面加上2.7就可以了也就是/usr/bin/python2.7
2)vi /usr/bin/yum
做法和上面的一样,也是改成python2.7就可以了!
3)vim /usr/bin/firewall-cmd, 将#!/usr/bin/python -Es 改为 #!/usr/bin/python2 -Es
4)vim /usr/sbin/firewalld, 将#!/usr/bin/python -Es 改为 #!/usr/bin/python2 -Es (这一步是针对于防火墙报错,进行的修改)
安装nginx
1、获取nginx-1.16.1
wget http://nginx.org/download/nginx-1.16.1.tar.gz
2、下载完成后,执行解压命令:
[root@localhost admin]# tar -zxvf nginx-1.16.1.tar.gz
3、 配置安装环境
[root@localhost nginx-1.16.1]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.16.1]# make && make install
4、启动nginx
[root@localhost nginx-1.16.1]# /usr/local/nginx/sbin/nginx
说明:没有任何报错即是安装成功。
5、停止或者重新载入nginx
$ /usr/local/nginx/sbin/nginx -s stop
$ /usr/local/nginx/sbin/nginx -s reload
6、加载配置文件
$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
7、测试配置文件是否正常:
$ /usr/local/nginx/sbin/nginx -t
8、创建nginx的软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
9、编辑配置文件
在下面添加1,2,3,注意要把注释去掉
location / {
root html/myproject/love; #1
include uwsgi_params; #2
uwsgi_pass 127.0.0.1:8000; #3
index index.html index.htm;
}
10、新建项目文件夹
mkdir /usr/local/nginx/html/myproject
安装虚拟环境
[root@localhost myproject]# pip install virtualenv
结果
[root@localhost venv]# virtualenv venv
bash: virtualenv: 未找到命令...
解决方案:添加全局环境变量
[root@localhost python3]# vim /etc/profile
添加一行代码到结尾:PATH=$PATH:/usr/local/python3/bin
[root@localhost python3]# source /etc/profile
[root@localhost python3]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin:/usr/local/python3/bin
安装Django
pip install django
结果
安装 uwsgi
pip install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
结果
新建虚拟环境
[root@localhost myproject]# virtualenv venv
结果
[root@localhost bin]# source /usr/local/nginx/html/myproject/venv/bin/activate
[root@localhost myproject] django-admin startproject love
(venv) [root@localhost love]# python manage.py runserver 0.0.0.0:8000
报错
ModuleNotFoundError: No module named ‘django’
解决方法
[root@localhost love]# vi manage.py
添加以下内容:
sys.path.append('/usr/local/python3/lib/python3.7/site-packages')
再次输入
[root@localhost love]# python manage.py runserver 0.0.0.0:8000
报错
raise ImproperlyConfigured(‘SQLite 3.8.3 or later is required (found %s).’ % Database.sqlite_version)
解决方法
[root@localhost love]# vi settings.py
注释下面两行内容或者升级sqlite3
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
创建配置文件config.ini
内容如下
[uwsgi]
chdir= /usr/local/nginx/html/myproject/love
module=love.wsgi
master= true
processes= 3
socket = 127.0.0.1:8000
chmod-socket= 666
vacuum= true
enable-threads = true
daemonize=uwsgi.log
重新加载nginx配置文件
[root@localhost love]# nginx -c /usr/local/nginx/conf/nginx.conf
[root@localhost love]# nginx -s reload
[root@localhost love]# uwsgi --ini config.ini
结果
整个部署环境就此就结束啦,后续添加自启动功能。