プラットフォームのURL:http://129.28.187.64
、クラウドサーバは2019年6月27日、満期を期待されている上演重く過ごしハハ、私の兄のささやきの指導を体験したいと考えていました~~~
展開環境
クラウドサーバ:Ubuntuのサーバー16.04.1 LTS 64魏
メインパッケージのPythonのバージョン:
python 3.5.2 Djangoは2.0.3 BeautifulReport 0.0.9 セロリ3.1.25 セロリ-と-のRedis 3.0 colorlog 4.0.2 暗号1.4.1 DDT 1.2.1 ジャンゴ・セロリ3.2.2 ジャンゴ-のRedis 4.0.0 gevent 1.4.0を greenlet 0.4.15 gunicorn 19.9.0 ipython 7.5.0 matplotlibの3.0.0 枕6.0.0 ピップ19.1.1 pycrypto 2.6.1 PyMySQL 0.9.3 QRコード6.1 Redisの2.10.6 の要求2.22.0
問題
1.なぜpython3.5?
Ubuntuは、時間uwsgiに従ってpython3.6を使用して、常に誤差が、それはまた、原因を見つけるために持っています...
2.タイミングタスクがエラーを実行する:
1> .TypeError:唯一のタプルするタプル(ない"NoneType")連結することができます。
バージョン3.1.17必要な問題をセロリセロリ-3.1.25ジャンゴセロリ-のRedis 3.0; HTTPS:// GitHubに.COM / stanleylst / ansibleUI /問題/ 2
2> .TypeError:1つの必要な位置引数が欠落し__init __(): 'on_delete';
django2.0のon_deleteが必要です。 https://blog.csdn.net/qq_38038143/article/details/80286187
3> .AttributeError:オブジェクトタイプは'BaseCommand'属性がNO 'option_list'がありません;。
3.2.2ジャンゴ・セロリにアップグレード解決; https://chowyi.com/Django-1-10-celery-worker-%E5%90%AF%E5%8A%A8%E6%8A%A5%E9%94%99/
3.django2.2 / MySQLのImproperlyConfigured:あるmysqlclient 1.3.13以降が必要です。あなたは0.9.3を持っている必要があり、
Djangoのバージョンは、ダウングレードはそれを下に2.2をdiangoします。
4.あなたがでTCL 8.5以降が必要です 。Redisのテストを実行するために
間違ったインストールRedisの時間を、あなたは、TCLアップグレードすることができます。https://www.cnblogs.com/Security-Darren/p/4381932.html
負荷分散5.nginxが提供される場合、名前が付けられていないが、下線が引かれている。
上流て、myApp {
サーバー127.0.0.1:9000;
}
6.BeautifulReportモジュール;
result.report(ファイル名=今+ 'report.htmlを'、readConfig.title説明=、=開き、log_path、report_path);
開き、log_path、パラメータreport_dirを交換する必要があるパラメータ
7.redis.exceptions.ResponseError:MISCONF Redisのは、RDBのスナップショットを保存するように構成されたが、現在はディスク上に持続することはできませんです。データセットを変更することができるコマンドが無効になっています。エラーの詳細については、Redisのログを確認してください。
Redisの-CLI输入コンフィグ設定ストップ書き込みオンbgsaveエラーなし https://www.jianshu.com/p/3aaf21dd34d6
8.locustデーモン;括弧をもたらす(ベース-fローカスト/ performance.py --master&) https://www.cnblogs.com/maoxianfei/p/7987217.html
スレーブ動作性能試験バッタ-fベースを開始/ performance.py --slave --masterホスト= 129.28.187.64
9.定期的なタスクデーモン・セロリスーパーバイザジャンゴ http://yshblog.com/blog/165
supervisord.conf
[プログラム:celery.worker] ; runディレクトリが指定された ディレクトリ= /ホーム/ Ubuntuの/ easyTest /を 、実行ディレクトリの実行 コマンドを=のpython manage.pyセロリの労働者は--loglevel = /ホーム/ Ubuntuの/ EasyTest / celery_logs --logfile情報/celery_worker.log ;スタートアップ設定 するnumprocs = 1;プロセスの数 監督が始まったとき、プログラムが自動的に起動します。自動=真 =真自動再;自動的に再起動し 、信号、デフォルトのTERMを停止 ;割り込み:INT(Ctrlキー+ Cなど) (推奨)ファイルを書き込んだ後終了するか、ログに記録されます、(-INT PIDを殺す) TERM(キルPIDを-term):終了; HUP(-HUP PIDを殺す)、注意とCtrl + Zが/ -stop PIDを殺す:保留中。異なる ;冷静に停止します(キルPIDを-quit)QUIT StopSignal INT = ;出力ログ stdout_logfile = /ホーム/ Ubuntuの/ easyTest / celery_logs / celery_worker.log stdout_logfile_maxbytes = 10メガバイト、最大50Mデフォルト stdout_logfile_backups = 10;ログファイルのバックアップの数、デフォルトは10 エラーログ。 redirect_stderr = falseは、エラーモニタを禁止する場合はtrue stderr_logfileを= /ホーム/ Ubuntuの/ easyTest / celery_logs / celery_worker_err.log stderr_logfile_maxbytes = 10メガバイト stderr_logfile_backups = 10 [プログラム:celery.beat] ;実行ディレクトリ指定し たディレクトリ= /ホーム/ Ubuntuの/ EasyTest / ;でのディレクトリの操作コマンド コマンド=セロリeasyTestビート-A /home/ubuntu/EasyTest/celery_logs/celery_beat.log --logfile -l情報--loglevel情報を 、設定を開始 = 1 numprocsのを、プロセスの数 真の自動起動=;ときスーパーバイザ起動時に、プログラムが自動的に起動します 真の自動再=を、自動的に再起動し 、信号停止 stopsignal = INT
起動とシャットダウン監督
スーパーバイザを起動するには、次のコマンドを入力して、特定のプロファイルを使用して実行:
supervisord -c supervisord.conf
スーパバイザコントローラで必要とされる閉じるsupervisord:
supervisorctl -c supervisord.confシャットダウン
再起動は、スーパーバイザコントローラでもsupervisord:
supervisorctl -c supervisord.confリロード
10.django匿名ユーザーの制限。
デコレーター@login_required
11.構成例外ページ403 404 500 400 https://zhuanlan.zhihu.com/p/38006919
12.gunicorn構成。
コマンドを起動します。gunicorn -c gunicorn-config.py EasyTest.wsgi:アプリケーション
gunicorn-config.py
#!は/ usr / binに/ envをPythonの #コーディング= UTF-8 のインポートがCPU_COUNTマルチプロセッシングから バインドを= '127.0.0.1:9000' デーモン=真#デーモンの 労働者= CPU_COUNT()* 2 worker_classの= 'gevent' forwarded_allow_ips =「* ' #が維持TCPリンク キープアライブ= 6 タイムアウト= 65 graceful_timeout = 10 worker_connections = 65535 #ログ capture_output =真 のLogLevel ='情報」 パスACCESSLOG = "/tmp/EasyTest_access.log" #アクセスログファイルの エラーログ=「を/ tmp / EasyTest_error .logに"
13.nginx構成。
nginxのコマンドを起動します。sudoは/ usr / local / nginxの/ sbinに/ nginxの
nginx.conf
#USERの誰もいません。 worker_processes 4; #error_logログ/ error.logに。 #error_logログ/ error.logに予告。 #error_logログ/ error.logに情報; PIDログ/ nginx.pid。 worker_rlimit_nofile 65535; イベント{ 使用するファイルディスクリプタ。 上multi_accept; worker_connections 10240; } HTTP { sendfileの上に、 上TCP_NOPUSH; 上のTCP_NODELAY; keepalive_timeout 65; types_hash_max_size 2048; mime.typesを含めます。 default_type application / octet-streamと; server_names_hash_bucket_size 128; 128Kをclient_header_buffer_size。 LOG_FORMATメイン'$ REMOTE_ADDR - $ REMOTE_USER [$ time_local] "$依頼"' '$地位$ body_bytes_sent "$ HTTP_REFERER"' ' "$ HTTP_USER_AGENT" "$ HTTP_X_FORWARDED_FOR"'; メインのaccess.log #access_logログ/。 #のkeepalive_timeout 0; gzipの上; gzip_disable "msie6"。 ;上のgzip_vary いずれかをgzip_proxied。 gzip_comp_level 6; 16 8K gzip_buffers。 gzip_http_version 1.1; gzip_typesテキスト/プレーンテキスト/ CSSのアプリケーション/ JSONアプリケーション/ X-javascriptのテキスト/ XMLアプリケーション/ XMLアプリケーション/ XML + RSSテキスト/ javascriptの、 上流て、myApp { サーバー127.0.0.1:9000; } サーバー{ ルートHTML。 80を聞きます。 SERVER_NAME 129.28.187.64; #charset KOI8-R。 文字セットUTF-8; メイン/home/ubuntu/EasyTest/logs/access.logのaccess_log。 error_logに/home/ubuntu/EasyTest/logs/error.log; 位置= /favicon.ico { empty_gif。 オフaccess_logの; } 場所/メディア/ { ルート/ホーム/ Ubuntuの/ EasyTest /。 30dの有効期限が切れ; オフaccess_logの; } 場所/静的/ { 別名/ VAR /静的/静的/。 } 場所/ { インデックスのindex.htmlのindex.htm。 proxy_set_headerのX-転送さ-について$ proxy_add_x_forwarded_for。 proxy_connect_timeout 300S; proxy_send_timeout 300S; proxy_read_timeout 300S; オフproxy_redirect; proxy_passます。http://て、myApp; } } }