最近公司有个项目需要使用到CMDB,就顺便研究了一下搭建环境,正式上线后需要使用到Nginx来控制服务的启停,下面是具体的搭建过程;
1. 安装环境
CentOS 7.5
Python 3.6.5
Django 2.1
uWSGI 2.0.17.1
Nginx 1.14.0
2. 关闭防火墙和SElinux
[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# systemctl disable firewalld #开机禁用firewall服务
[root@localhost ~]# getenforce #查看SELinux状态Enforcing [root@localhost ~]# /usr/sbin/sestatus #Current mode表示当前selinux防火墙的安全策略SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31[root@localhost ~]# setenforce 0 #临时关闭SElinux[root@localhost ~]# getenforce Permissive [root@localhost ~]# vim /etc/selinux/config #永久关闭将 "SELINUX=enforcing" 改为 "SELINUX=disabled",保存后退出,重启才会生效
3. 安装所需软件包
最小化安装Linux系统后有很多软件包没有安装,有些命令不能使用,需要手动自己安装,把所需的工具包装上,方便后续配置的工作;
[root@localhost ~]# yum install -y vim tree net-tools lrzsz [root@localhost ~]# yum groupinstall "Development Tools" -y
4. pyenv的安装
pyenv
是一款特别好用的Python版本管理器,程序员可以建立不同的目录,在不同的目录里分别运行不同版本的Python, 并且互不影响,安装的包也互不影响。github项目地址:https://github.com/yyuu/pyenv
pyenv-virtualenv
是pyenv的一个plugin(插件),可以用来创建基于不同Python版本的干净的虚拟环境。github项目地址:https://github.com/yyuu/pyenv-virtualenv
4. 1 安装依赖包
[root@localhost ~]# yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bzip2-devel readline-devel
4.2 安装pyenv(pyenv-virtualenv插件会自动安装)
安装(下面一条命令可以把pyenv和pyenv-virtualenv插件都装上):
[root@localhost ~]# curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
4.3 设置环境变量
在~/.bash_profile
环境变量配置加入下面三行
export PATH="~/.pyenv/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"
需要使环境变量生效
运行命令exec "$SHELL"
或者source ~/.bash_profile
,如果还没有效果,就退出终端,重新打开。
4.4 pyenv 使用指南
[root@localhost ~]# pyenv install --list #查看可以安装的版本 # `...`表示省略 ... 2.7.13... 3.6.5...
pyenv versions
查看系统的上安装的Python版本。 其中前面的 *
表示当前工作目录正在使用的python版本,其中的 system
表示系统自带的 Python 版本:
[root@localhost ~]# pyenv versions*system (set by /Users/yulongjun/.pyenv/version)
pyenv install <version>
安装其他版本的Python。我们以安装2.7.13
和安装3.6.5
版本:
[root@localhost ~]# pyenv install 3.6.5[root@localhost ~]# pyenv install 2.7.13[root@localhost ~]# pyenv versions #可以看到安装的版本* system (set by /root/.pyenv/version) 2.7.13 3.6.5
pyenv local <version>
切换python版本。
示例:
pyenv local 2.7.13pyenv local 3.6.5
4.5 pyenv-virtualenv 使用指南
pyenv-virtualenv是用来创建一个干净的虚拟Python环境的命令,通常在创建干净的新项目时候使用。使用方法如下:
创建虚拟环境 pyenv virtualenv 版本号 虚拟环境名
[root@localhost ~]# pyenv virtualenv 3.6.5 venv-3.6.5
创建项目,让项目使用干净的Python3.6.5的虚拟环境:
[root@localhost ~]# mkdir Python3[root@localhost Python3]#pyenv local venv-3.6.5(venv-3.6.5) [root@localhost Python3]# (venv-3.6.5) [root@localhost Python3]# cd ..[root@localhost Python3]# cd Python3(venv-3.6.5) [root@localhost Python3]# (venv-3.6.5) [root@localhost python3]# python -VPython 3.6.5
我们会发现:只要我们进入Python3目录,就会自动激活virtualenv
,退出Python3目录,就会关闭virtualenv
。
如果要关闭自动激活,可以运行命令pyenv deactivate
,要重新启用的话,运行pyenv activate 虚拟环境名
。
5. 安装Django
Django是一个开放源代码的Web应用框架,由Python写成,能够以最小的代价构建和维护高质量的Web应用。
(venv-3.6.5) [root@localhost Python3]# pip install django
安装完成后检查Django版本,表示安装成功
(venv-3.6.5) [root@localhost Python3]# python3 -c "import django; print(django.get_version())" 或者 (venv-3.6.5) [root@localhost Python3]# python -m django --version2.1
查看已经安装的第三方库
(venv-3.6.5) [root@localhost Python3]# pip freezeDjango==2.1pytz==2018.5uWSGI==2.0.17.1 #这个是后面安装
创建CMDB项目
(venv-3.6.5) [root@localhost Python3]# django-admin startproject cmdb
在CMDB项目中创建app应用
(venv-3.6.5) [root@localhost Python3]# cd cmdb(venv-3.6.5) [root@localhost Python3]# pwd /root/Python3/cmdb #临时的测试目录,生产环境不应放到/root目录下,根据需求自己调整(venv-3.6.5) [root@localhost Python3]# python3 manage.py startapp cmdb #创建App应用
设置项目允许访问的域名,可以配置域名或IP,这里为了方便,'*'
表示所有的都可访问
(venv-3.6.5) [root@localhost cmdb]# vim cmdb/setting.py…… ALLOWED_HOSTS = ['*'] ……
初始化数据库,使数据库状态与当前模型集和迁移集同步。就是将对数据库的更改,主要是数据表设计的更改,在数据库中真实执行。例如,新建、修改、删除数据表,某数据表内的字段等等。
python manage.py migrate
启动服务
(venv-3.6.5) [root@localhost Python3]# python manage.py runserver 0.0.0.0:8080
使用浏览器打开,如下图:
Successfully installed django-2.1
6. 安装和配置uWSGI
WSGI 全称Web Server Gateway Interface
,或者Python Web Server Gateway Interface
,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
uWSGI是一种WSGI实现,其工作原理是让它创建一个Unix socket,并且通过WSGI协议提供响应到web服务器。最后,我们完整的组件栈看起来将是这样的:
the web client <-> the web server <-> the socket <-> uwsgi <-> Django
安装uwsgi
pip install uwsgi
编写一个测试文件保存为 mytest.py
,写入以下内容
# !/usr/bin/python3def application(env, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return [b'UWSGI Test...']
然后再启动uWSGI服务来测试
(venv-3.6.5) [root@localhost cmdb]# uwsgi --http :80 --wsgi-file mytest.py
uWSGI Test
使用下面的方式,测试uwsgi是否可以正常运行,相当于 python manage.py runserver 0.0.0.0:8080
(venv-3.6.5) [root@localhost cmdb]# uwsgi --http :8080 --chdir /root/python3/cmdb/ --module cmdb.wsgi --static-m=/static=static
作者:岳永
链接:https://www.jianshu.com/p/e60a6c4762ee