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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

在Centos8上部署Django环境(Nginx+mysql+uwsgi)

發布時間:2024/1/8 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Centos8上部署Django环境(Nginx+mysql+uwsgi) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:筆者通過阿里云的學生"在家實踐計劃"獲得了一臺2核4G的云ECS實例,并安裝了Centos8鏡像。于是嘗試部署一套Django的生產環境。筆者選擇了 Nginx + uwsgi + mysql +Python3的方式。主機自帶了python3和pip3。筆者自行安裝了剩下的部分。其中,mysql的安裝借鑒了這篇參考博文。如有疑問歡迎大家在評區留言。
附言:以下操作,筆者都是以root身份進行的,讀者以其他用戶進行時,請酌情在命令前加上sudo。

本文目錄

    • 1.Nginx
          • 1.1阿里云放通80端口
          • 1.2安裝nginx
          • 1.3nginx管理
          • 1.4nginx使用
    • 2.Mysql
          • 2.1安裝mysql8.0
          • 2.2啟動mysql
          • 2.3安全設置
    • 3.Django
          • 3.1安裝django
          • 3.2關聯mysql
          • 3.3Django項目
    • 4.uWSGI
          • 4.1安裝uwsgi
          • 4.2寫項目配置文件
          • 4.3寫nginx配置文件
          • 4.4運行
          • 4.5管理
            • 4.5.1安裝uwsgitop
            • 4.5.2管理相關命令

1.Nginx

1.1阿里云放通80端口

在阿里云的控制臺中,對實例主機配置安全組,在入方向新增80端口的安全規則。配置如有疑問請參考官方說明。

1.2安裝nginx

由于筆者對nginx的版本沒有過多要求,此處采用dnf包管理方式安裝,此處筆者dnf安裝的是14.1版本。

dnf install -y nginx

安裝完成后,可以查看一下版本,以驗證是否正確安裝。

nginx -v
1.3nginx管理

基于dnf安裝的nginx已經做好了相關設置,可以使用nginx -s、systemctl對nginx進行便捷管理。
systemctl管理常用:

systemctl enable nginx #開機自啟動nginx systemctl disable nginx #開機禁止啟動nginx systemctl status nginx #查看nginx服務狀態 systemctl start nginx #開啟nginx服務 systemctl stop nginx #終止nginx服務 systemctl restart nginx #重啟nginx服務

相比之下,筆者還是更喜歡直接使用原生的nginx自帶命令
通過nginx -h 讀者可以查看到nginx常用命令及說明,筆者摘錄了一部分

nginx -V #查看nginx版本和配置項內容 nginx -t #檢查配置文件是否正確 nginx -c 配置文件路徑 #選用某一配置文件 nginx #啟動nginx nginx -s reload #重新載入配置文件 nginx -s stop #停止nginx
1.4nginx使用
systemctl start nginx #或者直接使用nginx 啟動nginx服務 systemctl status nginx #若看到Active變為active(running)則啟動正常 lsof -i:80 #可以看到80端口已經被nginx監聽了

上面一系列檢查確認nginx正常啟動后,可以到瀏覽器輸入公網地址或域名,看到nginx歡迎頁。
nginx默認配置中監聽80端口的配置項所在根位置,對應nginx程序安裝目錄下的html目錄。我們通過nginx -V可以看到,dnf安裝后,nginx安裝位置在/usr/share/nginx,配置文件在/etc/nginx/nginx.conf。(歡迎頁就是/usr/share/nginx/html/index.html)。
筆者還是更習慣將網站目錄設置在/var/www下,我們可以這樣來修改:

mkdir -p /var/www/mysite #創建網站目錄 cp /usr/share/nginx/html/* /var/www/mysite/ #筆者暫時沒網站,先用默認 cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak #備份配置文件 vim /etc/nginx/nginx.conf #打開配置文件 按i編輯 ##找到其中http->listen80的server項->修改root為/var/www/mysite; ##按ESC后輸入:wq 保存退出 nginx -t #測試配置文件是否修改正確 nginx -s relod #無誤后重新載入配置文件

