python3+django2 开发易语言网络验证(下)

第六步:网络验证服务器端项目上线部署

 前提

项目名:netauth

系统:百度云服务器下的Ubuntu16.4

软件:xshell(无论如何想办法用这个跟服务器实例连上,不要用远程连接干敲,不然你会有砸电脑的冲动)

   FileZille(通过这个软件,将项目的zip包传到服务器系统下)  

apt install unzip
unzip netauth.zip
rm netauth.zip

步骤目录:

1.安装nginx

2.安装python3.6

3.安装mysql

4.配置虚拟环境

5.安装配置uwsgi

6.配置nginx

1.安装nginx

apt install nginx -y
#安装完,访问公网ip,见到欢迎界面,代表安装成功
#nginx -s stop

2.安装python3.6

add-apt-repository ppa:fkrull/deadsnakes 
#回车
apt-get install python-software-properties -y
apt-get update
apt-get install python3.6-dev python3.6-venv -y

apt install python-pip -y

3.安装MySQL

apt-get install mysql-server -y
#设置密码:(不显示)
apt-get install mysql-client
apt-get install libmysqlclient-dev -y
mysql -u root -p
#输入密码(不显示),登录mysql
CREATE DATABASE `netauth` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
#新建一个名为netauth的数据库,数据库名跟项目中数据库名要一致
quit
#退出登录MySQL

4.配置虚拟环境

python3.6 -m venv env36
#在当前目录下,创建一个python3.6的虚拟环境,取名为env36

. env36/bin/activate
#进入虚拟环境
#退出虚拟环境 deactivate
cd netauth
pip3 install -r requirments.txt
#安装相关依赖包,其中requirments.txt,是在客户端时,通过pip freeze > requirments.txt获得
#这个过程也许需要多等一会,比较low一点的云服务就慢一些,亲身体验,bat里,百度的最慢
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
#创建超级用户 ,用户名:(自定义) 邮箱:(自定义) 密码:(自定义不显示)

 修改settings.py

cd netauth
vim settings.py
#进入settings.py文件中,点击i键,变为编辑模式
#通过上下左右键移动光标
ALLOWED_HOSTS = ['公网ip']
#在最底追加
STATIC_ROOT=os.path.join(BASE_DIR,"static/")
#然后敲Esc键,输入:wq 保存退出

5.虚拟环境中安装uwsgi

安装

pip3 install uwsgi
#下载安装uwsgi,这里真的要吐槽一下百度云了,1M宽带,几k十几k的网速,同样配置同样带宽,在腾讯云完成这一步操作的时候,嗖得一下就下载安装完了。

检测是否安装成功

uwsgi --http :8000 --module netauth.wsgi
#通过uwsgi启动项目,这一步必须在项目目录下操作执行
#不知为何,客户端浏览器访问过来,并没有静态文件丢失,但media文件依然没有
#ctrl+C键关闭项目服务状态
#fuser -k 8000/tcp
#关闭8000端口占用

配置uwsgi

#在项目目录下执行,注意后面这个点儿别落下
cp /etc/nginx/uwsgi_params .
#回到~目录下
cd ..

配置uwsgi.ini

vim uwsgi.ini
#进入uwsgi.ini,然后在英文输入下敲i键,进入插入模式,将以下内容填充进去(通过敲i键进入插入模式这一步不能省略,不然粘贴进去的内容会部分丢失)
[uwsgi]
chdir=/root/netauth
module=netauth.wsgi:application
home=/root/env36
master=true
processes=10
socket=:8001
chmod-socket = 666
vacuum=true
#然后在英文输入下,Esc键,然后输入冒号wq+回车,保存退出。

6.配置nginx

#cd 到项目目录下
vim netauth_nginx.conf
#新建进入了nginx.conf文件
#在英文输入法下,敲i键,进入可插入模式
#粘贴以下内容
# mysite_nginx.conf
 
# the upstream component nginx needs to connect to
upstream django {
    # server unix:/root/netauth/netauth.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
 
# configuration of the server
server {
    # the port your site will be served on
    listen      8000;
    # the domain name it will serve for
    server_name .example.com; # 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 /root/netauth/media;  # your Django project's media files - amend as required
    }
 
    location /static {
        alias /root/netauth/static; # your Django project's static files - amend as required
    }
 
    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include   /root/netauth/uwsgi_params; # the uwsgi_params file you installed
    }
}

