centos+nginx+uwsgi+Django实现IP+port访问服务器


Posted in Python onNovember 15, 2019

环境

  • MacBookAir
  • 阿里云ESC: Centos7.0
  • nginx+1.16.1
  • uwsgi=2.0.18
  • django=2.2.7

服务器

进入阿里云网站注册账号进行购买,选择地区和服务器系统配置

购买成功之后添加安全组(设置可访问端口,不知道怎么设置的,网站有文档,这里不赘述了)

centos+nginx+uwsgi+Django实现IP+port访问服务器

centos+nginx+uwsgi+Django实现IP+port访问服务器

购买成功之后已经创建了一个实例,点击远程连接会有一个密码(不记得了可以重启实例进行设置)自己本地做好文档记录

进入远程连接界面后使用root+登录密码(这个密码我是重置实例密码获取到的)进行连接

centos+nginx+uwsgi+Django实现IP+port访问服务器

远程连接服务器工具

我使用的是fianlshell

安装

cd dir(进入你安装的目录)
curl -o finalshell_install.sh www.hostbuf.com/downloads/finalshell_install.sh;
chmod +x finalshell_install.sh;
sudo ./finalshell_install.sh

连接

centos+nginx+uwsgi+Django实现IP+port访问服务器centos+nginx+uwsgi+Django实现IP+port访问服务器

完成连接进行环境配置

环境配置

python3安装: 参考这篇文章进行安装(编译安装前(make && make install) 先执行命令:yum install libffi-devel -y (解决:ModuleNotFoundError: No module named '_ctypes'))

pip3的使用:

因为已经安装了python3,python3安装目录下已经存在了pip3,很多安装包必须使用pip3进行安装;centos已经安装的python2中存在pip我们需要建立软连接(ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3)

mysql安装

下载mysql源安装包:wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装mysql源:yum localinstall mysql57-community-release-el7-8.noarch.rpm
安装mysql源:yum install mysql-devel
安装MySQL(总计851M,翻墙):yum install mysql-community-server
执行命令:pip3 install mysqlclient
启动MYSQL服务:systemctl start mysqld
查看MYSQLd的启动状态:systemctl status mysqld
开机启动:systemctl enable mysqld
修改root本地登录密码:
获取密码:grep 'temporary password' /var/log/mysqld.log
进入mysql:mysql -uroot -p
设置密码:set password for 'root'@'localhost'=password('你的数据库密码');

* 安装过程中可能出现重置密码失败的情况,我实现的情况是:1、实现mysql免密登录;2、重置密码(可能出现password不存在的情况,更password为authentication_string );3、刷新重置列表:FLUSH PRIVILEGES 4、退出mysql; 5、输入mysql -u root -p。进行密码登录;复制代码

Django安装

执行:pip3 install django

执行:django-admin help 进行验证是否安装成功

uwsgi安装

执行:pip3 install uwsgi

验证:uwsgi --version

注意:如果出现错误需要建立软连接:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

nginx安装

执行:yum install nginx

验证:nginx -V

注意:使用yum安装可能出现错误,这是因为安装了python3导致的,这个时候需要去修改文件内容(根据报错信息进行百度,进行错误修改)

注意

上面我们已经将所需要的环境和软件已经安装完毕了,这中间可能出现一些问题,我们需要搜索一些资料进行修改。因为这里每个人遇见的问题可能不一样,因此没有一一列举,还请包涵;

下面我们就创建django项目,实现IP加port对服务器进行访问;

创建Django项目

在根目录下创建Django项目

cd /
mkdir projects
cd projects
django-admin startproject test

数据库中创建test 数据库

mysql -u root -p
creat database test;

*test项目的settings 文件

DEBUG = False
ALLOWED_HOSTS = ['你的服务器IP']

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'test' #你的项目名称
]

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'test',
 'USER': 'root',
 'PASSWORD': 'mysql登录密码',
 'HOST': 'localhost',
 'PORT': '3306',
 }
}

:warning:这里最好是一个本地项目能够正常运行的项目拖入到projects目录下,进行上面的修改就好了

执行数据迁移指令

python3 manage.py makemigrations
python3 manage.py migrate

完成Django项目的创建

nginx.conf文件的配置

文件路径:/etc/nginx/nginx.conf

对下面的内容进行修改

centos+nginx+uwsgi+Django实现IP+port访问服务器

这里的IP(如果是阿里云esc服务器的化)要使用服务器的私有IP

nginx的一些操作指令

systemctl start nginx.service 开启
systemctl stop nginx.service 暂停
systemctl reload nginx.service 重启
systemctl status nginx.service 查看状态

注意:在你重复开启nginx的时候,你需要先杀死nginx进程才可以开启nginx不然会有错误。

错误文档查看路径:/var/log/nginx/error.log和/var/log/nginx/access.log

uwsgi的使用和配置

在/projects/test路径下创建uwsgi.ini文件(与manage.py在同一个目录下)

uswgi中的内容如下

[uwsgi]

wsgi-file=/server/http_practice/http_practice/wsgi.py

# 项目目录
chdir=/projes/test
# 指定项目的application
module=test.wsgi:application
# 指定sock的文件路径 
#socket=你的IP+端口号(这里的IP要使用服务器(如果是阿里云esc服务器的化)的私有IP,端口要与nginx.conf中写的IP+port一致)
# 进程个数 
workers=5
pidfile=uwsgi.pid
# 指定IP端口 
http=172.18.81.20:80
# 指定静态文件
#static-map=/static=/opt/proj/teacher/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=uwsgi.log

启动项目

启动nginx:systemctl start nginx.service

启动uwsgi:uwsgi3 --ini uwsgi.ini(若出现端口被占有,输入:sudo fuser -k 8080(你配置的端口)/tcp)

访问你的Django项目

浏览器输入:IP+port+django中设置的url

浏览器访问失败问题查找

uwsgi错误文档查询:/projects/test/uwsgi.log(该文件启动uwsgi会自动生成)
nginx错误文档查询:/var/log/nginx/error.log和/var/log/nginx/access.log

结语

开发中总是会出现很多问题,重要的是要找到错误的根源在那里,那里可以找错误的详细描述,然后再根据详细描述去查找。不要盲目的查找问题,更不要臆测,面对浏览器,你输入的关键跟问题联系紧密才能够给你准确的找到答案。

一篇文章不可能解决所有问题,更不可能解决所有人的问题。还是那句话,踩过坑才能对知识有更深的感悟。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用HTMLParser解析html实例
Feb 08 Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 Python
Python绘画好看的星空图
Mar 17 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 #Python
python matplotlib如何给图中的点加标签
Nov 14 #Python
Python中的引用和拷贝实例解析
Nov 14 #Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 #Python
通过python扫描二维码/条形码并打印数据
Nov 14 #Python
VSCode中自动为Python文件添加头部注释
Nov 14 #Python
python中的函数递归和迭代原理解析
Nov 14 #Python
You might like
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
Python脚本处理空格的方法
2016/08/08 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
python实现简单飞行棋
2020/02/06 Python
Python爬虫开发与项目实战
2020/12/16 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
关于保护环境的标语
2014/06/09 职场文书
公证委托书
2014/08/01 职场文书
活动总结格式
2014/08/30 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
项目投资意向书范本
2015/05/09 职场文书
详解Java实践之适配器模式
2021/06/18 Java/Android
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL