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中部署django项目

Linux下安装部署 Nginx + uWSGI + Django

如何用Nginx部署Django

[linux]centos7.4部署django+Uwsgi+Nginx

Linux如何去部署Django (Nginx + uwsgi + Python3 + Django)

第三百九十八节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署Linux安装nginx