Python入门到逆袭12(项目篇-web项目1)

1. 简介

其实,我这里也没想好一个比较完整的稍微大一点的项目,大家都写管理系统,总不能我又去写个管理系统....吧,管理系统就一个web+mysql,然后,对mysql的数据进行增删改查,然后,完了。

其实,我就是想将前面的所写到的内容整合起来,然后将在一些常用的开源库能够较好的整合上来,例如celery定时任务和任务队列、redies缓存机制、标准北向接口和AK/SK鉴权等都写下来,当然,mysql也会用到的。

这个项目,搭建一个web框架,以mysql作为数据存储机制,结合上一章节用到的爬虫,定时触发爬取对应的域名进行分析,然后展示在页面上。

先上图,看下效果,最后有一键化安装脚本:

 

2. 需求

需求如上简介中所示,主要有如下几点。

  • 一个基础的web框架,通过用户名和密码登录后可以使用web的相关功能。
  • 增加用户管理模块,能够创建删除管理员用户。
  • Web的主要业务在于定时爬虫收集数据。
  • 除了能够定时收集外,还能够立即收集。
  • 增加爬虫关键字管理页面,能够删除和新增。
  • 增加日志管理页面,记录管理员的操作。
  • 后台能够记录错误日志和关键日志。

需求之后,就是一个交互设计,在开发之前应该有个原型,就知道大概开发出来要是个什么样子,这里就直接看最后实现后的效果了。

 

3. 实现思路

基于需求,讲需求拆分之后,就知道具体的一步一步需要做哪些东西了。

  • 环境搭建

    nginx + django + uwsgi

    mysql数据库

    redies开源库

    celery开源库

 

  • 功能设计

    Web cgi开发(前后台交互接口)

    用户管理、用户认证模块

    爬虫配置管理模块

    日志管理模块

    后台日志模块

    爬虫功能

    定时任务模块

 

4. 环境搭建

4.1 快速搭建(django+nginx)

安装环境 : centos 7 (能上网)

安装包 :

链接:https://pan.baidu.com/s/1KxJUbvocrS8SFZ_2jiGKdQ

提取码:mew2

将百度云盘的几个文件和下面的django_install.sh脚本拷贝到centos任意目录,chmod a+x django_install.sh; ./django_install.sh 即可完成nginx+django的安装,如下图 :

安装成功后提示 :

 

安装后的效果如下 :

如果对django、nginx等安装配置了然于胸,可以直接用该脚本安装完就可以了,无需看后面的解释章节。

4.2 详细步骤(django+nginx)

4.2.1 安装相关依赖

yum -y install gcc-c++

yum -y install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel libffi-devel

yum -y install libxml*

 

4.2.2 离线安装python3

tar xvf Python-3.7.0.tar.xz

cd Python-3.7.0

./configure --prefix=/usr/local/python3.7 --enable-shared CFLAGS=-fPIC

make

make install

上述命令为离线编译安装python3

 

mv -i /usr/bin/python /usr/bin/python.bak

mv -i /usr/bin/pip /usr/bin/pip.bak

ln -sv /usr/local/python3.7/bin/python3 /usr/bin/python

ln -sv /usr/local/python3.7/bin/pip3 /usr/bin/pip

由于centos7自带python2.7,默认的python为2.7,将默认python改为python3

 

echo "/usr/local/python3.7/lib" >> /etc/ld.so.conf.d/python.conf

ldconfig

 

pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=600

 

由于yum是基于python2开发的,所以需要将yum的pytho应用改成python2

4.2.3 安装django+uwsgi

pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple  --default-timeout=600

pip install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple  --default-timeout=600

 

ln -s /usr/local/python3.7/bin/uwsgi /usr/bin/uwsgi3

ln -s /usr/local/python3.7/bin/django-admin /usr/bin/django-admin

ln -s /usr/local/python3.7/bin/uwsgi /usr/bin/uwsgi

 

4.2.4 更新sqlite

由于python引用的是sqlite3,所有需要离线安装sqlite3,并设置为默认的

  • 编译安装