大功告成,網站目錄修改成功。(準確說是80端口web內容映射的根目錄位置)

2.Mysql

2.1安裝mysql8.0

Centos8的dnf對懶人那是相當友好。mysql8.0的完全可以一條命令解決:

dnf install -y @mysql #@mysql模塊將安裝MySQL8.0及其所有依賴項
2.2啟動mysql
systemctl enable mysqld #配置mysql開機自啟動 systemctl start mysqld #啟動mysqld systemctl status mysqld #查看mysql是否啟動成功(active running)
2.3安全設置

運行如下腳本,可以設置mysql的root密碼,并引導你完成一些必要的安全設置。

mysql_secure_installation

首先,腳本會讓你選擇是否配置VALIDATE PASSWORD PLUGIN(密碼驗證插件),該插件用來檢查mysql用戶所設置的密碼強度,只有達到一定強度的密碼才允許被設置。如果你希望設置請輸入y或者Y回車,不想請直接回車。若選擇了配置,緊接著你將選擇所采用密碼驗證策略的級別:

低:密碼長度不少于8位
中:密碼長度不少于8位,必須是數字、大小寫字母、特殊字母混合。
強:密碼長度不少于8位,必須是數字、大小寫字母、特殊字母混合,需配合字典文件。

通常,我們選擇中級別即可。

其次,將要求用戶輸入兩次為root設置的新密碼,上一步驟設置的密碼驗證策略將發揮作用,并對用戶設置的密碼強度進行打分。設置好密碼以后,會提示用戶是否繼續采用密碼保護,選擇y回車。

緊接著,將詢問用戶是否刪除匿名用戶,選擇y回車。

默認情況下,MySQL有一個匿名用戶,允許任何人登錄MySQL,而不必創建用戶帳戶。這僅用于測試,或者安裝時更便利。但在部署生產環境之前,應該先刪除匿名用戶。

然后,將詢問用戶是否禁止以root身份遠程登陸mysql,選擇y回車。

通常,mysql中的root用戶應只允許通過本地登陸,而不能遠程登陸。這樣可以降低root用戶密碼被爆破的風險。

此后,將詢問用戶是否刪除測試數據庫,選擇y回車。

默認情況下,MySQL總有一個名為’test’的數據庫,允許任何用戶訪問。這僅用于安裝時的測試,但在部署生產環境之前,應該先刪除該數據庫。

最后,腳本詢問用戶是否現在重載 privilege tables,以使當前所有修改立刻生效。選擇y回車。

當我們在終端中鍵入:

mysql -uroot -p #回車輸入密碼并確認

即可登陸mysql。

3.Django

Django作為python得力的重量級web框架,一直備受青睞。

3.1安裝django
pip3 install django
3.2關聯mysql
dnf install mysql-devel pip3 install mysqlclient
3.3Django項目
django-admin startproject myproject #創建一個名為myproject的項目 cd myproject python3 manage.py startapp dg_mypr #創建一個應用dg_mypr用來映射數據庫

上述創建的應用,通過在models.py中利用Django的ORM映射數據庫的表和字段,一般為了統一我們會使該應用與數據庫同名。

打開項目下的配置文件settings.py

DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),} }#上述內容修改為mysql引擎,填入要連接的數據庫信息 #要注意的是 這里的數據庫必須是提前創建好的!!!!! DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': '數據庫名','USER': 'root','PASSWORD': '密碼','HOST': 'localhost',} } #在這里插入新創建的app INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','dg_mypr', #加入dg_mypr ] DEBUG = True #測試中打開Debug 生產環境請關閉 ALLOWED_HOSTS = [u'*'] #修改白名單為全通

修改完成后,保存退出。
(在dg_mypr中的models.py中定義ORM映射模型的步驟略)
改好配置文件并創建模型后,我們可以使用

