前言

人生苦短,我用python

这是之前经常听到的一句笑谈。因为新公司很多业务是用的python语言,所以这几天也一直在学习python的一些东西。

作为一个之前一直java后端的开发人员,对比java最大的感受如下:

  • 语法简洁优美
  • 开发效率高
  • 支持类库强大

这仅仅是我一家之言。从我接触python到现在也就一个星期时间,我用了两天时间自己搭建了一个建议博客小站,哈哈,想想还是挺有成就感的。

资源

因为前天购买了一个域名,所以昨天也是加班加点把一个简易的博客小站部署到了线上去。

我自己的博客小站域名为:www.floweroman.com
因为我自己的网名:'一枝花算不算浪漫', 而floweroman=flower romantic。 哈哈,这都是自己yy的,但是程序员还是应该保持点骚气。

这里也特别感谢追梦人物的系列博客,给我的帮助很多。

本人博客源码git:https://github.com/barrywangmeng/blogProject.git
后期我会一步步完善博客的内容,使得它真正可看可用。

教程

  • 代码
    上面资源中已经发出了教程以及我自己的源码,感兴趣的朋友可以自行查看,这里不做重点赘述。

  • 域名购买
    当我们项目写完的时候我们当然是要挑选一个自己满意的域名。
    这里不建议从国内一些网站上购买域名(我一个同事在国内一家网站上购买的域名,最近被GA打电话要求去备案),所以我们直接从外国网站上买,避免一些不必要的麻烦。

这里推荐网址:https://www.namesilo.com/
如下图:
这个网站是可以支持支付宝的,基本很多域名都是$8.9 一年。当然还有其他国外的域名网站可以购买,大家可以自行搜索。

  • 服务器购买
    本打算购买国外服务器的,以后还可以搭梯子之类的。
    但是前一段时间阿里和腾讯云都有做活动,10元每月的价格实在心动,所以这次就在腾讯云注册了服务器。(特别说明:腾讯云注册服务器后可送一个星期的体验时间)

购买的服务器推荐系统为:Ubuntu 64位

腾讯云地址:https://cloud.tencent.com

  • 购买的主机状况以及运行状态:

  • 续费情况:(这是之前活动每个人可以续费三次)

我们可以点击后面的登陆或者用第三方的xshell等登陆自己的服务器:

服务器和域名均购买完成后,我们将域名映射到我们自己的ip上:

  • 代码部署
    这里才是今天要讲的重点:

一、 github仓库
把整个django项目上传到github,方便把代码拉到服务器(你也可以使用xftp软件)

二、创建新用户
一般不建议在root用户下进行配置,我们可以创建一个新用户,xshell连接远程服务器,输入命令:

  1. sudo useradd -m -s /bin/bash wangmeng #创建新用户 wangmeng替换为你自己的用户名,下面一样
  2. sudo usermod -a -G sudo wangmeng #把新用户加入超级权限组
  3. sudo passwd wangmeng #为新用户设置密码
  4. su - wangmeng #切换到新用户

我们看到@前面已经是wangmeng开头了,说明新用户已经创建好了:

三、安装软件
首先,更新一下服务器的包安装工具

  1. sudo apt-get update
  2. sudo apt-get upgrade

下一步安装主要用的的软件,nginx、git和创建虚拟环境的virtualenv:

  1. sudo apt-get install nginx
  2. sudo apt-get install git python3 python3-pip
  3. sudo pip3 install virtualenv

nginx安装完就会自动启动,这时你到浏览器输入域名或者ip就能看到nginx的欢迎界面:

四、上传代码到服务器

  1. mkdir -p ~/sites/www.wangmeng.com

打开目录

  1. cd ~/sites/www.wangmeng.com

我们的代码要在虚拟环境里运行,所以先创建虚拟环境

  1. virtualenv --python=python3 env #env是虚拟环境名字,没必要和这里的一样

运行完以后执行 ls 命令,发现多了一个env文件夹,这就是我们要的虚拟环境目录:

五、拉取git代码
下一步要把代码从github拉到服务器,git工具我们之前已经安装好了,执行命令:

  1. git clone https://github.com/barrywangmeng/blogProject.git

六、安装依赖
现在代码已经成功放到服务器里了
安装其他依赖
首先进入虚拟环境,在虚拟环境下打开django项目目录,由requirements.txt安装依赖。

  1. source env/bin/activate #进入虚拟环境
  2. cd blogProject #进入项目目录
  3. pip install -r requirements.txt #安装依赖

七、后续操作

  1. python manage.py collectstatic

生成数据库文件

  1. python manage.py migrate

创建超级用户(后台管理使用)

  1. python manage.py createsuperuser

配置nginx

  1. deactivate #退出虚拟环境
  2. cd /etc/nginx/sites-enabled
  3. sudo rm -f default #删除默认配置文件
  4. cd /etc/nginx/sites-available
  5. sudo rm -f default #删除默认配置文件

设置配置文件

  1. sudo vim myblog.conf

输入如下代码:

  1. server {
  2. charset utf-8;
  3. listen 80;
  4. server_name www.floweroman.com;
  5. location /static {
  6. alias /home/wangmeng/sites/www.floweroman.com/blogProject/static;
  7. }
  8. location /media {
  9. alias /home/wangmeng/sites/www.floweroman.com/blogProject/media;
  10. }
  11. location / {
  12. proxy_set_header Host $host;
  13. proxy_pass http://unix:/tmp/www.floweroman.com.socket;
  14. }
  15. }

按ESC退出编辑,继续输入:wq,保存并退出文件

