在宝塔上安装完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下:

root@ubuntu:# virtualenv -p /usr/bin/python3 py3env

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

root@ubuntu:~/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就可以了
root@ubuntu:~/py3env/bin# source activate

#要不然是这样激活的:
root@ubuntu: source py3env/bin/activate

退出虚拟环境的命令是(这个暂时不需要用到):
root@ubuntu: 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:8000 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)

登陆ssh后输入:

vim /etc/ssh/sshd_config

如果命令不存在,则先安装vim

apt install -y vim

打开后文件后移到文本底部,写着port:xxxx,将xxxx改为其他数字即可。端口范围为:1-65535,数值越大越好。
先按下字母"i"就可以进行编辑了,编辑后按Esc,然后输入“:wq” 回车就可以保存修改了。

当你在VPS上新装了系统,通过SSH登陆一般会出现如下提示:

XX packages can be updated.
XX updates are security updates

那么我们可以通过以下命令来更新:

sudo apt-get update        # 获取需要更新的package的列表
sudo apt-get upgrade       # 限制性地更新最近的packages
sudo apt-get dist-upgrade  # 安装更新最新的packages

1 启动docker服务

首先需要知道启动docker服务是:

service docker start

或者:

systemctl start docker

2 关闭docker服务

关闭docker服务是:

service docker stop

或者:

systemctl stop docker

3 启动docker某个image(镜像)的container(容器)

Docker的镜像称为image,容器称为container。

对于Docker来说,image是静态的,类似于操作系统快照,而container则是动态的,是image的运行实例。

比如,有一个image名称为ubuntu,那么比如现在我们启动这个image的container并且进入到这个container的bash命令行中:

docker run -t -i ubuntu /bin/bash

官网是这么说的:

docker run: runs a container.
ubuntu: is the image you would like to run.
-t: flag assigns a pseudo-tty or terminal inside the new container.
-i: flag allows you to make an interactive connection by grabbing the standard in (STDIN) of the container.
/bin/bash: launches a Bash shell inside our container.

理解很简单:

docker run:启动container

ubuntu:你想要启动的image

-t:进入终端

-i:获得一个交互式的连接,通过获取container的输入

/bin/bash:在container中启动一个bash shell

这样就进入container的内部了:

root@af8bae53bdd3:/#

如果有运行中的container,可以在container所在的外部操作系统中运行:

docker ps

查看到这个container。

如果想看到所有的container,包括运行中的,以及未运行的或者说是沉睡镜像,则运行:

docker ps -a

如果要退出就:

Ctrl-D

或:

root@af8bae53bdd3:/# exit

如果想再次打开这个container,运行:

docker start goofy_almeida

其中“goofy_almeida”是容器的名称。

4 进入container(容器)

4.1 使用“docker attach”命令进入

这个时候container运行在后台,如果想进入它的终端,则:

docker attach goofy_almeida

就可以了。

4.2 使用“docker exec -it”命令进入

使用“docker attach”命令进入container(容器)有一个缺点,那就是每次从container中退出到前台时,container也跟着退出了。

要想退出container时,让container仍然在后台运行着,可以使用“docker exec -it”命令。每次使用这个命令进入container,当退出container后,container仍然在后台运行,命令使用方法如下:

docker exec -it goofy_almeida /bin/bash

goofy_almeida:要启动的container的名称

/bin/bash:在container中启动一个bash shell

这样输入“exit”或者按键“Ctrl + C”退出container时,这个container仍然在后台运行,通过:

docker ps

就可以查找到。

5 退出container

输入:

exit

或者按键:

Ctrl + D

作者:我是干勾鱼
来源:CSDN
原文:https://blog.csdn.net/dongdong9223/article/details/52998375