python3 manage.py check #確認正常連接數據庫且語法正確(0 issues) python3 manage.py makemigrations #根據模型建立migration python3 manage.py migrate #根據migration在數據庫中建立對應的表

此后若需要應用新的ORM建模,可以在清庫后,刪除dg_mypr/migrations目錄下的__pycache__和0001_initial.py,重復上述兩步操作即可。
最后,我們可以在開著debug的情況下應用runserver跑一個端口測試一下:
(確保阿里云安全策略組已開放該端口)

python3 manage.py runserver 0.0.0.0:8080 #監聽8080端口建立項目服務

當瀏覽器訪問http://公網地址:端口 后,若載入了Django歡迎頁,則進入下一步驟。

4.uWSGI

4.1安裝uwsgi
python3 -m pip install uwsgi #安裝完成后測試一下 uwsgi --version
4.2寫項目配置文件

在項目的目錄 /var/www/mysite/myproject 下創建一個ini配置文件
并創建一個目錄uwsgi用來存放運行相關文件

touch myproject.ini mkdir uwsgi

在myproject.ini中寫入:

# myproject.ini [uwsgi] #內部轉發端口 只要不被占用可隨意找 需和nginx.conf里的轉發口匹配 socket = :8888 #django 項目目錄 chdir = /var/www/mysite/myproject #Django 項目下 wsgi.py 文件 module = myproject.wsgi master = true #進程數 processes = 4 vacuum = true #status文件,可以查看uwsgi的運行狀態 stats =%(chdir)/uwsgi/uwsgi.status #pid文件,通過該文件可以控制uwsgi的重啟和停止 pidfile =%(chdir)/uwsgi/uwsgi.pid #日志文件,通過該文件查看uwsgi的日志 daemonize =%(chdir)/uwsgi/uwsgi.log
4.3寫nginx配置文件

在nginx配置文件nginx.conf中加入

server {listen 8080; #暴露給外部訪問的端口 根據實際指定 確認阿里云策略組已放行server_name localhost;charset utf-8;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8888; #外部訪問端口就轉發到內部端口 要與項目配置文件里的一致}location /static/ {alias /var/www/mysite/myproject/static/; #項目靜態路徑設置} }

寫完后運行 nginx -t檢測一下是否有語法錯誤
然后運行nginx -s reload重新載入配置文件

4.4運行

回到項目目錄 運行 uwsgi --ini myproject.ini即可
可運行cat uwsgi/uwsgi.log查看一下是否正常啟動了uwsgi
當看到如下內容 說明正常啟動了

*** uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 1405) spawned uWSGI worker 1 (pid: 1413, cores: 1) spawned uWSGI worker 2 (pid: 1414, cores: 1) spawned uWSGI worker 3 (pid: 1415, cores: 1) spawned uWSGI worker 4 (pid: 1416, cores: 1)

此時,運行ps aux | grep uwsgi可查看到正在運行的uwsgi實例

4.5管理

倘若不撰寫管理腳本 需要重啟uwsgi時總是需要

$ ps -ax | grep uwsgi $ kill -9 [pid] $ uwsgi --ini myproject.ini

但是如果你按照第二步創建了uwsgi目錄及相關文件,你就可以優雅地管理uwsgi進程。

4.5.1安裝uwsgitop

uwsgitop是一款界面類似top的工具,用以查看指定uwsgi的全部工作進程情況。

pip3 install uwsgitop
4.5.2管理相關命令
#重啟uwsgi(常常出錯 還是執行stop以后start效率高) uwsgi --reload uwsgi/uwsgi.pid #終止uwsgi(原理是啟動uwsgi進程時會把pid寫入該文件) uwsgi --stop uwsgi/uwsgi.pid #查看uwsgi各進程工作狀況 uwsgitop uwsgi/uwsgi.status #追蹤uwsgi日志及動態刷新當前訪問記錄 tail -f uwsgi/uwsgi.log #啟動uwsgi uwsgi --ini myproject.ini