建立软链接

sudo ln -s /root/netauth/netauth_nginx.conf /etc/nginx/sites-enabled/

收集静态文件

#cd 到项目目录下执行
python manage.py collectstatic
#yes

 最后测试

#修改settings.py中
DEBUG = False
cd ~
service nginx restart
#重启nginx
#启动uwsgi
uwsgi --ini uwsgi.ini
#浏览器访问http://180.76.143.11:8000 
#media依然是获取不成功,403错误

浏览器网页报错:

而netauth项目,我在电脑端运行,media下的图片却都可以正常访问

项目的settings.py

项目的urls.py(两种url的配置方法,都试过了,都是在电脑端运行正常访问,一放到服务器上就403)

from django.contrib import admin
from django.urls import path,re_path
import xadmin

# from django.views.static import serve
# from netauth.settings import MEDIA_ROOT

from django.conf import settings
from django.conf.urls.static import static


from yanzheng.views import RegisterView,LoginView,PingView,CardView,RechargeView,ResetPwdView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('xadmin/', xadmin.site.urls),
#配置上传文件的访问处理函数
    # path('media/<path:path>',serve,{'document_root':MEDIA_ROOT}),
    # re_path('media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT }),
    # path('register',RegisterView.as_view()),
    path('login',LoginView.as_view()),
    path('ping',PingView.as_view()),
    path('card',CardView.as_view(),name='card'),
    path('recharge',RechargeView.as_view()),
    path('resetpwd',ResetPwdView.as_view()),
]
urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

结论:

将media文件夹删除,将项目中的图片都放在static下

如果哪位大神看出我这哪里弄错了,请留言指教,万分感谢!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Keepalived和浮动IP设置高可用性HAProxy服务器

高可用性是系统设计的一个功能,允许应用程序在发生故障时自动重启或重新路由工作到另一个有能力的系统。在服务器方面,建立高可用性系统需要一些不同的技术。必须有一个可...

41130
来自专栏云计算教程系列

Django入门:搭建你第一个应用

Django是用Python编写的免费开源Web框架,用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内...

19120
来自专栏云计算教程系列

如何在Debian 9上使用Apt安装Java

Java和JVM(Java的虚拟机)是许多软件所必需的,包括Tomcat,Jetty,Glassfish,Cassandra和Jenkins。

92920
来自专栏日常分享

Java 以及JEE环境快速搭建

  博主最近找了一个Java Development的实习,加上上个月末的考试周,所以很久没有更新博客。   上了一周的班,还没有在熟悉项目的阶段。

20810
来自专栏Android小菜鸡

在AndroidStudio上搭建SVN

  在Eclipse上直接安装SVN插件即可,但是在AndroidStudio上不行,需要关联SVN客户端。并且安装command line的客户端才可以。co...

10930
来自专栏我和未来有约会

Windows 7 旗舰版 VHD安装体验

indows 7 旗舰版 VHD安装体验 近日为了将开发环境、测试环境互相分离来,体验了一下“特殊的虚拟机 VHD启动”,我现在的机器(IBM X200)上安装...

36660
来自专栏Java进阶架构师

「mysql优化专题」主从复制面试宝典!面试官都没你懂得多!(11)

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。

12230
来自专栏互扯程序

手把手教你整合最优雅的SSM框架

现在很多公司新的项目已经使用springboot来搭建ssm项目了。实在是太方便了,so easy,妈妈再也不用担心我写程序了。 但是用越简单的东西,他的底层实...

1.6K70
来自专栏哎_小羊

记录Gerrit2.8.4环境迁移、安装、配置以及问题解决

前段时间,由于公司内部调整,需要将原gerrit系统中部分业务拆分迁移到新gerrit系统中,这里我就将整个环境迁移、环境搭建、环境配置、版本选择等做一下记录,...

58890
来自专栏张戈的专栏

Linux系统防CC攻击自动拉黑IP增强版Shell脚本

最新更新:张戈博客已推出功能更强大的轻量级 CC 攻击防御脚本工具 CCKiller==>传送门 前天没事写了一个防 CC 攻击的 Shell 脚本,没想到这么...

86050

扫码关注云+社区

领取腾讯云代金券