步骤
事先准备好你的项目代码
-
- 先安装python,和创建虚拟环境
-
- 安装 nginx,redis mysql,以及你项目组所需要的相关组件 等
-
- 配置uwsgi,nginx文件
项目代码 https://github.com/HHHyuming/proxy_pool
项目目录如下
proxy_pool/
├── Api
│ ├── init.py
│ ├── proxyApi.py 代理池API(Flask应用)
├── Cli
│ ├── init.py
│ ├── proxyPool.py 代理池启动文件 启动schedule以及flask (这里用uwsgi启动flask)
│ ├── proxy_schedule.log
│ └── proxy_server.log
.。。。。。。 省略
└── uwsgi.ini ################################### 重点
安装python3.7 以及虚拟环境
- $ apt install update
- $ apt install upgrade
- 然后安装下面的依赖
安装python3.7
先去下载源码包
我放在 /opt 下面
1.下载
- $ cd /opt
- $ wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
- 解压
- $ tar -zxvf Python-3.7.5.tgz
因为ubuntu16.04 自带python2.7 与python3.5
$ whereis python3 查看python3 引用python3.5的位置
我们需要使用python3.7,只需要把/usr/bin 中的python3 引用从python3.5换成python3.7就行了
- $ cd /usr/bin
- $ rm python3*
接着开始安装python3.7
$ cd Python-3.7.5 进入刚才解压python3.7的目录
2.配置 - $ ./configure --prefix=/usr/local/python3.7 将python3.7安装到这个目录下
3.编译 - $ make
4.安装 - $ make install
这时候如果没报错就安装成功了 一定记得前面的依赖要装上不然等会pip3 安装可能会报没有_ctypes 这个模块的错误
5.将python3.7 加入到环境变量中 - $ cd /root
- $ vim .bashrc
这里的/usr/local/python3.7 就是刚刚安装python指定的安装位置 - export PATH=$PATH:/usr/local/python3.7/bin
- $ source .bashrc
- $ python3 可以看到成功了
安装虚拟环境
输入 pip 此时显示的是Python2的 我们不用管我们使用的是pip3
- $ pip3
- $ pip3 install virtualenv
- $ pip3 install virtualenvwrapper
此时虚拟环境安装完了,我们需要进行配置 - $ cd /root 或者 cd ~ 切换到家目录
- vim .bashrc
添加一下代码,请根据自己的目录位置进行调整
export WORKON_HOME=$HOME/.virtualenvs
创建的虚拟环境 放到./vritualenvs 目录中
export VIRTUALENVWRAPPER_PYTHON=/usr/local/python3.7.5/bin/python3
指定创建时的python版本 这里是python3
source /usr/local/python3.7.5/bin/virtualenvwrapper.sh
这条命令之后才可以mkvirtualenv
- $ mkvirtualenv proxy_pool_env 创建虚拟环境
- $ workon proxy_pool_env 进入虚拟环境
到这里python3以及虚拟环境以及安装配置完了
我们开始安装项目所需要的mysql 以及redis
- $ apt install redis-server
- $ apt install mysql-server
- $ apt install mysql-client
首先我们开始配置uwsgi
这里给两个链接可以看看uwsgi具体配置详解
https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/ # 官方文档已经写得很好了
https://blog.csdn.net/t8116189520/article/details/88388801
https://blog.csdn.net/wyfcode/article/details/86258232
- $ cd proxy_pool 进入项目根目录
- $ workon proxy_pool_env
- $ pip install -r requirements.txt 安装项目需要的依赖包
- $ pip install uwsgi
配置uwsgi
- $ vim proxy_uwsgi.ini 把下面的复制进去
这是本项目中的uwsgi配置文件
这是一个标准配置的模板,并非本项目uwsgi配置文件
[uwsgi]
# http=127.0.0.1:8005 如果你的项目不需要使用nginx 那么就使用http接受请求
# 这里使用nginx 所以使用socket不用http字段 使nginx和uwsgi进行通信
socket=:8005 # 会在0.0.0.0:8005 启动uwsgi 服务
# 项目目录 如果没配置好 可能启动的时候会出现导包错误
chdir=/www/cheese/python
# 指定启动的文件
wsgi-file=/www/cheese/python/manager.py
# 这个就是flask的实例对象
callable = app
# 要启动的进程个数
processes=4
# 线程数量
threads=2
# 会用一个master进程
master=True
# 记录pid 的文件夹,可以进入这个文件夹查看运行uwsgi的pid
pidfile=uwsgi.pid
# 启动后台运行 并且记录uwsgi的日志
daemonize=uwsgi.log
status=/www/cheese/uwsgi.status
项目虚拟环境 ********本项目部署没使用以下配置
# home=env
# virtualenv=/www/cheese/env
# plugins=python
- $ uwsgi proxy_uwsgi.ini 启动uwsgi
这个时候只是启动了uwsgi,还不能进行访问还需进行nginx配置 (如果你配置文件用的是http字段参数就可以小测一下,到时候配置nginx的时候你要把http换成socket字段)
nginx配置
1.安装
- $ apt install nginx
OK 搞定
此时可以看到nginx的页面
- $ cd /etc/nginx
- $ cat nginx.conf 我们可以看到nginx还会从这两个目录下加载配置文件
我们选第一个在/etc/nginx/conf.d/ 在下面创建一个 proxy_pool.conf 的配置文件
将这两个文件复制到conf.d目录下
- $ cp /etc/nginx/uwsgi_params /etc/nginx/conf.d
- $ cp /etc/nginx/proxy_params /etc/nginx/conf.d
创建配置文件 - $ cd /etc/nginx/conf.d
- $ vim proxy_pool.conf
将以下内容复制
server{
listen 8004; # nginx将会监听8004端口的请求
server_name 39.106.217.14; # 这是你公网的ip地址
location / { #这是根目录
include uwsgi_params;
uwsgi_pass 127.0.0.1:8005; # 这是你启动uwsgi服务的地址 nginx将会把收到的请求转发给uwsgi处理
}
}
- $ service nginx restart 重启一下nginx
如果访问失败的试试 到服务器 curl http://127.0.0.1:8004/get/ 如果成功则说明你的uwsgi配置没问题 ,可能是你的端口没开放,本人用的是阿里的服务器,需要到安全组把这个端口打开
开放端口阿里云服务器