如果不便記憶,可將上述命令寫入sh腳本文件 快捷執行。

cd uwsgi echo "uwsgi --ini ../myproject.ini" >start.sh echo "uwsgi --stop uwsgi.pid" >stop.sh echo "uwsgitop uwsgi.status" >status.sh echo "tail -f uwsgi.log">log.sh chmod +x *.sh

可在瀏覽器訪問項目地址,測試效果。

綜上,筆者整理了自己部署環境的全過程,希望能夠對讀者有所幫助。后續如有其他內容,將繼續補丁修正。歡迎評論指正!

總結

以上是生活随笔為你收集整理的在Centos8上部署Django环境(Nginx+mysql+uwsgi)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美性猛片aaaaaaa做受 | www.色综合.com| 中文字幕第七页 | 超污网站在线观看 | 伊人久久成人网 | 奇米影视999| 超碰人人爱 | 日韩午夜视频在线观看 | 永久毛片| 成人在线网 | 亚洲私人网站 | 午夜久久久久久噜噜噜噜 | 日本体内she精高潮 男女视频在线免费观看 | 成人国产精品免费观看 | 四虎在线免费观看 | 国产精品亚洲欧美在线播放 | 精品裸体舞一区二区三区 | 亚洲欧美一二三 | 日本中文字幕在线视频 | 女人扒开屁股让男人桶 | 成人性视频在线 | 全部免费毛片在线播放 | 天天综合影院 | 88久久精品无码一区二区毛片 | 精品一区二区三区四 | 在线欧美 | 女同性做爰全过程 | 成人91免费视频 | 自拍偷拍亚洲一区 | 免费黄色网页 | 三级免费网址 | 影音先锋中文字幕在线视频 | 538精品在线视频 | 69影院少妇在线观看 | 婷婷激情久久 | 亚洲精品一区二区三区在线观看 | 被警察猛c猛男男男 | 亚洲综合影视 | 欧美成人性色 | 日韩欧美国产电影 | 超碰在线免费97 | 亚洲v欧美v另类v综合v日韩v | 欧美另类综合 | 国产高清精品一区二区三区 | 蜜桃成人无码区免费视频网站 | 黑人vs亚洲人在线播放 | 亚洲国产三区 | 偷偷操99| 免费黄色网址观看 | 麻豆影视在线观看 | 婷婷色基地 | 少妇高潮惨叫久久久久久 | 日本大尺度做爰呻吟舌吻 | 亚洲男人天堂av | 美女考逼| 奇米影视中文字幕 | 日本乱偷中文字幕 | 国产高清黄色 | 操亚洲女人 | 五月天黄色小说 | 91精品国产成人观看 | 67194午夜| 丰满饥渴老女人hd | 男女羞羞动态图 | 尤物国产精品 | 一本色道久久88加勒比—综合 | 亚洲国产综合视频 | 无码国精品一区二区免费蜜桃 | 美国福利片 | 激情男女视频 | 亚洲第一男人天堂 | 国产精品嫩草久久久久 | 国产操片| 日本在线一区 | 久久福利电影 | 久草视频免费看 | 蜜桃香蕉视频 | 可以免费观看av | 99久久国产热无码精品免费 | 丁香婷婷九月 | 欧美一级鲁丝片 | 日韩中文字幕在线观看视频 | 久久性爱视频网站 | 久久视频中文字幕 | 久久综合久 | 国产精品久久777777毛茸茸 | 欧美综合网 | 天天综合中文字幕 | 日本一区免费电影 | 午夜小视频在线 | 国产欧美日韩视频 | 久久综合九九 | 国产精品熟妇人妻g奶一区 a少妇 | 91高清国产 | 男女洗澡互摸私密部位视频 | 少妇性l交大片免潘金莲 | 国产性生活网站 | 免费的黄色小视频 | 久久久夜夜 |