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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

用Azure VM + Azure Database for MySQL搭建Web服务

發布時間:2023/11/27 生活经验 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Azure VM + Azure Database for MySQL搭建Web服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

仍然是一篇動手實驗,實驗演示如何在Azure的虛擬機內部署一個Web服務器,并且使用Azure Mysql PaaS作為本應用的數據庫。此實驗的目的一方面是為了演示Azure IaaS層和PaaS服務配合使用的常規操作,另一方面是為之后的文章打基礎,后續會以此應用程序和架構為基礎,介紹更多Azure的相關服務(如Azure Web 應用,Application Insights,等)。話不多說,直接進入正題吧。

實驗開始之前,先介紹下開發環境:

開發語言:Python(3.6); 項目框架:Django(2.0);Web服務器:Nginx;wsgi服務器:uwsgi.

一、本地配置連接Azure Database for MySQL。

為了方便后期服務器的配置,我們先在本地調試好程序,Azure Database for MySQL的對接比較簡單,遵循了Django的常規要求,首先我們在azure portal上創建一個mysql服務:(詳細創建過程可以參考官方文檔 https://docs.azure.cn/zh-cn/mysql/quickstart-create-mysql-server-database-using-azure-portal )

創建完成后查看服務器信息,記下服務器名稱和管理員登錄名。

然后回到Django項目里的settings.py文件,找到Database部分修改:

簡單介紹下參數:ENGINE表示Django調用數據庫的引擎,這里填 ‘django.db.backends.mysql’;NAME表示你要寫入和調用的數據庫的名稱,Portal上創建完Mysql后默認創建information_schemamysqlperformance_schemasys這四個數據庫,所以你需要在上一步創建服務完成后用工具連接到服務器自己為這個項目創建一個數據庫,這里我命名為‘djangopro’;USER和PASSWORD就是你登錄數據庫的用戶名和密碼,最后HOST指的是這臺server的地址,把上面圖里的數據庫名稱復制在這里就好。到這里還需要在Azure Portal配置下服務器級防火墻規則,去服務器的概述頁面,點擊左側的【連接安全性】,點擊【添加客戶端IP】,保存,這樣本機就可以訪問數據庫了(更多信息可以參考:https://docs.azure.cn/zh-cn/mysql/howto-manage-firewall-using-portal)。

最后因為我們修改了數據庫配置,需要重新cd 到你的文件目錄下運行:

>>python3 manage.py makemigrations
>>python3 manage.py migrate

>>python manage.py createsuperuser (修改完數據庫配置需要重新創建一個超級用戶才能登陸后臺admin頁面)

最后運行 python3 manage.py runserver 0.0.0.0:8000在本地瀏覽器查看程序,用剛剛創建的superuser登陸后臺寫入兩條數據,再去Azure數據庫查看對應的表有沒有寫進去,沒有問題的話這里本地調試就完成了。

二、創建VM,安裝Python3+Django+Nginx+uwsgi

首先去Azure Portal創建一臺VM(這里我用的是Ubuntu 18.10),然后遠程登錄到VM上安裝環境,

Python3:

sudo apt-get install python3-dev
sudo apt-get install libpcre3 libpcre3-dev
sudo apt install python3-pip

uwsgi:

sudo pip3 install uwsgi

安裝完uwsgi后需要測試一下,可以在當前目錄下創建一個test.py文件,編輯如下:

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

然后執行

uwsgi --http-socket :8001 --wsgi-file test.py

這里用到了8001端口,因此我們還需要在Azure VM 概述這里把這個端口打開(順便也可以把80端口打開,后面有用),到portal上添加【入站端口規則】:

?

?然后就可以在瀏覽器中輸入 這臺機器的IP地址:8001? 進行測試了。如果顯示Hello World說明uwsgi正常運行。

代碼環境:

#安裝Django
sudo apt install python3-django#驗證Djangodjango-admin startproject blog #創建blog項目
cd blog #進入項目
python3 manage.py makemigrations/migrate/runserver 0.0.0.0:8001 #運行django項目#修改settings.py
ALLOWED_HOSTS = ['VM的IP地址', 'localhost', '127.0.0.1']#安裝python plugin
sudo apt-get install -y uwsgi-plugin-python3
sudo apt-get install uwsgi-plugins-all#驗證uwsgi
uwsgi --http :8001 --chdir /home/ruchan/blog --wsgi-file blog/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9192
#瀏覽器輸入 VM IP地址:8001 出現Django的歡迎界面表示Django項目和uwsgi連接成功

Nginx:

sudo apt-get install nginx

三、本地項目部署到VM上

驗證程序:

首先先本地的程序文件包上傳到VM的某個位置,然后運行,運行過程中可能會報一些錯,得自己調試下環境,首先要保證VM的Python版本和Django版本與本地相同,其次可能會缺少一些依賴項,這個就需要看報的什么錯進行調試了,以下是我用到的命令:

pip3 install pymysql 
pip3 install django==2.0.2 #更新下Django版本,否則可能會有cannot import '' from django 的錯誤
sudo apt-get install libmysqld-dev
sudo pip3 install mysqlclient

?

這里還需要修改一下數據庫的配置,因為現在是VM訪問mysql,所以還需在azure portal上開啟一下允許Azure服務的訪問(當然這種一開所有Auzre服務都能訪問這個庫了,細顆粒的還是可以通過IP去做)

?

配置Nginx,uwsgi:

首先要去代碼的settings改下:

ALLOWED_HOSTS = ['VM IP地址', 'localhost', '127.0.0.1']
DEBUG = False #讓Nginx來處理靜態文件 STATIC_ROOT = os.path.join(BASE_DIR, '../collectedstatic')#指定下Django收集的靜態文件的目錄

然后修改下uwsgi的配置文件:

# hello_uwsgi.ini file
[uwsgi]# Django-related settingssocket = :8001# the base directory (full path)
chdir           = /home/ruchan/root0/firstsite #項目地址# Django s wsgi file
module          = firstsite.wsgi# process-related settings
# master
master          = true# maximum number of worker processes
processes       = 4# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
# pidfile for record run pid
pidfile        =pid.uwsgi
# 設置日志目錄
daemonize    = UWSGI.log

?

最后修改下Nginx配置文件:

server {listen 80;server_name VM IP;charset utf-8;location /static {autoindex on;alias /home/ruchan/root0/collectedstatic;#項目里Django收集的靜態文件的目錄地址}location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8001;#端口與uwsgi.ini配的一致}}

然后運行:

sudo /etc/init.d/nginx restart 
uwsgi --ini uwsgi.ini

最后瀏覽器輸入IP地址看一下效果吧:

總結:

這個架構還是比較簡單粗暴型的,首先沒有域名,其次VM高可用暫時沒考慮(這點是一個錯誤示范),不過沒關系,后續我們會慢慢完善這些方面的應用和相關內容的添加的。總的來說這是一類應用比較多的場景,自己做了一遍先碼在這里,希望能對大家有幫助~

?

轉載于:https://www.cnblogs.com/changruijun/p/10716760.html

總結

以上是生活随笔為你收集整理的用Azure VM + Azure Database for MySQL搭建Web服务的全部內容,希望文章能夠幫你解決所遇到的問題。

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