Phase2 — How to “nginx, uwsgi, django, redis, python 3 — project run on Centos 7 and integrate with IDE of pycharm.
Phase1 把各別的Services都build 好, 接下來就是把它們整合起來, 上一篇分享完之後, 有朋友說希望可以在phase2 也講到 datadog 整合python, 想想也不錯, 畢竟自己是總代理商, 沒道理不提到datadog
Datadog 是一款Monitoe as service 的雲端監控, 不只是監控系統、網路效能, 透過代碼帶入, 還可以監控程式碼效能, 詳細可參考 : https://www.datadoghq.com.tw
System integration map
1、Nginx ← → uWSGI 配置
使用到的資源 : uwsgi_params 文件
https://github.com/nginx/nginx/blob/master/conf/uwsgi_params
- 1.1、這個文件配置nginx 時會用到, 主要用來讓nginx 認識 uwsgi, 如果在phase1 有按造順序安裝, 可以在 /etc/nginx/ 內看到, 沒看到的話可以vim uwsgi_param來新增一個, 內容就cv github 內容就可以.
- 1.2、到 /etc/nginx/ 內新增一個 .conf, 名稱自取就可以, 這邊我用pysite.conf, 內容直接複製以下
upstream {
server unix:///etc/nginx/pysite.sock;
}
server {
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
}
location / {
uwsgi_pass 127.0.0.1:9090;
include /etc/nginx/uwsgi_params;
}
}
- server unix:///etc/nginx/pysite.sock; 這邊直接用socket 不用port主要是socket 的效能跟資源使用率會比port 好不少.
- include /etc/nginx/uwsgi_params; 這段要根據uwsgi_params 的位址做調整.
最後記得restart nginx
service nginx restart
然後測一下nginx 的conf 正不正常
nignx -T
2、uWSGI ← → django配置
cd /etc
mkdir uwsgi
vim uwsgi.ini
為了便於管理,在etc 下新增一個uwsgi folder 並把 .ini 的conf 文件放裡面, 以下是ini文件的內容
[uwsgi]
socket = 127.0.0.1:9090
master = true //主程序
vhost = true //多站模式
no-site = true //多站模式無入口
workers = 2 //子程序數
reload-mercy = 10
vacuum = true //Quite、reload時 clear 文件
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi.pid //pid程序文件
daemonize = /var/log/uwsgi.log
3、Pycharm IDE 配置
Pycharm 是python 常用的 IDE, 但免費的”社區版” 沒有佈署的功能, 需要手動上傳到生產環境上, 只有付費的專業版才有, 專業版不便宜, 可以到官網參考價格.
https://www.jetbrains.com/pycharm/buy/#commercial?billing=yearly
- 設定Pycharm的Deployment
一點小心得 : 不少人會在自己電腦上安裝測試環境, 然後在電腦上直接做測試, 但這種方法很容易遇到自己電腦run 正常, 但把代碼佈署上生產環境時卻GG, 所以我開發時比較傾向, 事先把生產環境佈署好,然後再從生產環境clone 一份做開發測試環境, 然後把IDE 跟測試環境做同步,用這份測試環境做驗證…這樣一來可以排除掉很多環境差異的問題.
三個服務的環境整合與IDE配置, 就都到此結束了, 接著是Datadog 部分
* 安裝datadog agent
DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxx DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"
xxxxxxxxxxxxxxxxxxxxxxxx這段是datadog 給的api key, 可以login datadog後在Integrations內找到
* 安裝datadog tracer
pip3 install ddtrace
以上兩個安裝完成之後, 還要在agent 的conf 內把APM功能打開
vim /etc/datadog-agent/datadog.yaml
找到 apm_config這段把註釋(#)拿掉, 接著在下面可以找到 apm_enabled: true, 一樣也是把註釋(#)拿掉.
service datadog-agent restart
完成後restart agent就完成基本配置
* python code 放import
import os
from ddtrace import tracer
* ddtrace library doc
Datadog 能夠trace 的範圍很大, 可以參考以下Glossary & Walkthrough的線上文件.