# mystock **Repository Path**: xdao07/mystock ## Basic Information - **Project Name**: mystock - **Description**: Stock数据分析平台 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-29 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 股票分析 获取央行的[公开市场业务交易](http://www.pbc.gov.cn/zhengcehuobisi/125207/125213/125431/125475/index.html)数据与股票日线数据进行对比分析。 [**Demo展示**](https://www.xdao07.cn/stock/ "**Demo展示**") ## 需求环境 - chrome浏览器及chromedriver - python3 - django - pyMySQL - requests - selenium - urllib3 ## 部署 #### 1、安装chrome浏览器及chromedriver驱动 > selenium使用[chromedriver](http://npm.taobao.org/mirrors/chromedriver/ "chromedriver")作为chrome浏览器驱动 ```bash $ sudo yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm $ google-chrome --version Google Chrome 85.0.4183.83 # 获取chrome对应版本的驱动 $ wget http://npm.taobao.org/mirrors/chromedriver/85.0.4183.83/chromedriver_linux64.zip $ unzip chromedriver_linux64.zip $ mv chromedriver /usr/local/bin/ # 验证chromedriver $ chromedriver ``` #### 2、python3虚拟环境 ```bash python3 -m venv /data/venv ``` #### 3、安装requirements.txt ```bash $ source venv/bin/activate $ pip install -r requirements.txt ``` #### 4、初始化项目数据库 > 使用mysql数据库,需要先创建mysql数据库,并在settings.py中配置好DATABASES内容。 ```bash mysql> create database charset=utf8; $ python manage.py makemigrations $ python manage.py migrate # 初始化pbctradedaily数据库数据 $ python manage.py initial_pbc ``` #### 5、使用 uWSGI来部署项目 **5.1 安装uWSGI** ```bash $ sudo yum install uwsgi ``` **5.2 uWSGI运行项目** ```bash $ uwsgi --chdir /data/mystock --home /data/venv --http :8000 --module mystock.wsgi ``` > 其中, --chdir指定项目路径; --home指定python virtualenv路径; --module指定项目wsgi文件 **5.3 浏览器中测试项目是否正常** #### 6、使用supervisor管理uwsgi进程 **6.1 安装supervisor** ```bash $ sudo yum install supervisor ``` **6.2 配置supervisor** ```bash $ cat /etc/supervisord.conf ……省略部分…… [program:mystock] ; command指定需要管理进程的运行命令,此处即之前的uwsgi运行代码命令 command= uwsgi --chdir /data/mystock --home /data/venv --http :8000 --module mystock.wsgi ; directory指定项目路径 directory=/data/mystock startsecs=0 stopwaitsecs=0 autostart=true autorestart=true ``` **6.3 操作supervisor服务(顺带启动管理的进程服务)** ```bash $ sudo supervisord -c /etc/supervisord.conf ``` **6.4 操作supervisor管理的进程服务(启动/停止/重启)** ```bash $ sudo supervisorctl -c /etc/supervisord.conf [start | stop | restart] mystock ``` **6.5 使用文件来配置supervisor管理的进程服务** > 说明:前面几步已经能正常使用supervisor进行进程管理,但为了方便操作单个进程服务,可以使用额外的配置文件来配置单个进程服务 (1)项目路径下创建一个ini配置文件,其中的内容为uwsgi命令运行的参数 ```bash $ cat /data/mystock/uwsgi.ini # uwsgi.ini file [uwsgi] # Django-related settings # the base directory (full path) chdir = /data/mystock # Django's wsgi file module = mystock.wsgi # touch指定的文件进程就会reload touch-reload = /data/mystock/reload # the virtualenv (full path) home = /data/venv # process-related settings # master master = true # maximum number of worker processes processes = 2 threads = 2 # the socket (use the full path to be safe #http =:8000 # uwsgi以套接字方式运行,可以nginx中配置反向代理到此socket socket = /data/mystock/mystock.sock # ... with appropriate permissions - may be needed uid = www gid = www chmod-socket = 664 # clear environment on exit vacuum = true daemonize=/var/log/uwsgi/mystock.log ``` (2)修改项目目录属组 ```bash $ sudo chown -R www:www /data/mystock ``` (3)修改/etc/supervisord.conf配置文件 ```bash $ sudo cat /etc/supervisord.conf ……省略部分…… [program: mystock] # command指定需要管理进程的运行命令,此处为uwsgi命令使用ini配置文件方式 command=/usr/local/bin/uwsgi --ini /data/mystock/uwsgi.ini # directory指定项目路径 directory=/data/mystock restartsecs=0 ``` (4)更新新的配置到supervisord并重启supervisord的xdsite进程 ```bash $ sudo supervisorctl update $ sudo supervisorctl -c /etc/supervisord.conf restart mystock ``` #### 7、使用Nginx反向代理uWSGI 7.1 添加Nginx网站配置文件 ```bash $ sudo cat /etc/nginx/conf.d/mystock.conf upstream mystock { server unix:///data/mystock/mystock.sock; } server { listen 80; server_name stock.example.com; charset utf-8; access_log /var/log/nginx/mystock_access.log main; error_log /var/log/nginx/mystock_error.log; client_max_body_size 75M; location /static { alias /data/mystock/staticfiles; } location / { # uwsgi_pass unix:///data/mystock/mystock.sock; uwsgi_pass mystock; include /etc/nginx/uwsgi_params; } } ``` 7.2 检查配置是否正确后重启Nginx服务 ```bash $ sudo nginx -t $ sudo nginx -s reload ```