00-所需工具

xshell:https://www.netsarang.com/zh/downloading/?token=ZlZnVUNsWDJuM0VaZnVPUjZST1dwd0AzYlNteUZwb0dhRlUxRVV4bmNUZ2ZR 

xftp:https://www.netsarang.com/zh/downloading/?token=QlBLQUdldk1mUjliSzVQdzczeTVkQUA3R1RiZDFNcGQxOXFHVFAyaGhhREZn 

01-uwsgi介绍

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

1. WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
2. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
3. 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
4. uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

02-nginx介绍

Nginx是一个Http和反向代理服务器
什么是反向代理服务器呢? 正向的就是由浏览器主动的想代理服务器发出请求,经代理服务器做出处理后再转给目标服务器
反向的就是不管浏览器同不同意,请求都会经过代理服务器处理再发给目标服务器
这其中的区别就是必须经过Nginx反向代理服务器,这就有了使用Nginx的几个好处: 安全:不管什么请求都要经过代理服务器,这样就避免了外部程序直接攻击web服务器
负载均衡:根据请求情况和服务器负载情况,将请求分配给不同的web服务器,保证服务器性能
提高web服务器的IO性能:这个我也没看懂,总结来说就是请求从客户端传到web服务器是需要时间的,
传递多长时间就会让这个进程阻塞多长时间,而通过反向代理,就可以在反向代理这完整接受请求,然后再
传给web服务器,从而保证服务器性能,而且有的一些简单的事情(比如静态文件)可以直接由反向代理处理,不经过web服务器

03-centos7的部署

以全新服务器为例:

yum -y update

yum install gcc

yum -y install zlib*

yum install openssl-devel -y

04-ssh安装

yum install openssh-server -y

service sshd restart

#xshell连不上,SSH服务端不允许密码验证。
#服务端开启密码验证的方法: vim /etc/ssh/sshd_config 把PasswordAuthentication项为yes 重启服务
service sshd restart

05-安装MySQL

#1.安装
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server #2.重启服务
service mysqld restart # 查看是否开机自启
执行命令:
chkconfig --list | grep mysqld
chkconfig mysqld on #3. 设置bind-ip vim /etc/my.cnf
在 [mysqld]:
下面加一行
bind-address = 0.0.0.0 #4.登录mysql
mysql -u root #5. 设置外部ip可以访问
#mysql中输入命令:
#后面用navicat连接远程服务器mysql的用户名和密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION; FLUSH PRIVILEGES; #6.设置mysql密码
进入mysql:
set password =password(''); #密码123456
flush privileges;

5.1 卸载MySQL

# 查看是否已安装mysql
执行命令:yum list installed | grep mysql #yum方式安装的mysql: 1、yum remove mysql mysql-server mysql-libs compat-mysql51
2、rm -rf /var/lib/mysql
3、rm /etc/my.cnf # 删除mysql相关文件
提示:该命令是查找mysql的相关文件
执行命令:find / -name mysql 执行命令:rm -rf [上面命令查出的结果目录]
提示:删除命令执行完之后,可再使用find / -name mysql 确认是否已经全部删除 可以回到安装步骤重新安装mysql了。

5.2 CentOS7 安装 MariaDB10.3

# 1. 配置repo文件,通过yum安装:
vi /etc/yum.repos.d/MariaDB.repo # 2. 添加以下内容:
# MariaDB 10.3 CentOS repository list - created 2018-06-21 09:11 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
# baseurl = http://yum.mariadb.org/10.3/centos7-amd64
# 修改为国内源
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.3/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1 # 3. 安装:
sudo yum install MariaDB-server MariaDB-client # 4. 修改数据库文件目录:
service mysql stop
mkdir -p /data/mysqldb
#拷贝默认数据库到新的位置,-a表示将文件属性一起拷贝
cp -a /var/lib/mysql /data/mysqldb # 5. 修改mysql启动配置
vim /etc/my.cnf.d/server.cnf # 6. 找到[mysqld],添加以下内容:
[mysqld]
datadir=/data/mysqldb/mysql
socket=/var/lib/mysql/mysql.sock
#default-character-set=utf8
character_set_server=utf8
slow_query_log=on
slow_query_log_file=/data/mysqldb/slow_query_log.log
long_query_time=2 # 7. 创建慢查询日志文件
touch /data/mysqldb/slow_query_log.log
chmod 666 /data/mysqldb/slow_query_log.log # 8. 启动MariaDB
service mysql start # 9. 修改root密码:
mysqladmin -u root password 'root' # 10. root原始密码存在于:/root/.mysql_secret # 11. 授权ip登录:
grant all on *.* to 'root'@'%' identified by 'password' with grant option; # 12. 启停命令:
service mysql start
service mysql stop
service mysql restart
service mysql status