八、激活网站

  1. sudo ln -s /etc/nginx/sites-available/myblog.conf /etc/nginx/sites-enabled/myblog.conf

测试配置语法问题:

  1. sudo service nginx configtest

重启nginx服务器:

  1. sudo service nginx restart

使用gunicorn
进入虚拟环境下的blogProject(存放代码的目录)网站目录

  1. cd /home/wangmeng/sites/www.wangmeng.com/
  2. source env/bin/activate

安装gunicorn:

  1. pip install gunicorn

用gunicorn启动服务器进程:

  1. cd blogProject #先进入代码目录
  2. gunicorn --bind unix:/tmp/www.wangmeng.com.socket blogProject.wsgi:application #启动gunicorn

自动启动gunicorn:

  1. gunicorn --bind unix:/tmp/www.wangmeng.com.socket blogProject.wsgi:application&

好了,到了这里已经大功告成了!访问www.floweroman.com即可出现我们的博客首页了。

大家如果有什么问题都可以问我。

[python]使用django快速生成自己的博客小站,含详细部署方法的更多相关文章

  1. django初探-创建简单的博客系统

    django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...

  2. django初探-创建简单的博客系统(一)

    django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...

  3. Django练习项目之搭建博客

    背景:自从今年回家过年后,来到公司给我转了试用,我的学习效率感觉不如从前,而且刚步入社会我总是想要怎么想明白想清楚一些事,这通常会花掉,消耗我大量的精力,因为我想把我的生活管理规划好了,而在it技术学 ...

  4. python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET

    python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET python random模块 分类: python 2011-11-15 15:31 6037人阅读 评论(2) ...

  5. django初探-创建简单的博客系统(二)

    上篇django初探-创建简单的博客系统(一)已经记录了Django实现博客的发布的整个过程,接下来继续说明博客标题和内容的显示. 显示博客详细 将博客内容保存到数据库还不是发布博客的终极目的,博客一 ...

  6. python海明距离 - 5IVI4I_I_60Y的日志 - 网易博客

    python海明距离 - 5IVI4I_I_60Y的日志 - 网易博客 python海明距离   2009-10-01 09:50:41|  分类: Python |  标签: |举报 |字号大中小  ...

  7. [Python学习] 简单网络爬虫抓取博客文章及思想介绍

            前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy ...

  8. MWeb 生成静态网站&博客

    MWeb 生成静态网站 & 博客 MWeb 的静态网站分类 在 MWeb 的文档库中,有两种分类,一种是普通分类,另一种就是静态网站分类了.你可以直接新增一个静态网站分类,也可以在普通分类的顶 ...

  9. [2017BUAA软工助教]博客格式的详细说明

    一.为什么要强调博客格式 可以对比粗读一下这几篇博客然后自己感受一下博客格式对博客阅读体验的影响: MarkDown流:    [schaepher]2017春季 JMU 1414软工助教 链接汇总 ...

随机推荐

  1. Dynamics 365 for CRM: Sitemap站点图的可视化编辑功能

    Dynamics 365 for CRM 提供了Sitemap站点图的可视化编辑功能 在之前的所有版本中,我们只能通过从系统中导出站点图的XML进行编辑后再导入(容易出错),或使用第三方的Sitema ...

  2. NEO从入门到开窗(4) - NEO CLI

    一.唠叨两句 首先,我们都知道区块链是去中心化的,其中节点都是对等节点,每个节点都几乎有完整的区块链特性,CLI就是NEO的一个命令行对等节点,当然也有GUI这个项目,图形化的NEO节点.节点之间需要 ...

  3. Java虚拟机之性能监控

    一.jstat:虚拟机统计信息监控工具监视虚拟机各种运行状态 图中,S0.S1(Survivor0.Survivor1)代表两个Survivor区,其中一个值为57.60%.另一个为0.E(Eden) ...

  4. iPhone的App嵌入html页面问题

    测试环境:iPhone ios 11.0.3 问题:iPhone App嵌入HTML页面,页面拉动到底部时,手势从屏幕底部边缘开始往上拉动,页面出现白色图层,且html页面一屏外的会卡住,无法滚动,需 ...

  5. alpha-咸鱼冲刺day9

    一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 大概差不多了.不过提交似乎又出了问题正在修改ing 四,问题困难 页面整合啥的凑合一下.因为后面跟着学长速成的PHP,现在还在研 ...

  6. Beta阶段总结分析报告

    1 讨论照片 2 Postmortem结果 二手交易平台项目Postmortem结果 整理:程环宇 设想和目标 1.       我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有 ...

  7. mysql基础篇 - 数据库及表的修改和删除

    基础篇 - 数据库及表的修改和删除         修改和删除 一.实验简介 本节实验中,我们将学习并实践如何对数据库的内容做修改,删除,重命名等操作. 二.实验准备 在正式开始本实验内容之前,需要先 ...

  8. Hibernate与mysql的对应类型

    Hibernate映射类型 Java类型 标准SQL类型  integer  java.lang.Integer  integer  long  java.lang.Long  bigint  sho ...

  9. asp.net web api 控制器

    1控制器操作的参数 控制器操作的参数可以是内置类型也可以是自定义类型,无参也是允许的. 2控制器操作返回值 类型 说明 void 操作返回值为void时,Web API返回空HTTP响应,其状态码为2 ...

  10. MySQL InnoDB锁机制

    概述: 锁机制在程序中是最常用的机制之一,当一个程序需要多线程并行访问同一资源时,为了避免一致性问题,通常采用锁机制来处理.在数据库的操作中也有相同的问题,当两个线程同时对一条数据进行操作,为了保证数 ...