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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
python正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
对pandas处理json数据的方法详解
Feb 08 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
Python编程源码报错解决方法总结经验分享
Oct 05 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
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
js利用拖放实现添加删除
2020/08/27 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
Python 第一步 hello world
2009/09/25 Python
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
请说出几个常用的异常类
2013/01/08 面试题
销售行政专员职责
2014/01/03 职场文书
乡下人家教学反思
2014/02/01 职场文书
销售顾问岗位职责
2014/02/25 职场文书
篝火晚会策划方案
2014/05/16 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书