06-pip和python3.6的安装

#安装pip

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate

sudo python get-pip.py
# 安装python3.6
1. 获取
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar -xzvf Python-3.6.2.tgz -C /tmp
cd /tmp/Python-3.6.2/ 2. 把Python3.6安装到 /usr/local 目录
./configure --prefix=/usr/local
make
make altinstall 3. 更改/usr/bin/python链接
ln -s /usr/local/bin/python3.6 /usr/bin/python3

07-虚拟环境的安装

yum install python-setuptools python-devel
pip install virtualenvwrapper #编辑.bashrc文件
vim ~/.bashrc #添加进去
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper.sh #sudo find / -name virtualenvwrapper.sh 查看你的virtualenvwrapper.sh在什么地方 #重新加载.bashrc文件
source ~/.bashrc #虚拟环境保存的路径
cd ~/.virtualenvs/ (创建的虚拟环境都会保存在这个目录,前面设置的) #创建指定python版本的虚拟环境方法
mkvirtualenv -p /usr/local/bin/python3.6 workmanage02 workon MxShop #进虚拟环境安装依赖包 首先 pip freeze > requirements.txt
将本地的虚拟环境安装包导出来,上传到服务器 pip install -r requirements.txt #安装mysqlclient出问题 centos 7:
yum install python-devel mariadb-devel -y ubuntu:
sudo apt-get install libmysqlclient-dev 然后:
pip install mysqlclient

08-安装git

yum install git

git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com" cd ~/ && ssh-keygen -t rsa -C "你的邮箱" #提示的信息,直接按enter就行 cd .ssh 把公钥文件(id_rsa.pub)中的码复制到github #就可以开始clone代码了 git clone

09-拉取项目静态文件

# 在django的setting文件中,添加下面一行内容:

    STATIC_ROOT = os.path.join(BASE_DIR, "static/")

# 运行命令
python manage.py collectstatic

10-安装uwsgi

1. 进虚拟环境安装

workon workmanage02

pip install uwsgi

2. 在项目目录下新建uwsgi.ini文件

[uwsgi]

socket =127.0.0.1:8000
chdir = /home/workspace/workamange02
module = workamange02.wsgi
master = true
processes = 4
vacuum = true
virtualenv = /root/.virtualenvs/workamange02
logto = /tmp/mylog.log
[uwsgi]
#使用HTTP访问的端口号, 使用这个端口号是直接访问了uWSGI, 绕过了Nginx
http = :8010
#与外界连接的端口号, Nginx通过这个端口转发给uWSGI
socket = 127.0.0.1:8001
#是否使用主线程
master = true
# 项目在服务器中的目录(绝对路径)
chdir = /home/workspace/workamange02
# Django's wsgi 文件目录
wsgi-file = /home/workspace/workamange02/workmanage02/wsgi.py
# 最大进程数
processes = 4
#每个进程的线程数
threads = 2
#状态监听端口
stats = 127.0.0.1:9191
# 退出时自动清理环境配置
vacuum = true
#目录下文件改动时自动重启
touch-reload = /home/workspace/workamange02
#Python文件改动时自动重启
#py-auto-reload = 1
#后台运行并把日志存到.log文件
daemonize = /home/workspace/workamange02/uWSGI.log

11-安装nginx

这里有安装方法:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

# 要添加CentOS 7 EPEL存储库,请打开终端并使用以下命令:
sudo yum install epel-release
# 安装nginx
sudo yum install nginx # Nginx并不是自己开始的。要运行Nginx,请键入:
sudo systemctl start nginx #可能会用到的命令
service nginx restart
service nginx stop
service nginx start

11.1 配置文件

在/etc/nginx/conf.d下新workmanage02.conf

# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}
# configuration of the server server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name 118.190.208.5; # substitute your machine's IP address or FQDN
charset utf-8; # max upload size
client_max_body_size 75M; # adjust to taste # Django media
location /media {
alias /home/workspace/workmanage02/media; # 指向django的media目录
} location /static {
alias /home/workspace/workmanage02/static; # 指向django的static目录
} # Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include uwsgi_params;
}
}

