深度模型部署上云——Apache初步

这是一个系列教程的第二篇(https://www.pyimagesearch.com/2018/02/05/deep-learning-production-keras-redis-flask-apache/
实验基础环境:ubuntu 16.04 + apache 2.4.18 详细环境信息请参照同系列的环境配置教程:https://blog.csdn.net/hikkilover/article/details/80899133
下面这篇教程采用递进的结构,从Hello World开始,一步步地讲解如何把apache用起来,发布一个网页或是提供一个web服务。我们的内容集中在apache的配置,其他的一概不涉及。

如何让Apache开始工作?

apache2默认端口号为80,这也是被规定专门用于处理httpd请求的端口,一般来说,一台比较clean的服务器或是云主机,端口80是可用的,但如果你的实验环境比较险恶,用netstat -lnp|grep 80命令查看后,发现这个端口已经被一个莫名的进程占用(我实验用的服务器上的80端口就被一个tcp listen进程占用),出现了这种情况,我们就要修改Apache2 的默认端口。
服务器默认的apache2 配置文件全部在 /etc/apache2/ 目录下,要修改默认端口需要如下的操作,这些文件的修改一般需要服务器的root权限。
step1:修改ports.conf

vim /etc/apache2/ports.conf
Listen 80 -> Listen 8080

step2:修改sites-enabled/000-default.conf

vim /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>  ->  <VirtualHost *:8080>

step3:重新启动apache2服务

service apache2 stop
service apache2 start
(查看apache2的运行状态) service apache2 status

正常情况下,这时打开浏览器,访问 http://(服务器外网IP):8080 就可以看到apache2的引导页面。

如何用Apache发布静态网页?

apache2 默认的主页(默认发布文件)保存在 /var/www/html/ 中(名为index.html),下载到本地查看,可以看到其内容就是默认的引导页面,为了让apache2 能部署用户自己的网页,我们不妨使用 linux 的软连接机制(sym-link)将自己写的工程镜像到该目录下,这里我们假设该目录名为webtest。

sudo ln -s  /original/path/of/webtest webtest

(关于linux的文件连接机制,有软硬之分,二者的区别很清晰,自行百度即可。)
只是简单地把文件塞进去,apache2并不会发布,要让apache2发布我们的网页,还需要修改它的配置文件。
step1:修改 000-default.conf

sodu vim /etc/apache2/sites-enabled/000-default.conf

# 在DocumentRoot一行后面,添加
    <Directory /var/www/html/webtest>
        Allow from all
    </Directory>

step2:重新启动apache2服务

(sudo) service apache2 restart

这时我们用 http://(服务器绝对IP):8080/webtest就可以访问到自己的静态网站。

如何用Apache发布基于python的web应用?

让apache发布web应用是比较麻烦的一件事,发布用python写的应用就更加麻烦,需要额外给apache打一个mod—— mod_wsgi,具体的安装流程参考本系列环境配置一篇,这里不多言。
在使能了mod_wsgi,并确定它基本能用后,我们需要修改000-default.conf的内容,把发布的对象定向到我们的应用目录下。
step1:使能mod_wsgi

sudo a2enmod wsgi

step2:编辑 000-default.conf

sodu vim /etc/apache2/sites-enabled/000-default.conf

# 在文件首部,添加如下两个环境变量,这里必须用当前所用虚拟环境的根目录和包目录
# 这两个路径其实可以参考mod_wsgi-express module-config的结果来设置
WSGIPythonHome "/.virtualenvs/env_name"
WSGIPythonPath "/.virtualenvs/env_name/lib/python3.5/site-packages"
# 在VirtualHost段内,DocumentRoot一行后面,添加如下两个变量
# 前者可以简单地视作应用的名称与线程数,后者则明确地指向了一个wsgi文件,这个文件可以视为apache部署应用的入口。
WSGIDaemonProcess app_name threads=10
WSGIScriptAlias / /var/www/html/webtest/app_name.wsgi
# 在Directory段使用如下的设置,这样的设置使你的服务“来者不拒”,可以被外网任意IP访问。
        <Directory /var/www/html/webtest>
            WSGIProcessGroup app_name
            WSGIApplicationGroup %{GLOBAL}
            Order deny,allow
            Allow from all
        </Directory>

step3:重新启动apache2服务

(sudo) service apache2 restart

至于基于wsgi和python的web应用怎么写,那是另外一个问题,我们在这里不做探讨,单就apache的配置而言,上面的操作完成后,理论上apache就已经可以发布你的web应用程序了。根据你自己的应用逻辑,可以用浏览器或curl等工具进行访问测试。


主要参考:(https://www.pyimagesearch.com/2018/02/05/deep-learning-production-keras-redis-flask-apache/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值