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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云服务器ECS,u1 2核4GB 1个月
简介: 利用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


参考:

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得
|
6天前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
12 1
|
6天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
6天前
|
弹性计算 Java Linux
阿里云服务器搭建部署宝塔详细流程
该内容是一个阿里云服务器和域名的配置指南。首先,需注册阿里云账号并进行企业实名认证。接着,选购服务器如2核2G1兆的Linux系统,并购买域名。完成域名备案后,进行域名解析和ICP备案。然后,通过远程连接登录服务器,重置密码,安装宝塔面板。在安全组中开启宝塔面板随机生成的端口。最后,登录宝塔面板安装LNMP环境,配置数据库如MySQL和Redis,部署JDK、Tomcat,上传前端和后端项目以实现上线。
|
7天前
|
弹性计算 JavaScript Java
阿里云服务器搭建部署宝塔详细流程
以下是内容的摘要: 本文主要介绍了在阿里云上创建和配置服务器环境的步骤,包括注册阿里云账号、实名认证、购买和设置服务器、域名的获取与备案、以及使用宝塔面板安装和配置环境。首先,用户需要注册阿里云账号并进行实名认证,选择合适的服务器配置。接着,购买服务器后,要准备并备案域名,以便通过友好的网址访问网站。在服务器上安装宝塔面板,可以方便地管理和配置LAMP/LNMP/Tomcat/Node.js等应用环境。完成这些步骤后,用户还需要在宝塔面板中安装MySQL、Redis等数据库,部署Java或Vue项目,并配置相关端口。最后,将前端项目打包上传至服务器,并设置站点,即可实现网站的上线。
|
7天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
9天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
9天前
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署项目流程
本文主要讲解阿里云服务器的部署,如何选择配置等
|
12天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器
|
12天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat

推荐镜像

更多