1. 安装cron

一般来说cron是默认自带的,如果没有的话需要安装:

apt-get install cron

2. 查看cron状态、启动cron

/etc/init.d/cron status     #查看状态
ps -ef|grep cron            #也行
/etc/init.d/cron restart    #启动服务
service start cron          #也可以

3. 修改cron任务

没有vim的可以先安装vim: sudo apt-get install vim-gtk
然后修改/etc/crontab文件进行定时任务

3.1 cron文件设置详细

分时:0 - 59
小时:0 - 23
日期:1 - 31
月份:1 - 12
周:  0 - 6
分  时  日   月   周   权限      命令     文件
0   7   *    *   *    root    mpg123 ~/wakeup.mp3  #每天7时以root的权限运行mpg123的命令
0   7   *    *   0    root    mpg123 ~/wakeup.mp3  #每周日7时以root的权限运行mpg123的命令
0   7   *    12   0    root    mpg123 ~/wakeup.mp3  #每年12月的每周日7时以root的权限运行mpg123的命令
0   7   31    *   *    root    mpg123 ~/wakeup.mp3  #每月31号的7时以root的权限运行mpg123的命令

4. 开启crontab的日志功能

    修改rsyslog文件,将/etc/rsyslog.d/50-default.conf 文件中的#cron.*前的#删掉;

    重启rsyslog服务sudo service rsyslog restart;

    重启cron服务sudo service cron restart;

5. 添加python的py

下面的这段话是来自Bingo_Python的博客:
运行注意:

  虽然你直接python XXX.py可以的,但是在/et/crontab里面需要设置好运行命令的绝对路径和被执行文件的绝对路径,即可实现执行py文件

  在这非常感谢“匡子语”的帖子:https://www.cnblogs.com/dplearning/p/6633329.html

  简单粗暴的解决了crontab运行python文件由于环境变量的问题,我是小白,以下理解有问题请多多指教,之前在网上找了很多帖子,有的人运行py文件,用sh脚本,在里面通过#!/bin/sh方式然后在vim /etc/crontab 里面运行sh文件,但是我还是不行(执行权限和环境变量都没问题)。

  还有的人是通过修改crontab环境变量让其执行py文件的时候识别,其实既然crontab它本身不具备我们平时运行的环境变量,那我完全可以不要环境变量,即python版本的安装绝对路径如路径:/home/bingo/python/python3.4  py文件路径:etc/111.py   我们完全可以在crontab里面直接运行命令是(/home/bingo/python/python3.4 etc/111.py),以下是成功的截图,这就不存在环境变量的问题了,红色方框内容就是当crontab到时间执行这条命令的时候他直接找运行环境的路径的工具,然后执行后面路径的py文件,即可完美运行py文件。

其实他的主要意思是用绝对路径来运行程序就不会出错。以我为例,系统安装了pyhton2.6,而virtualenv安装了python3,那么我执行任务的时候想使用virtualenv的python3 来执行任务,那么在cron文件下就需要这样添加:


# 每天晚上9点45分执行sched.py的文件,而这里的python3.5就是使用了virtualenv环境下的python
45 21   * * *   root    /root/py3env/bin/python3.5 /root/xxxxx/sched.py
    

参考:python3
https://www.cnblogs.com/Bingo0-python/p/7751977.html
https://www.cnblogs.com/dplearning/p/6633329.html

在宝塔上安装完mongodb后用软件连接是连不上的,其实主要原因是安全问题,因为mongodb默认是没有设置密码的。
所以如果需要允许外网访问就需要修改一下配置:

将bindIp:127.0.0.1 修改为 0.0.0.0

前言

前段时间用docker在搬瓦工的vps上挂起了flask 和 mongodb。docker的方便性是不容置疑的,但docker好像并不能支持flask_apscheduler上cron操作(如果能的话,请留言指正)。 因为我需要用到cron的定时任务来爬虫,然后传入mongodb,最后不得不放弃docker,直接使用virtualenv来操作。与此同时萌生了一个想法,能不能flask结合宝塔来实现flask和wordpress等网站并存呢? 答案是,可以的!!

步骤

  1. 在一个干净的VPS上先安装宝塔(默认安装python2.7)
  2. 然后安装virtualenv (python3版本,因为我写的flask就是用python3的,如果是python2就直接安装可以了)
  3. 将flask目录上传到vps上,激活virtualenv ,然后运行flask
  4. 登陆宝塔设置ngixx

安装宝塔 (以ubuntu为例)

首先用ssh远程登陆vps,输入以下命令更新vps上的packages,防止后续安装宝塔出错:

sudo apt-get dist-upgrade  # 安装更新最新的packages

登陆宝塔的官网,并根据提示安装宝塔, Ubuntu/Deepin安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh

安装virtualenv 和 gunicorn

安装完成之后,我们可以用pip安装virtualenv,直接在终端输入以下命令 :

sudo apt-get install python-virtualenv

创建python3的虚拟环境,进入要创建虚拟环境的py3env目录下,这里默认你是放在root下:

[email protected]:# virtualenv -p /usr/bin/python3 py3env

创建完可以进入py3env/bin/下查看:

[email protected]:~/py3env/bin# ls
activate      activate.fish     easy_install      pip   pip3.5  python3    python-config
activate.csh  activate_this.py  easy_install-3.5  pip3  python  python3.5  wheel

接下来是激活虚拟环境:

#因为我们已经进入了bin的文件夹了,所以直接输入source activate就可以了
[email protected]:~/py3env/bin# source activate

#要不然是这样激活的:
[email protected]: source py3env/bin/activate

退出虚拟环境的命令是(这个暂时不需要用到):
[email protected]: deactivate 

接下来是按照gunicorn:
gunicorn是python wsgi服务器,适用于unix系统的,从ruby的unicorn移植来的,是pre-fork的工作模式。兼容很多web框架,部署方便,资源耗费少,速度较好。因为gunicorn是pre-fork的,也就是有一个中心主管进程管理一系列工作进程,主管进程不关心客户请求,所有的请求、相应都是工作进程来处理的。

pip3 install gunicorn

#其他运行flask所需要的模块
pip3 install flask
pip3 install flask_apscheduler
...

使用gunicorn运行flask:

执行命令gunicorn -w 3 -b 127.0.0.1:5000 xxx:app

注意:
xxx为文件名
app为flask里面的app函数
例如:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    app.run()

配置Nginx

正常来说,用gunicorn启动后在本机浏览器访问http://ip:5000 是可以运行的。但因为我们还没有用宝塔配置nginx,所以暂时是访问不了。

在宝塔上配置nginx是一件非常简单是事情。
请输入图片描述

请输入图片描述

请输入图片描述

配置文件的选择中填写:

server

{

listen 80;

server_name example.com; # 这是HOST机器的外部域名,用地址也行

location / {

proxy_pass http://127.0.0.1:5000; # 这里是指向 gunicorn host 的服务地址

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

运行

最后输入网址:www.example.com 就可以看到运行中的flask。

按照wordpress、typecho

既然flask已经安装了,那么安装wordpres就不是什么问题了。直接在宝塔的界面上创建网站、数据库等,然后按照宝塔的提示安装就可以了。

参考:
https://blog.csdn.net/qingche456/article/details/65465760
https://www.jianshu.com/p/1c4d4f3ee52a

from timeit import default_timer as timer
start = timer()

###需要测试的代码,最后输出运行时间,以秒为单位

end = timer()
print(end - start)