在阿里云ECS上配置Apache+wsgi实现blog的部署

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 利用Django框架搭建个人博客网站,将网站通过Apache+wsgi部署到阿里云服务器。主要采用html、css、javascript作为前端,并使用了JQuery框架和Bootstrap框架;采用django框架作为后台开发技术、后台数据库使用mysql。本篇幅着重于Django框架介绍、数据库mysql配置和服务器部署。

Blog系统包括两大部分,分别是前台展示和后台数据管理。前台展示包括首页(7日内数据统计、热门博客统计)、登录、注册、博客列表(按日期归档博客列表,按博客类别分类列表等)、博客详情页面、评论模块、个人资料界面、信息修改界面等。后台数据管理包括博客管理、评论管理、数据统计管理、用户管理、动作管理。

本文重点介绍将个人博客网站部署到服务器这部分的内容,而基于Django开发网站的内容篇幅过长,且目前网上视频/文字教学资料丰富,不在此过多叙述。本文网站搭建参考教学视频。欢迎访问我的博客网站

1 技术模块简述

以下为本项目所采用的技术的简单介绍,以便大家对整个技术架构有个大致的了解。

1.1 后端开发

基于Django框架开发,Django是基于Python的Web开发框架,该框架基于“模型视图模板(MVT)”设计模式。Django 网络应用程序将处理网络处理请求流程中每个步骤的代码分组到单独的文件中。一个Django项目有多个应用,每个应用均有以下文件:image.png

  • urls: 通过单个功能来处理来自每个url的请求,同时编写单独的视图函数(views.py)来处理每个资源是更加可维护的。url映射器用于根据请求url将HTTP请求重定向到相应的视图view。url映射器还可以匹配出现在url中的字符串或数字的特定模式,并将其作为数据传递给视图功能。
  • views: 视图文件包含一个个请求处理函数,它接收HTTP请求并返回HTTP响应。视图通过模型访问满足请求所需的数据,并将响应的格式委托给模板。
  • models: 模型是定义应用程序数据结构的Python对象,并提供在数据库中管理(添加,修改,删除)和查询记录的机制。
  • templates:模板是定义文件(例如html页面)的结构或布局的文本文件,用于表示实际内容的占位符。视图可以使用html模板,通过数据填充动态地创建一个html页面模型。可以使用模板来定义任何类型的文件的结构; 它不一定是html。

如图,为博客网站项目中blog应用文件夹下的目录情况:
image.png

1.2 前端开发

html+javascript+css。jQuery(JavaScript库);Bootstrap(CSS框架);ajax(jQuery.ajax();用JavaScript执行异步网络请求)

  • CSS框架选择:易用性、兼容性、大小、效果、功能。Boostrap框架特点:文档齐全使用简单;兼容较多浏览器;非轻量级;扁平、简洁;组件齐全、响应式
  • Highcharts:是一个用于以纯JavaScript编写的图表的软件库。
  • Ajax:Ajax是以异步的方式向服务器提交需求。Ajax应用可以仅向服务器发送并取回必须的数据,并在客户端采用JavaScript处理来自服务器的回应。因为在服务器和浏览器之间交换的数据大量减少,服务器回应更快了。同时,很多的处理工作可以在发出请求的客户端机器上完成,因此Web服务器的负荷也减少了。

1.3 部署相关

  • 数据库采用mysql:mysql是一款跨平台的开源的关系型数据库。优点:为服务端而设计,可高并发访问,且开源、免费、好用。(Django自带的是SQLite数据库)
  • 服务器使用Ubuntu-18.04 64位阿里云ECS: 后续篇幅会详细讲如何在服务器部署。此处再次感谢阿里云ECS的支持(飞天加速计划·高校学生在家实践)
  • 版本控制Git: 使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况(原因你懂的)。所以,我用的是国内的Git托管服务Gitee

2 Django相关的命令

  • django-admin startproject djangoproject
  • py manage.py shell 在shell命令行模式下测试代码
  • py manage.py runserver (8080)运行程序,默认服务器127.0.0.1:8000
  • py manage.py startapp APP 创建应用
  • py manage.py makemigrations APP# 通过运行makemigrations命令,Django会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次迁移
  • python manage.py migrate # 迁移——修改模型需要更新数据库
  • py manage.py createsuperuser 创建管理员账号
  • py manage.py test APP 测试应用

3 本地开发-环境部署

1. 下载python3.x

2. 虚拟环境:
安装:pip install virtualenv
使用:创建:virtualenv djangoproject_env

 启动:Scripts\activate
    退出:deactivate 

之后使用都在djangoproject_env目录下创建djangoproject项目

3. pip一键导出和安装:
pip freeze > requirements.txt
pip install -r requirements.txt

4. 数据库mysql本地(window环境)配置:
安装mysql:

  • 下载mysql: https://dev.mysql.com/downloads/mysql/
  • 路径加入系统环境:path\mysql-8.0.29-winx64\bin
  • 配置MySQL(path\mysql-8.0.29-winx64\my.ini):image.png
  • 启动服务:image.png
  • 进入数据库:root是默认创建的用户。image.png
  • SQL语句设置密码:image.png

创建数据库:

  • 创建数据库(注意字符编码):image.png
  • 查看数据库:image.png
  • 创建新用户:image.png
  • 给用户分配mysite_db数据库的操作权限:image.png
  • 刷新权限:image.png

