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中的pygal安装和绘制直方图代码分享
Dec 08 Python
python 日志增量抓取实现方法
Apr 28 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
Python异常模块traceback用法实例分析
Oct 22 Python
pycharm的python_stubs问题
Apr 08 Python
10个示例带你掌握python中的元组
Nov 23 Python
对PyTorch中inplace字段的全面理解
May 22 Python
使用tensorflow 实现反向传播求导
May 26 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构造函数实例讲解
2013/11/13 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
jQuery 渐变下拉菜单
2009/12/15 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript中的闭包
2016/02/24 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
python动态参数用法实例分析
2015/05/25 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Python基于Faker假数据构造库
2020/11/30 Python
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
预备党员思想汇报范文
2014/01/11 职场文书
六五普法规划实施方案
2014/03/21 职场文书
《春晓》教学反思
2014/04/20 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python