tar -zxvf sqlite-autoconf-3270200.tar.gz

cd /home/django/sqlite-autoconf-3270200

./configure --prefix=/usr/local

make

make install

 

  • 修改默认sqlite

/usr/local/bin/sqlite3 --version

/usr/bin/sqlite3 --version

 

mv /usr/bin/sqlite3 /usr/bin/sqlite3_3.7.17

ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

/usr/bin/sqlite3 --version

 

echo "export LD_LIBRARY_PATH="/usr/local/lib"" >>  ~/.bashrc

source ~/.bashrc

 

4.2.5 安装nginx

  • 编译安装

tar -zxvf nginx-1.13.7.tar.gz

cd  /home/django/nginx-1.13.7

./configure

make

make install

 

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

 

4.2.6 Web配置

  • 创建一个django项目

mkdir -p /data/

mkdir -p /data/website

cd /data/website

 

django-admin startproject mysite

cd /data/website/mysite

python manage.py startapp testweb

mkdir -p /data/website/mysite/static

mkdir -p /data/website/mysite/templates

 

  • 修改配置文件(/data/website/mysite/mysite/settings.py)

  • Django url请求的具体实现 (/data/website/mysite/testweb/views.py) :

 生成一个测试页面

echo "Django测试页面" > /data/website/mysite/templates/index.html

 

  • mysite.xml(/data/website/mysite/mysite.xml)

<uwsgi>    

   <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->

   <chdir>/data/wwwroot/mysite/</chdir><!-- 项目路径 -->            

   <module>mysite.wsgi</module>

   <processes>4</processes> <!-- 进程数 -->     

   <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->

</uwsgi>

 

  • nginx配置

  • 配置校验、进程启动

加载xml配置

cd /data/website/mysite/

uwsgi -x mysite.xml

 

校验nginx配置正确性,并启动

nginx -t

nginx

nginx -s reload

 

  • 效果

 

4.3 快速搭建(mysql)

 

    1. 快速搭建(mysql)

安装环境 : centos 7 (能上网)

 

安装脚本 : 没法上传文件,这里就直接贴shell代码了,创建一个mysql_install.sh脚本保存即可   


wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum -y  install mysql57-community-release-el7-11.noarch.rpm
yum -y  install mysql-community-server


systemctl start mysqld
systemctl enable mysqld
systemctl daemon-reload


mysql_pwd=`cat /var/log/mysqld.log | grep "generated for root@localhost:" | awk -F 'root@localhost: ' '{print $2}'`
echo "mysql临时密码为 : $mysql_pwd"


mysql --connect-expired-password -uroot -p$mysql_pwd -e "set global validate_password_policy=0;set global validate_password_length=1;"

mysql --connect-expired-password -uroot -p$mysql_pwd -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';" 


echo "mysql新密码为 : 123456"

echo "开放3306远程mysql端口"
mysql --connect-expired-password -uroot -p123456 -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;" 

将mysql_install.sh脚本拷贝到centos任意目录,chmod a+x mysql_install.sh; ./mysql_install.sh 即可完成mysql的安装,如下图 :

安装成功后提示 :

安装后的效果如下 : 密码设置为123456

下面章节可看可不看,mysql安装比较简单,可大致过一遍即可(mysql的精华在于表设计,不在python学习范畴)。

 

4.4 详细步骤(mysql)

4.4.1 安装mysql

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

yum -y  install mysql57-community-release-el7-11.noarch.rpm

yum -y  install mysql-community-server

 

systemctl start mysqld

systemctl enable mysqld

systemctl daemon-reload

 

Mysql安装后设置了一个随机默认密码,通过如下命令可以打印出来

cat /var/log/mysqld.log | grep "generated for root@localhost:" | awk -F 'root@localhost: ' '{print $2}'

 

4.4.2 mysql初始化的一些设置

使用mysql -uroot -p默认密码登录

 

  • 设置密码策略

set global validate_password_policy=0;

set global validate_password_length=1;

 

  • 设置root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

 

  • 开放3306远程mysql端口

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaxiadeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值