搭建网站详细教程(接上一条)

一、基础说明

 

1、项目启动的基本流程

 

    本web项目,后端均使用Python+Django进行开发,所需的Python版本≥3.6,本地启动项目的基本流程如下:

(PS:由于本目均是在macOS系统下完成,在压缩文件时会默认生成一个__MACOSX文件夹,为macOS的配置文件,对win系统没有影响,项目解压后删除即可)

 

 

    2、关于项目根目录

 

    项目文件解压后,含有manage.py文件的目录即是项目根目录,例如:

在路径C:\Users\Administrator\Desktop\myproject\blog下有manage.py文件,那么该路径即是项目的根目录。

 

    在根目录下有一个文件夹(唯一),里面有settings.py文件,那么该文件夹的名称就是项目名称or工程名称。

 

    在根目录下有的文件夹,里面有app.py文件,那么该文件夹的名称就是创建的app名称。

 

   3、如何在当前目录下打开命令行工具——命令提示符或称cmd

 

方式一

     在文件夹上面的地址栏直接输入cmd,回车即可

 

方式二

     在当前目录的空白处,按住键盘Shift后,右击鼠标——选择“在此处打开命令窗口”即可

 

 

    4、关于编辑器

 

强烈推荐使用pycharm,官网,可以说pycharm是专为Python而生,需要注册,请自行搜索注册码

如果购买的是前后端分离的项目,前端建议使用微软的VSC,后端使用pycharm

 

    5、啥是虚拟环境?

 

    请自行阅读:参考博客1参考博客2

 

 

二、安装Python3


 

 

    1、验证电脑是否已安装python

 

    在终端输入python -V:

  如果显示python的版本号,说明已安装python,否则未安装。

 

    2、安装Python3+

 

参考博客

(PS:这是一个非常好的Python入门网站,建议新手收藏)

    首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.7对应的64位安装程序32位安装程序,然后,运行下载的EXE安装包:

    特别要注意勾上Add Python 3.7 to PATH,然后点“Install Now”即可完成安装。

 

三、创建虚拟环境


 

 

创建虚拟环境的常规方式有三种:

    1️⃣使用Python3自带venv模块,下面有详细介绍(推荐)

    2️⃣使用virtualenv工具:参考博客1参考博客2

    3️⃣使用pycharm编辑器:参考博客1参考博客2

 

Python3以后,新增venv模块,使得创建虚拟环境更加便捷化,详细描述如下:

