用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

#验证Django

django-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 settings

socket = :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

时间: 2024-10-09 18:06:00

用Azure VM + Azure Database for MySQL搭建Web服务的相关文章

python3.x +django + nginx + uwsgi 搭建web服务

最近一直在用django开发自己的网站.在开发和线上环境的对接过程中遇到了许多的坑.所以想以一个老鸟的经历来写一下怎么 搭建web服务 一.python3.x .django .nginx .uwsgi 的介绍: 哈哈自己baidu吧 二.安装python3环境 ----

Windows Server 2008搭建web服务

Windows Server 2008搭建web服务注意:关于Windows Server 2008均为真机搭建并非虚拟机!! 1.添加服务======以上安装完毕!! 2.1简单搭建WEB服务 验证输入 www.ljq.com 由于前面的DNS解析相应的IP地址上! 原文地址:https://blog.51cto.com/9616635/2426398

Win10搭建web服务实现文件共享

配置Internet Information Services服务,实现文件共享. 打开控制面板,找到程序和功能,启用或关闭Windows功能. 启用IIS服务,系统会自动搜索并安装IIS服务. 浏览器输入localhost测试一下. 配置Internet Information Services服务,我们需要用到本机的IP.首先,查看Win10系统IP 用“Win键”+“R键”调出运行程序,输入cmd,按回车键 ,再输入ipconfig,再按回车键查看Win10系统IP 添加网站.一定要保证物

golang 搭建 web服务

go语言可以很简单的搭建起一个web服务,重要的只需要仅仅几行,代码如下:package main import ( "fmt" "log" "net/http") func main() { http.HandleFunc("/", HelloWeb) err := http.ListenAndServe(":9090", nil) if err != nil { log.Fatal("erro

nginx 与 tomcat 组合搭建web服务

部分内容转自 http://www.cnblogs.com/naaoveGIS/ 1. Web服务 nginx是常用的web服务器,用于获取静态资源,类似的服务器还有apache. tomcat是基于java servlet 的 web 容器,用于获取动态资源. 一般的web服务架构:前端部署nginx,后端部署tomcat.用户访问nginx,静态资源nginx直接返回,动态资源的请求被nginx转发到tomcat,tomcat将处理完的结构返回给nginx,然后到浏览器. 2.Nginx简介

监控MySQL或Web服务是否正常

在工作中,我们往往利用脚本定时监控本地.远端数据库服务端或Web服务是否运行正常,例如:负载高.cup高.连接数满了等.... 方法一:根据端口 本地:netstat/ss/lsof ①   netstat –lntup|grep 3306|wc –l ②   ss –lntup|grep 3306|wc -l ③   lsof –I :3306|grep mysql|wc –l 远程:telnet/nmap/nc ①echo -e "\n"|telnet baidu.com 80|g

sorl6.0+jetty+mysql搭建solr服务

1.下载solr 官网:http://lucene.apache.org/solr/ 2.目录结构如下 3.启动solr(默认使用jetty部署) 在path路径下将 bin文件夹对应的目录加入,然后输入 solr start(或者 solr start -p port,指定端口启动).在浏览器中访问如下: 当然,还可以启动其他样例的服务,在example目录下有一个READEME.txt,如果感兴趣请看一下.命令格式如下: Solr example ------------ This dire

搭建web服务二

练习三-虚拟web主机 [[email protected] conf]# cd /var/www/html/[[email protected] html]# mkdir google tfft[[email protected] html]# vim google/index.html[[email protected] html]# vim tfft/index.html[[email protected] html]# cat google/index.html <h1> welcom

django框架搭建web服务

一.工具 环境:windows 7 python 2.7.7     下载地址:https://www.python.org/downloads/release/python-2713/   ps:这里提供的地址是当前的最新2.7版本,应该差别不大 django-1.11.3   下载地址:https://www.djangoproject.com/download/ 二.安装 1.python安装,下载好安装文件,一路next即可.安装完成之后,将安装目录加入到环境变量之中. 环境变量添加方法