linux服务部署nginx+django+mysql
Posted 泽州
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux服务部署nginx+django+mysql相关的知识,希望对你有一定的参考价值。
# 云服务器演示
由于云服务器下载太慢了,所以改用本机下载,xshell连接到云服务器通过rz命令上传文件方式。
上传文件:
linux服务器使用rz命令前提是安装了包: yum install lrzsz -y 使用方式: rz : 本地上传文件至服务器 格式:rz sz :服务器内容下载到本地 格式:sz 服务器文件路径
python3.6安装步骤:
1. 先下载好python3.6安装包,上传至服务器一个目录下 2. 安装依赖文件 yum install -y \\ gcc patch libffi-devel python-devel zlib-devel bzip2-devel \\ openssl-devel ncurses-devel sqlite-devel readline-devel \\ tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 3. 解压python包 tar -zxvf Python-3.6.6.tgz cd Python-3.6.6 4. 指定安装路径(在python解压路径下) ./configure --prefix=/opt/python36 5. 编译 安装 make && make install 6. 添加环境变量 echo PATH=/opt/python36/bin:$PATH >> /etc/profile source /etc/profile
python虚拟环境:
# 目的是:一个机器部署多个项目时候,不会由于模块版本不同出现问题
1. 手动先安装virtualenv(不要高版本) pip3 install --upgrade virtualenv==16.7.9 2. 安装virtualenvwrapper模块 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvwrapper 3. 配置环境 vim ~/.bashrc 最底下添加的内容: export WORKON_HOME=/opt/env # 环境的存放目录 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=\'--no-site-packages\' # 干净隔绝的环境,创建时侯自动加的参数 export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 # python解释器 source /opt/python36/bin/virtualenvwrapper.sh # 一般安装好是这个位置,执行安装脚本 4. 环境生效 source ~/.bashrc
遇到的问题:
1.virtualenv: error: unrecognized arguments: --no-site-packages
原因:由于版本太高,安装指定版本解决
python虚拟环境的操作命令
创建环境:
mkvirtualenv 环境名称
显示存在的虚拟环境
lsvirtualenv
激活进入现有环境:
workon 已存在的环境名
从虚拟环境中退出:
deactivate
删除环境:
rmvirtualenv 环境名称
直接进入当前激活环境的python目录中:
cdvirtualenv
直接进入当前激活环境的python目录的第三方目录中:
cdsitepackages
显示当前激活环境的python目录的第三方目录的内容:
lssitepackages
mysql部署:
https://www.cnblogs.com/zezhou/p/11523472.html
tengine基本安装:
1. 解压包 cd /opt/ tar xvf tengine-2.3.2.tar.gz # 这个包我已经下载好了,在opt目录下 2. 安装依赖 yum install pcre pcre-devel openssl openssl-devel -y 3. 添加用户 useradd nginx -s /sbin/nologin -M 4. 配置tengine cd /opt/tengine-2.3.2 ./configure --user=nginx --group=nginx --prefix=/opt/tengine2.3.2 --with-http_stub_status_module --with-http_ssl_module 5. 编译 安装 make && make install 6. 创建软连接(方便些,也可不搞) ln -s /opt/tengine2.3.2/ /opt/tengine 7. 启动服务 /opt/tengine/sbin/nginx -t # 检查语法 /opt/tengine/sbin/nginx # 启动
/opt/tengine/sbin/nginx -s reload # 平滑加载
# 查看服务 netstat -lntup|grep nginx
8. 阿里云配置安全组
tengine配置:
vim /opt/tengine/conf/nginx.conf
# 仅是摘出了server server{ listen 80; server_name 0.0.0.0; # 返回登录页面 location /login/ { # 使用alias,表示用户/login/请求过来,我到alias指定的目录,返回index指定的页面 # alias参数,拼接方式是 alias目录 + index指定的html名称 # root参数,拼接方式是 root目录 + 请求路径 + index指定的html名称 # 注意:alias后面需要/符号 alias /python_project/collection_info/templates/; index login.html; } # 返回静态页面 location /manager/index/ { alias /python_project/collection_info/templates/; index manager_page.html; } # 返回静态文件 # 这时候使用root就没啥问题 # root路径 + url请求路径 = 返回文件 location /static/ { root /python_project/collection_info/; } # / 是通配符,优先级最低,表示其他都不匹配时候走这个 location / { # 给后端,通过uwsgi发送给django处理 include uwsgi_params; # 由于我是一个服务器部署的所有服务,所以用的回环地址 uwsgi_pass 127.0.0.1:8000; } }
# nginx的根路径匹配,待续
配置uwsgi启动django项目:
传统wsgi只是单进程的,不能利用多核,uwsgi可以缓解些。
使用uwsgi达到启动django项目的目的,并且还可以和nginx结合使用!
uwsgi安装(进入虚拟环境里搞):
pip3 install -i https://pypi.douban.com/simple uwsgi
uwsgi配置文件:
vim /python_project/collection_info/uwsgi.ini
[uwsgi] ; 监听的端口,当没有nginx时候使用这个 ;http = 127.0.0.1:8000 ; 代理静态资源:路径映射,没nginx时候要配置的 ; static-map = /static=/python_project/collection_info/static/ ; 指定和nginx进行套接字通信的方式:端口或文件 socket = 127.0.0.1:8000 socket = /python_project/collection_info/collection_info.sock ; 项目所在目录,和manage.py同级 chdir = /python_project/collection_info/ ; python虚拟环境所在目录 home=/opt/env/collection_info PYTHONHOME = /opt/env/collection_info/bin/ ; 主应用中的wsgi文件 wsgi-file = collection_info/wsgi.py ; 启动一个master进程,来管理其余的子进程 master=True ;开俩进程 processes = 2 ;开四个线程 threads = 4 ; 保存主进程的pid,用来控制uwsgi服务 pidfile=/python_project/collection_info/uwsgi.pid ; 启动项目 uwsgi uwsgi.ini ; uwsgi --stop/reload xxx.pid 停止/重启uwsgi ; django的运行日志保存的文件路径 daemonize=/python_project/collection_info/log/uwsgi.log ; 设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏 max-requests=5000 ; 服务停止时自动移除unix Socket和pid文件 vacuum=true
uwsgi命令:
uwsgi --ini /python_project/collection_info/uwsgi.ini # uwsgi启动jdango项目
uwsgi --stop /python_project/collection_info/uwsgi.pid # 停掉项目
以上是关于linux服务部署nginx+django+mysql的主要内容,如果未能解决你的问题,请参考以下文章
Linux下安装部署 Nginx + uWSGI + Django
[linux]centos7.4部署django+Uwsgi+Nginx