配置好后

nginx -t  

service nginx restart

12-MySQL数据库数据传输

12.1 远程连接服务器数据库mysql

# 解决方法:
网上一大堆解决方法,都是开放端口、给账号开放远程连接权限,但都设置了 可还是不行。
原因应该是:在阿里云安全组添加3306端口规则,把3306端口添加到入方向规则。成功了!

 12.2 新建数据库

12.3 右键 点击数据传输

数据传输完成,配置也都配置好后,就可以开始访问了

#创建超级用户

python manage.py createsuperuser

#把uswgi服务开启

uwsgi --ini uwsgi.ini 

#访问
http://你的ip地址/

Django+nginx+uwsgi部署教程的更多相关文章

  1. Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)

    在线教育平台项目演示地址 项目部署教程 1.1.工作原理介绍 django 一个基于python的开源web框架 uwsgi 一是一个web服务器,也可以当做中间件 nginx 常用高性能代理服务器 ...

  2. ubuntu+Django + nginx + uwsgi 部署

    ubuntu+Django + nginx + uwsgi 部署 0.前期准备 注意:以下几件事都必须在激活虚拟环境下完成 运行以下命令生成项目所需的依赖列表,会在项目根目录生成一个requireme ...

  3. Django+Nginx+uWSGI部署

    一.介绍 Django的部署可以有多种方式,采用nginx+uwsgi的方式是最常见的一种方式.在这种方式中,将nginx作为服务器前端,接收WEB的所有请求,统一管理请求.nginx把所有静态请求自 ...

  4. centos django+Nginx+uwsgi部署

    第五天 部署python3+uwsgi+nginx的博客系统 ================================ mysql基本命令 mysql mysql -p mysqladmin ...

  5. django+nginx+uwsgi 部署配置

    django官方文档在这 https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/uwsgi/ 第一步:先收集静态文件 之前要先设置 S ...

  6. 使用Nginx+uWSGI部署Django项目

    1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...

  7. 填坑!!!virtualenv 中 nginx + uwsgi 部署 django

    一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...

  8. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...

  9. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

随机推荐

  1. mysql----JOIN Quiz

    JOIN quiz game id mdate stadium team1 team2 1001 8 June 2012 National Stadium, Warsaw POL GRE 1002 8 ...

  2. idea2018版tomcat基本配置

    前言 在配置tomcat之前,要先创建一个javaweb的工程 打开idea的主界面,在菜单中点击File,出现以下的图 点击选择 Application Server 点击选择 Tomcat Ser ...

  3. 大杀器:VS2017 查看或调试liunx代码(转载)

    From:https://blog.csdn.net/mumufan05/article/details/80094637 上一篇简单介绍了vs2017新建一个linux的工程,本编将介绍一下如何管理 ...

  4. ugui中toggle.isOn的属性笔记

    准备知识 toggle:指unity3d引擎中UGUI的 toggle组件 (单选框) 本文使用lua语言描述 事件触发 使用unity的ugui,你如果细心观察会发现toggle在界面被关闭/隐藏( ...

  5. JS 代码中到底加不加分号

    背景 在写自动执行函数时 vm.$watch('datas', function() { console.log(vm.datas); }) (function () { console.log('t ...

  6. centos7如何安装gcc5.4

    由于需要使用到cilk plus和std=c++14,所以决定将编译器升级. 基本教程如下: 1.下载GCC源码: wget ftp://mirrors.kernel.org/gnu/gcc/gcc- ...

  7. main主函数

    public static void main(String[] args) { //虚拟机调用main函数,需要传个args的参数,传入的是new String[0] System.out.prin ...

  8. npm 安装卸载模块

    npm安装模块 npm install xxx利用 npm 安装xxx模块到当前命令行所在目录 npm install -g xxx利用npm安装全局模块xxx 1 2 本地安装时将模块写入packa ...

  9. 前端性能优化成神之路--vue组件懒加载(Vue Lazy Component )

    ---恢复内容开始--- 使用组件懒加载的原因 我们先来看看这样的一个页面,页面由大量模块组成,所有模块是同时进行加载,模块中图片内容较多,每个模块的依赖资源较多(包括js文件.接口文件.css文件等 ...

  10. go语言中如何模拟100个IP同时并发访问服务器,每个ip要重复访问1000次。每个Ip一分钟之内只能访问一次

    package main import ( "time" "sync" "fmt" "sync/atomic" ) ty ...