(这是个栗子假如 项目的根目录是:C:\Users\Administrator\Desktop\myproject\blog;

首先进入项目根目录的上层目录,也就是C:\Users\Administrator\Desktop\myproject,在终端输入:

 

cd ..

 

创建虚拟环境,在终端输入:

 

python -m venv venv

 

 

创建完成后,发现在C:\Users\Administrator\Desktop\myproject文件夹下,新增了一个名为 venv 的文件,没错,这就是新创建的虚拟环境文件夹

 

 

进入虚拟环境,在终端输入以下命令,回车:

 

venv\Scripts\activate

 

 

进入项目根目录:

 

 

 

四、安装依赖包


 

 

    项目所需的第三方依赖包,均已在根目录中的 requirements.txt 文件中一一列出。

 

    1、升级 pip

 

pip官网

 

python -m pip install --upgrade pip

 

    (PS:从此步开始所有的命令均是在虚拟环境中进行,新创建的虚拟环境自带的pip通常不是最新的版本,在运行pip命令时,会有警告)

 

 

    使用pip安装或升级依赖包,运行成功后,都会有Successfully提示。

 

    2、批量安装依赖包

 

    在终端运行:

pip install -r requirements.txt

 

    依赖包安装成功:

 

 

    【问题处理】

ERROR:Courld not open requirements file: [Errono 2] No such file or directory: 'requirements.txt'

 

ERROR: Complete output from command 'c:\users\administrator\.............

    ERROR: Single threaded build for windows

    running install

    running build...........

 

 

五、启动项目


 

 

(PS:如使用pycharm启动项目,需要在pycharm中配置虚拟环境,并且,如果项目目录中有extra_apps文件夹,需要右击该文件夹Mark Directory as 为 Sources Root)

 

     在终端运行:

python manage.py runserver

 

 

     仔细看终端提示信息,默认是在8000的端口启动服务,点击 http://127.0.0.1:8000/ 直达项目首页,在终端使用键盘 control+c 可退出服务。

(PS:有时候使用control+c,发现没有反应,没关系,按住control后,多按两下c就行了)

 

     点击 http://127.0.0.1:8000/admin/ 进入后台管理系统,默认用户名、密码分别为:admin、admin123,在后台可修改密码。

(PS:登录后台时,个别系统在极少数情况下会出现禁止访问403错误,点击地址栏后,回车即可)

 

     至此,已完成了项目的本地启动,后面的章节作为拓展内容,请按需自行学习(如有云评论、地图插件等,需要继续阅读以下内容进行配置)。

 

 

六、配置留言系统


 

 

     对于部分带留言/评论功能的项目(在项目功能描述中体现:云评论,如无请自动忽略本章),需要对留言插件进行配置,所售项目均采用第三的留言系统——畅言。

 

1、登录畅言官网,注册开发者账号

 

2、登录云评论后台管理,添加站点

(PS:添加的域名必须是已经备案的)

 

 

    3、在通用代码安装,获取appid和conf参数

 

    4、在需要留言/评论的页面(通常在博客详情页),查找并替换代码

(PS:有的项目中,为了体现留言样式,使用静态的数据,并将畅言的代码注释,请自行注释静态留言数据,并取消畅言的注释)

 

<div id="SOHUCS" sid={{ article.id }}></div>
<script charset="utf-8" type="text/javascript" src="https://changyan.sohu.com/upload/changyan.js"></script>
<script type="text/javascript">
  window.changyan.api.config({
    appid: '******',
    conf: '*******'
  });
</script>

 

     将其中的appid和conf替换成自己的,官网文档

 

 

    5、接收畅言回推设置

    如果需要管理评论用户,就需要畅言平台再接收到用户的评论后,畅言后台主动将内容推送给我们的后台,我们的后台接收到数据后,再进行保存处理。填写的回推地址各项目参考自己的url.py文件,该文件在项目名称的文件夹下或者各app的文件夹下,回推路由在文件中有备注。

(PS:没有找到回推路由的备注,说明该项目未做评论管理呗,可以在畅言后台进行评论管理)

 

 

 

七、配置地图插件


 

 

     对于部分带地图功能的项目(在项目功能描述中体现:地图插件,如无请自动忽略本章),需要对地图插件进行配置,所售项目均采用高德地图插件。

 

    1、登录高德开放平台,注册开发者账号

 

    2、获取开发者key参数

 

    3、在含有地图插件的页面(通常在联系我们页面),查找并替换代码

 

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.14&key="******"></script>

 

     将代码中的key 替换成自己的key

 

 

八、使用MySQL数据库


 

 

     在创建Django项目时,会默认生成db.sqlite3文件,这是一个轻量级的数据库文件,具有写独占、读共享的特性,并发支持不友好(写入操作有锁),适用于开发使用,项目完成后,上线部署到服务器时,通常使用关系型的MySQL数据库。

 

    1、检测是否已安装MySQL

     终端输入 mysql --version 显示如下图,即是已安装

(PS:建议新开一个终端窗口,这样一个窗口始终是在创建的虚拟环境中运行,一个窗口用于MySQL操作)

 

 

    2、安装MySQL

 

官方下载入口

 

    在官网下载页面,选择适合自己系统选项,下载安装包:

 

     后续操作可参考:

 

mysql安装过程及注意事项

MySQL 安装

 

    3、创建项目数据库

 

     终端进入MySQL后,MySQL中输入命令,创建名为 myproject 的数据库:

(PS:数据库名称可自定义;在命令行创建时默认utf-8编码;也可使用Navicat软件对数据库操作,创建数据库时,必须指定字符集为utf8,排序规则为utf8_bin)

 

CREATE DATABASE `myproject` CHARACTER SET utf8 COLLATE utf8_general_ci;

 

 

    4、修改项目配置

 

     在工程名称的文件夹下,将settings.py文件中的DATABASES参数,修改为:

(PS:工程名称/项目名称的文件夹,在第一章有介绍)

DATABASES = {
    'default': {
        # 使用Django自带的sqlite3
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

        # 使用MySQL数据库配置
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '*****',   # 填写新创建的数据库名称
        'USER': 'root',
        'PASSWORD': '*****',  # 请换成自己的密码
        'HOST': 'localhost',
        'POST': '3306',
    }
}

 

    5、删除之前的数据迁移记录

 

     删除所有创建的app目录下、migrations文件夹内,除了 __init__.py以外的,所有文件(通常是以数字开头的py文件);

     删除extra_app文件夹内,所有自定义的第三方app目录下、migrations文件夹内,除了 __init__.py以外的,所有文件(通常是以数字开头的py文件);

 

    6、创建并执行数据迁移

 

     在虚拟环境中的终端,依次运行:

python manage.py makemigrations
python manage.py migrate

      在MySQL中查看新建的数据表

 

 

    7、创建超级用户

 

        在虚拟环境中的终端,运行以下命令,根据提示创建超级用户(用户登录后台管理系统)

python manage.py createsuperuser

 

     至此可以启动项目

(PS:由于新创建的数据表,里面没有数据,对于个别项目打开首页会out_of_range的错误,请先在后台多添加一些数据,再看首页)

 

python manage.py runserver

 

     另外,有时候我们在开发模式下,输入了好多的数据,结果发现都放在了db.sqlite3数据库中,如何实现db.sqlite3与MySQL之间的数据迁移,请自行阅读:自强学堂

(PS:自强学堂是一个风评很好的自学网站,建议收藏)

 

 

一、基础说明


 

 

    1、郑重说明

    由于服务器系统版本、环境等多种因素,都会导致部署过程中出现不同情况的报错,需自行根据报错信息进行调试,本文档为常规部署流程(以Ubuntu / 18.04 LTS amd64系统作为举例说明),并非适用于所有的服务器、系统,请谅解。

 

    个人实践说明,一次性部署成功的情况极少,整个部署过程可能会遇到各样的问题,绝大部分通过Google都可直接解决,只有少数的问题,需要静下心来仔细研究,预祝成功!

 

    其他相关部署的博客:

Ubuntu上通过nginx部署Django笔记

Django项目如何部署上线?

CentOS7下部署Django项目详细操作步骤

Ubuntu部署Django项目方法详解

Django Nginx+uwsgi 安装配置

 

     使用宝塔面板进行部署,请自行阅读以下博客,不做详细介绍:

(PS:本店不做  PHP 和 宝塔面板  相关的问题解答,免开尊口,请自行Google)

 

宝塔面板+Python项目管理器+Django部署+nginx+gunicorn

宝塔面板+djiango+mod wsgi +apache 配置多项目站点

宝塔部署Django

 

 

    2、项目部署的架构及基本流程

 

 

    3、为什么不建议用自己的电脑做服务器?

 

      请自行阅读

 

二、获取云服务器


 

 

    中小型企业以及个人在部署web项目时,首选云服务器作为项目服务器,本人常用云服务器如下:

    1️⃣亚马逊云:官网,如果你有一张VISA的信用卡,可以申请一台免费的、一年期限的AWS-EC2云服务器,优点是:属于域外服务器,域名不需要备案,当然还有其他的好处,不可明言;缺点是:网速延迟高

    2️⃣阿里云:官网,可以免费试用一个月,优点是:稳定、网速快,缺点:真心贵

    3️⃣百度云:官网,性价比很高,优惠力度大

     想要了解更多信息:点击这里,本文档以百度云服务器为例

 

    

 

     创建云服务器密码,快速入口

 

 

三、域名的购买、备案、解析


 

 

    1、购买域名

 

     进入控制台-域名服务-注册新域名,快速入口

 

    2、域名备案

 

     

 

    3、域名解析

 

     首先获取公网IP,快速入口

 

 

     进行域名解析,点击解析-添加解析,快速入口

 

 

 

 

四、配置实例的安全组


 

 

     安全组决定着云服务的准入规则,如果配置异常,会导致无法访问云服务的情况,百度云默认安全组配置为:全部协议、所有端口均可入站,所有端口可出站,无需修改。其他供应商的云服务需要查看一下,按需修改。

 

 

五、上传项目文件及启动测试


 

 

    1、安装Python3、MySQL

(PS:可使用cmd或终端ssh连接云服务器。win使用cmd连接云服务时,注意路径符号的区别)

 

Python官网

Ubuntu安装python 3. 7

ubuntu安装python3.6

Linux安装python3.6

Linux 安装Python3.7.0

 

MySQL官网

Ubuntu 16.04 上安装 MySQL 5.7 教程

Linux下MySQL的安装、配置、使用

Linux安装MySQL的两种方法

 

    2、创建虚拟环境、数据库(请参考macOS的启动文档)

 

 

    3、上传项目文件

 

     上传项目文件到云服务的方式有很多:

    1️⃣使用xftp:如何将本地项目上传到云服务器上(用Xftp上传)

    2️⃣使用scp:如何将本地文件通过终端上传到linux服务器 /服务器/阿里云

    3️⃣使用pycharm:利用pycharm的Deployment功能映射本地和远程代码(同步开发),下面会详细介绍

    4️⃣使用GitHub:使用git上传项目到码云服务器

 

     依次点击pycharm菜单Tools-Deployment-Configuration

 

 

 

 

 

 

     上传完成后会有相应的提示。

 

    4、启动测试

 

     输入以下命令测试启动:

python manage.py runserver 0.0.0.0:8000    # 注意不能使用默认的127地址

 

     打开本地电脑的浏览器,地址栏上输入云服务的IP和端口号,例如: 105.6.7.8:8000 ,如果可以打开网页表示启动成功。启动测试完成后,记得关闭服务: control+c 

 

 

六、安装及配置uWSGI


 

 

     uWSGI和Nginx的作用是什么?请自行阅读:

Django为什么用uWSGI+Nginx

nginx 和uwsgi的区别与作用

 

    1、安装及配置uWSGI

 

uwsgi官方文档

 

     使用pip安装(需要在虚拟环境中),依次运行:

 

apt-get install python3-dev    # 安装python的开发包
pip install uwsgi     # 安装uwsgi

 

     在项目的根目录下,创建uwsgi.ini,这是uwsgi的配置文件:

(PS:假如项目根目录为/var/www/blog;可在pycharm中使用鼠标操作)

 

 

 

 

     文件新建后,在pycharm会自动打开,输入以下内容:

(PS:以下为uwsgi-2.0.18版本的配置,其他版本使用如有报错,请参考官方文档进行配置)

 

[uwsgi]
# 项目根目录,绝对路径,根据实际情况填写
chdir = /var/www/blog04/
# 指定项目的application,根据实际情况填写
module = blog.wsgi:application
# 进程个数
workers = 5
# 绝对路径,根据实际情况填写
pidfile = /var/www/blog04/uwsgi.pid
# 指定IP端口
http = 0.0.0.0:8000
# 启用主进程
master = true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum = true
# 序列化接受的内容,如果可能的话
thunder-lock = true
# 启用线程
enable-threads = true
# 设置自中断时间
harakiri = 30
# 设置缓冲
post-buffering = 4096
# 设置日志目录,绝对路径,根据实际情况填写
daemonize = /var/www/blog04/uwsgi.log
# 指定sock的文件路径,绝对路径,根据实际情况填写
socket = /var/www/blog04/uwsgi.sock

 

     编辑完成后,点击上传,如下图:

 

 

    2、使用uwsgi进行启动测试

 

     在终端输入以下命令进行项目启动,可以使用ps查看uwsgi进程:

uwsgi --ini uwsgi.ini

 

 

     打开本地电脑的浏览器,地址栏上输入云服务的IP和端口号,例如: 105.6.7.8:8000 ,如果可以打开网页表示启动成功。测试启动完成后记得结束uwsgi:

 

uwsgi --stop uwsgi.pid

 

 

七、安装及配置Nginx


 

 

    1、安装Nginx

 

Nginx官网

 

     终端输入以下命令:

(PS:无需重新开终端窗口,以下命令在虚拟环境中照常执行)

 

apt-get install nginx

 

     输入以下命令,如显示版本号,则Nginx安装成功:

nginx -v

 

 

 

    2、修改Nginx配置

 

     查找配置文件:

find / -name nginx.conf

 

 

     修改配置文件,建议使用pycharm进行修改:

(PS:以下配置内容适用于nginx/1.17.1版本,其他版本使用如有报错,请参考官方文档进行配置)


worker_processes auto;
error_log /var/log/nginx/error.log;


events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /usr/local/nginx/conf/mime.types;   # 根据自己的实际情况填写路径
    default_type        application/octet-stream;

    index   index.html index.htm;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  www.codestore.top;          # 填写自己已备案的域名
        root          /var/www/blog04/templates;

        location / {
            include /usr/local/nginx/conf/uwsgi_params; # 将所有参数转到uwsgi中,根据自己的实际情况填写路径
            uwsgi_pass 127.0.0.1:8000;   # 将用户的请求转向的地址
        }

        location /static {    # 配置静态文件路径,根据自己的实际情况填写路径
                alias /var/www/blog04/static/;   # 此目录必须有用户的读写权限
        }
        location /media {    # 配置静态文件路径,根据自己的实际情况填写路径
                alias /var/www/blog04/media/;   # 此目录必须有用户的读写权限
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

 

     启动Nginx,终端输入命令: nginx ,这时候使用本地浏览器,地址栏输入已备案的域名,会提示404错误,但是可以发现是Nginx提示的,说明Nginx已经启动成功了,之所以是404错误,是因为我们还没有启动服务,所以找不到页面,

 

     使用uwsgi启动项目之前,需要对配置文件进行修改,在uwsgi.ini中:

# 指定IP端口 使用Nginx时用socket
# http = 0.0.0.0:8000
socket = 0.0.0.0:8000

 

     启动uwsgi,输入命令: uwsgi --ini uwsgi.ini ,这时候使用本地浏览器,刷新页面,发现可以浏览网站(但是所有的静态文件都没有加载)。

 

 

八、处理静态文件加载


 

 

     修改项目的配置文件,在项目名称文件夹下的settings.py文件中,修改以下内容:

 

......
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False     # 关闭debug模式
......
STATIC_URL = '/static/'   # 用于收集静态文件
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
......

 

     收集静态文件,在终端运行:

 

python manage.py collectstatic

(PS:如收集静态文件出现报错,可手动将所有依赖包里的静态文件复制到static文件夹中,也可参考官方解答)

 

      重新启动uwsgi,本地电脑浏览器强制刷新页面,即可看到已经部署上线的网站喽。

 

     如需配置MySQL,请参考启动文档中MySQL相关的内容。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值