创建表(应用数据库迁移文件):

  • settings.py中数据库设置为SQLite:image.png
  • setting.py中数据库设置为mysql:image.png
  • 开启服务:image.png

MySQL时区设置问题:

  • 下载包含SQL语句的image.png
  • 将解压缩的文件内容加载到时区表中:image.png

4 服务器-环境部署

4.1 Git

  • 定义:Git是一款开源的分布式版本控制系统。(分布式相对于集中式)
    集中式:有中央服务器,有安全性隐患
    分布式:开销小
  • 常用命令:
    a. git clone username@host:/path/to/repository # 克隆
    b. git add . # 将当前目录及其子目录的所有变更文件添加到缓存
    c. git add * # 将当前目录下的变更文件添加到缓存
    d. git add 指定文件路径 # 将指定变更文件添加到缓存
    e. git checkout 分支名 # 切换分支
    f. git commit -m "说明提交内容" # 提交变更
    g. git remote -v # 查看远程仓库,一般clone下来的仓库默认远程仓库名为origin
    h. git push 远程仓库名 分支名 # push到远程仓库
    i. git log # 查看日志

4.2 ECS服务器配置

1. 远程连接服务器

  • Xshell连接:注意用户名是root,密码在阿里云控制台可重新设置。连接成功:image.png
  • 用Git-bash连接:ssh登录公网IP,命令:ssh root@公网IP

2. 安装准备工作
安装python3.6

apt-get  install  software-properties-common
add-apt-repository ppa:jonathonf/python-3.6
apt-get update
apt-get install python3.6

查看python3版本:

python3 -V

创建软链接:

which python3
cd/usr/bin
rm python
ln -s python3.6 python
rm python3
ln -s python3.6 python3

移除python其他版本:

apt-get autoremove python3.5

安装pip3.6:

apt-get install python3-pip
pip3 install --upgrade pip

安装虚拟环境:

pip3 install virtuelenv

创建虚拟环境:

virtualenv mysite-env
source mysite_env/bin/activate
deactivate

安装git:apt-get install git

3. 下载文件并安装mysql-server(注意和本地开发环境中mysql版本一致)

  • 下载文件:wget+链接image.png
  • 安装/加载软件包:image.png
  • 更新软件源:(报错的话,需要换镜像源)image.png
  • 安装:image.png
  • 为用户root设置密码:mysql -u root -p

4. 同步本地数据到服务器

  • 本地生成data.sql数据文件:image.png
  • scp传输到服务器:image.png
  • 创建数据库:
    创建数据库(注意字符编码):image.png
    查看数据库:image.png
    创建新用户:image.png
    给用户分配mysite_db数据库的操作权限:image.png
    刷新权限:image.png
  • 进入数据库:mysql -u username -p mysite_db
  • 导入数据:source data.sql

5. 安装mysqlclient

6. Apache+mod_wsgi配置
Linux常用的web服务器软件:Apache和Nginx。
Apache:模块多,功能强大;内置了对PHP,python,Perl和其他语言的支持。
Nginx(Engine-x):轻量级,抗高并发,速度快。

  • 安装apache2+wsgi:
    安装Apache2:sudo apt-get install apache2
    安装wsgi:image.png
    查看模块:image.pngimage.pngimage.png
    编译安装:
      安装Apache2-dev: apt-get install apache2-dev
      下载mod-wsgi源码: wget https://github.com/GrahamDumpleton/mod_wsgi/archive/refs/tags/4.9.2.tar.gz
      解压文件:tar xvfz mod_wsgi-4.9.2.tar.gz
      配置源代码:./configure --with-apxs=/usr/bin/apxs --with-python=/usr/bin/python3.6
      编译源代码:make
      再安装:make install
      成功替换旧的/usr/lib/apache2/modules下的mod_wsgi.so(无高亮,已是最新版)
      查看目录下是否有wsgi.load文件,有说明已经启动:ls mods-enabled/
      启用wsgi: a2enmod wsgi(显示已经启用)

7. 配置站点

  • 编辑站点文件:(注意目录)image.pngimage.png
  • Apache2启用站点配置:image.png
  • 查看启动的服务:image.png
  • 关闭默认服务:a2dissite 000-default.conf
  • 重启Apache服务:image.png
  • 查看Apache错误信息:cat /var/log/apache2/error.log
  • Django后台管理静态文件路径有问题,需要在mysite/setting.py中设置:STATIC_ROOT = os.path.join(BASE_DIR,'static_collected')
  • 重新设置/etc/apache2/sites-available下的mysite.conf配置的静态文件路径为………/static_collected

image.png


参考:

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
11 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
2天前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
2天前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
17 4
|
1天前
|
消息中间件 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
11 2
|
1天前
|
存储 消息中间件 druid
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
11 1
|
2天前
|
SQL 机器学习/深度学习 分布式计算
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
12 1
|
2天前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
14 1
|
1天前
|
弹性计算 关系型数据库 数据安全/隐私保护
阿里云国际版如何配置Windows服务器的虚拟内存
阿里云国际版如何配置Windows服务器的虚拟内存
|
2天前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
14 0
|
1月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。

推荐镜像

更多