日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker手动构建 nginx+py3+uwsgi环境

發布時間:2024/7/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker手动构建 nginx+py3+uwsgi环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker手動構建 nginx+py3+uwsgi環境

前述

這里使用的阿里云服務器部署,云服務器ssh登陸成功后,如果幾分鐘沒有操作的話,sshd會自動斷開登陸,對于我們來說,在部署軟件有時要等很久,經常會發生ssh斷開的情況,又或是上個側所回來ssh就斷開了,非常頭痛。

這里我們要先解決ssh斷開連接的問題

# egrep ^Client /etc/ssh/sshd_config
ClientAliveInterval 15 --間隔多少秒發送一次心跳
ClientAliveCountMax 1800 --多少秒沒有數據產生時斷開連接

部署py3+uwsgi+nginx用于運行py3應用程序

部署Docker

  • CentOS 7 安裝Docker # yum -y install docker # echo 1 > /proc/sys/net/ipv4/ip_forward --打開路由轉發,用于給容器上外網 # systemctl restart network
  • 2、配置阿里Docker鏡像源
    如果直接使用DockerHub官方倉庫上傳下載鏡像的話,網速不快,因為跨國了,這里使用國內的阿里Docker鏡像源:
    https://cr.console.aliyun.com/ ->登陸->管理中心->鏡像加速(根據提示配置)

    # vi /etc/docker/daemon.json --這是我機器的配置 {"registry-mirrors": ["https://uss01m1d.mirror.aliyuncs.com"] } # systemctl daemon-reload # systemctl restart docker # docker pull centos:7

    Docker里部署py3+uwsgi+nginx

    1、運行docker容器

    # docker run --name py3 -v /data/:/www -p 172.18.108.136:80:80 --privileged -d centos7:py3 /usr/sbin/init # docker exec -it py3 bash --登陸py3容器

    2、編譯安裝python3.6
    --安裝前先安裝依賴軟件包

    # yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc-c++ libxml* gzip zlib zlib-devel

    --下載python3.6軟件包

    # wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

    --解壓編譯

    # tar -zxvf Python-3.6.3.tar.gz -C /usr/src/ # cd /usr/src/Python-3.6.3 # ./configure --prefix=/usr/local/python3 && make && make install # ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 # ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

    3、安裝django和uwsgi

    # pip3 install django # pip3 install uwsgi

    --安裝的django 和 uwsgi 全部在python的安裝目錄下下
    # ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3

    4、測試uwsgi

    # vim test.py def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]

    --運行uwsgi3

    # uwsgi3 --http :80 --wsgi-file test.py # lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME uwsgi3 1178 root 3u IPv4 813312 0t0 TCP *:80 (LISTEN)

    --uwsgi3已經監聽80端口
    訪問http:// 172.18.108.136:80 可見Hello World。

    --停止uwsgi3,釋放80端口,測試django
    # kill -9 1178

    5、測試Django
    --將django項目創建在/www/apply目錄下

    # mkdir /www/apply && cd /www/apply

    --創建django項目:webapp

    # python3 /usr/local/python/bin/django-admin.py startproject webapp

    --運行python3

    # cd webapp/ # python manage.py runserver 0.0.0.80

    訪問http:// 172.18.108.136:80 可見下圖算成功

    如訪問看到的是以下錯誤,則需要修改訪問的權限

    # vi /www/apply/webapp/webapp/setti ngs.py 28 ALLOWED_HOSTS = ['*'] --在[]里加上*代表允許所有ip訪問

    6、將uwsgi和django連接起來
    前面uwsgi和django測試已經沒問題,接下來將兩個連起來

    --確認80端口沒有被占用
    # uwsgi3 --http :80 --chdir /www/apply/webapp --module webapp.wsgi
    備 –chdir 指定項目的絕對路徑,--module 是指項目的wsgi模塊

    # lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME uwsgi3 1178 root 3u IPv4 813312 0t0 TCP *:80 (LISTEN)

    訪問http:// 172.18.108.136:80 可見下圖
    代表uwsgi和django已經連起來

    附:啟動uwsgi時需要加很多參數不方便記,我們可以參照官網寫一個配置文件來啟動

    # cd /www/apply/webapp # vim webapp.ini [uwsgi] # Django-related settings # the base directory (full path) chdir = /www/apply/webapp # Django's wsgi file module = webapp.wsgi # the virtualenv (full path) # home = /path/to/virtualenv # process-related settings # master master = true # maximum number of worker processes processes = 5# the socket (use the full path to be safe) # socket = /path/to/your/project/mysite.sock socket = :81 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true

    啟動時就改用webapp.ini來啟動
    # uwsgi3 --ini /www/apply/webapp/webapp.ini

    部署nginx反向代理

    1、編譯安裝nginx
    --編譯之前,先安裝nginx軟件所依賴的軟件包

    # yum install patch make cmake gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel vim-minimal nano fonts-chinese gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap diffutils pcre # wget http://nginx.org/download/nginx-1.13.8.tar.gz # tar -zxvf nginx-1.13.8.tar.gz -C /usr/local # cd /usr/local/nginx-1.13.8 # ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 && make && make install

    --停掉80端口,啟動nginx,如沒有報錯,
    打開瀏覽器: http:// 172.18.108.136:80 可見:Welcome to nginx

    2、配置nginx代理uwsgi

    # vi /usr/local/nginx/conf/nginx.confupstream webapp { --該段添加在server{}外面,http{}里面server 127.0.0.1:81; --uwsgi3服務器和監聽的端口}server {listen 80;server_name webapp.com;charset utf-8;client_max_body_size 75M; location / {include uwsgi_paramsuwsgi_pass webapp;}}

    --啟動uwsgi3監聽81端口

    # uwsgi3 --ini /www/apply/webapp/webapp.ini # lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME uwsgi3 1178 root 3u IPv4 813312 0t0 TCP *:81 (LISTEN)

    --啟動nginx監聽80端口

    # /usr/local/nginx/sbin/nginx -t --確定nginx沒有報錯![](https://s1.51cto.com/images/blog/201804/15/430321341f62f458506e060fb2774147.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 18535 root 6u IPv4 842111 0t0 TCP *:http (LISTEN) nginx 18536 nginx 6u IPv4 842111 0t0 TCP *:http (LISTEN)

    訪問http:// 172.18.108.136:80 又看到django界面
    代表nginx已經成功代理了uwsgi3

    3、配置MariaDB
    --安裝mariadb

    # yum install mariadb mariadb-devel mariadb-server

    --修改配置,將數據目錄指向到/www/共享目錄下

    # vi /etc/my.cnf [mysqld] datadir=/www/MariaDB/mysql socket=/www/MariaDB/mysql/mysql.sock log-error=/www/MariaDB/log/mariadb.log pid-file=/www/MariaDB/log/mariadb.pid log-bin=mariadb-bin# mkdir /www/MariaDB # chown mysql.mysql -R /www/MariaDB# systemctl restart mariadb # ln -s /www/MariaDB/mysql/mysql.sock /var/lib/mysql/mysql.sock # mysqladmin -u root password 123456

    --創建user和database給django用

    # mysql -uroot -p123456 MariaDB [(none)]> CREATE DATABASE webapp; MariaDB [(none)]> show databases like 'webapp'; +----------------+ | Database | +----------------+ | webapp | +----------------+ 1 rows in set (0.00 sec)MariaDB [(none)]> grant all privileges on webapp.* to apply@'%' identified by 'apply'; MariaDB [(none)]> select host,user,password from mysql.user where user='apply'; +--------------+-------+-------------------------------------------+ | host | user | password | +--------------+-------+-------------------------------------------+ | % | apply | *09B402E6D1FBDF77CD0F6F0CE586137BAD897877 | +--------------+-------+-------------------------------------------+ 1 rows in set (0.00 sec)MariaDB [(none)]> exit;

    4、創建django項目
    --創建django項目,測試django連接MySQL

    --安裝連接mysql數據庫插件

    # pip install --allow-all-external mysql-connector-python # vim /www/apply/webapp/webapp/settings.py DATABASES = {'default': { 'ENGINE': 'mysql.connector.django','NAME': 'webapp','USER': 'apply','PASSWORD': 'apply',} }

    --安裝blog

    # cd /www/apply/webapp/ # python3 manage.py startapp blog # ls --可以看到在webapp項目下已經有了一個blog文件夾 blog manage.py webapp

    --修改settings.py 配置文件,添加blog應用

    # vim webapp/settings.py INSTALLED_APPS = ( 'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','blog', --添加此句)

    --初始化blog數據庫數據

    # python3 manage.py migrate Operations to perform:Apply all migrations: admin, auth, contenttypes, sessions Running migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying auth.0008_alter_user_username_max_length... OKApplying auth.0009_alter_user_last_name_max_length... OKApplying sessions.0001_initial... OK

    --確認數據庫webapp里已經生成了庫表

    # mysql -uroot -p123456 MariaDB [(none)]> use webapp MariaDB [webapp]> show tables; +----------------------------+ | Tables_in_webapp | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 10 rows in set (0.00 sec)

    --創建登陸blog的帳號/密碼

    # python3 manage.py createsuperuser Username (leave blank to use 'root'): admin Email address: root@mail.com Password: --輸入密碼 Password (again): --再次輸入 Superuser created successfully.--啟動uwsgi3,并訪問blog論壇 # uwsgi3 --ini /www/apply/webapp/webapp.ini

    --訪問http:// 172.18.108.136/admin 能看到以下內容,代表已經搭建成功

    使用前面創建的帳號admin/admin123登陸,如登陸成功則表示成功連接上數據庫
    注:看到此界面沒有任何的css樣式和圖片,接下來我們做靜態圖版的反向代理

    5、nginx代理靜態圖片
    前面我們已經訪問到了blog,但沒有css樣式,這時我們在瀏覽器里按下F12->Network

    可以看到css的訪問路徑是http://localhost/static/admin/css 這個路徑。
    在webapp下新建static,然后nginx進行設置

    # cd /www/apply/webapp # mkdir static # cp -fr /usr/local/python3/lib/python3.6/site-packages/django/contrib/admin/static/admin/ ./static/

    --設置nginx代理static

    # vim /usr/local/nginx/conf/nginx.conf--在server{}里加入以下location /static {alias /www/apply/webapp/static;}

    --重啟uwsgi和nginx

    # kill -9 `ps -ef|egrep "uwsgi3|nginx" |grep -v grep |awk '{print $2}'` # nohup uwsgi3 --ini webapp-up.ini & --啟動uwsgi3 # /usr/local/nginx/sbin/nginx --啟動nginxnetstat -anlp|egrep "80|81" tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 15767/nginx: master tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 15756/uwsgi3

    --訪問http:// 172.18.108.136/admin 能看到以下內容,代表已經搭建成功

    可以看到這次訪問已經有css樣式了,比之前美觀

    --使用前面創建的帳號/密碼登陸進去:admin/admin123

    --至此搭建完成

    ?轉載地址:https://blog.51cto.com/passed/2103651?cid=704540

    轉載于:https://www.cnblogs.com/weidaijie/p/10621517.html

    總結

    以上是生活随笔為你收集整理的Docker手动构建 nginx+py3+uwsgi环境的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲成人免费在线视频 | 亚洲AV综合色区国产精品天天 | 亚洲精品二区三区 | 国产传媒精品 | 欧美xxxx黑人 | 国产综合激情 | 野外性满足hd | 99久久久无码国产精品免费麻豆 | 最新日韩在线视频 | 日本三级中国三级99人妇网站 | caoporn免费在线 | 一级的大片 | 噜噜噜亚洲色成人网站 | av片手机在线观看 | 嫩模一区| 无限国产资源 | 88av网站 | 午夜影院在线观看免费 | 熟女人妻一区二区三区免费看 | 黄色网炮| 久久人妻少妇嫩草av无码专区 | 国产综合无码一区二区色蜜蜜 | 国产精品亲子伦对白 | 性做久久久久久久久久 | 性欢交69国产精品 | 肉丝美脚视频一区二区 | 久久久国产成人 | 女同hd系列中文字幕 | 五月婷视频 | a爱视频| 另类综合在线 | 久青草视频 | 美女被猛网站 | 91中文在线观看 | 国产亚洲精品成人无码精品网站 | 国产精品18久久久久久久久 | 亚洲色图在线观看视频 | 日本a在线天堂 | 调教一区二区三区 | 免费视频中文字幕 | 伦在线 | 麻豆av免费在线观看 | 精品久久久久久亚洲综合网站 | 国产91综合 | 91麻豆精品秘密入口 | 无码少妇精品一区二区免费动态 | 欧美国产精品一区 | 五月天婷婷色综合 | 国产精品黄色大片 | 日韩免费电影一区 | 双性懵懂美人被强制调教 | 少妇福利在线 | 哺乳援交吃奶在线播放 | 久久蜜桃av | 人妻在卧室被老板疯狂进入 | 一本视频 | 国产二区三区 | 日韩精品久久久久久久电影99爱 | 国产无码精品一区二区 | 精品欧美一区二区三区 | 日本a级无毛| 成人av一区二区在线观看 | 高清av免费观看 | 日韩欧美高清在线 | 日韩av在线第一页 | 国产真实乱人偷精品视频 | 一区二区视频 | 一级黄色大片网站 | 激情涩涩 | 日韩av网页 | 久草中文在线观看 | 亚洲午夜毛片 | 一本大道伊人av久久综合 | 日本真人做爰免费视频120秒 | 手机看片欧美日韩 | 中国久久久久 | 天堂av在线网 | 亚洲成网站 | 成年人黄国产 | 伊人免费在线观看 | 精品一区二区三区四区 | 国产日韩高清在线 | 成人精品 | 国产精品一区在线观看你懂的 | 香港三级日本三级韩国三级 | 久草免费福利视频 | 国产日韩av在线播放 | 日韩丰满少妇无码内射 | 日本国产在线 | 秋霞视频在线观看 | 青青草国产在线观看 | av网子| youjizz国产精品 | 国产精品v欧美精品v日韩 | 天天摸天天 | 色www亚洲国产张柏芝 | 鲁在线视频 | 粉嫩在线 | 国产靠逼网站 |