1. 程式人生 > >CentOS 6.8 下安裝部署flask應用記錄

CentOS 6.8 下安裝部署flask應用記錄

一、安裝Apache

1.1直接執行:

yum install httpd -y

1.2將Apache設定為開機啟動及啟動、停止命令:

二、安裝Python 3.6.5:

Centos 6.8上自帶的python是2.6.6,而且yum線上更新會提示沒有可用的更新。因此需要手動下載3.6.5版本進行安裝。

注意:由於linux上很多的軟體都是依賴python的,所以舊版的python千萬不能解除安裝掉,例如yum就是依賴python的。只能安裝一個新版本的python,讓兩者共存,然後在實際使用過程中再使用新版本的python。

2.1安裝之前的準備工作:

先查詢以下有沒有安裝以下模組:

rpm -q openssl-devel

rpm -q gcc  

以下是安裝方法(安裝編譯環境):

yum -y install gcc(編譯原始碼包的時候用到)

yum -y install openssl-devel(安裝pip的時候用到

2.2下載Python 3.6.5安裝包:

2.3下載好了之後解壓:

tar -xzvf Python-3.5.3.tgz

2.4解壓好了之後開始配置安裝路徑:

首先新建一個資料夾用於存放python3

mkdir /usr/bin/python3.6.5    此為ezgame實際使用目錄

然後進入解壓的python-3.5資料夾執行下列操作(注意加上引數--enable-shared

):

./configure --enable-shared --prefix=/usr/bin/python3.6.5

2.5開始編譯

make

如果編譯過程中報錯,就不用繼續下一步了,請執行 make clean 清除掉編譯的檔案

2.6編譯好之後開始安裝編譯好的檔案

make install

2.7由於系統中預設有一個2.6版本的python,所以我們要把新版本的python做一個軟連線放在 /usr/bin中

先刪掉原來的python:

rm -y /usr/bin/python

或者備份下:

$ mv /usr/bin/python /usr/bin/python.bak

注意:python2.6千萬不要刪,刪了yum就無法恢復使用了!

再建立一個軟連線:

ln -s /var/local/python3/bin/python3.5 /usr/bin/python

這時輸入python -V 就可以看到python的版本已經是3.5.3版本

然後再建立一個python3的命令,這樣用python和python3都可以直接進入python環境:

ln -s /usr/bin/python /usr/bin/python3

同時為了pip可以方便的安裝python模組,也要把pip建立軟連線到/usr/bin中:

ln -s /var/local/python3/bin/pip3 /usr/bin/pip

好了,以上就完成了所有的安裝,可以順便更新一下pip:

pip install --upgrade pip

2.8.由於yum是依賴於老版本的Python,所以安裝了新版之後,yum就無法使用了,解決方法:

vim /usr/bin/yum

進入到yum中修改yum的註釋,

將 #!/usr/bin/python

修改為#!/usr/bin/python2.6

OK儲存退出。

完成!

建立python虛擬環境

Python自帶虛擬環境

# if是Debian/Ubuntu, 需先apt-get install python3-venv

#先在終端進入想要建立的環境環境的目錄

python -m venv pyenv #venv模組只有python3才有,2木有

#啟用虛擬環境

pyenv/Scripts/activate.bat #windows

source pyenv/bin/activate #linux

#退出虛擬環境

pyenn/Scripts/deactivate.bat #windows

pyenv/bin/deactivate #linux

需求檔案requirements.txt的建立及使用

python專案中必須包含一個 requirements.txt 檔案,用於記錄所有依賴包及其精確的版本號。以便新環境部署。

在虛擬環境中使用pip生成:

(venv) $ pip freeze >requirements.txt

安裝或升級包後,最好更新這個檔案。

在新的虛擬環境中可以執行如下命令生成一個新的副本:

(venv) $ pip install -r requirements.txt

三、安裝mod_wsgi

yum install mod_wsgi -y

四、按照網路教程,配置apache 的 http.conf 檔案以及wsgi檔案:

4.1 http.conf配置大概有兩種寫法,稍有差別,應該都可以使用,以下是其一:

<Directory "/var/www/html">     這個節點後面,注意是與這個節點並列,不是這個節點的裡面。增加如下程式碼:

WSGIScriptAlias /test /var/www/flasktest/flask.wsgi

<Directory /var/www/flasktest>

  Order allow,deny

  Allow from all

</Directory>

其中 /test 是在瀏覽器訪問時的字尾

http.conf 的另一種配置方法是:

<VirtualHost *:80>

    WSGIScriptAlias /flask /var/www/flasktest/flask.wsgi

<Directory /var/www/flasktest>

  Order allow,deny

  Allow from all

</Directory>

</VirtualHost>

為了測試,可以先只配置 wsgi 檔案,看看 apache+wsgi是否能正常訪問,此時的wsgi配置可以如下:

def application(environ,start_response):

   status='200 OK'

   output='Hello wsgi!'

   response_headers=[('Content-type','text/plain'),('Content-Length',str(len(output)))]

   start_response(status,response_headers)

   return[output]

配置完上述兩個檔案後,可以重啟下httpd 服務,然後訪問測試,如果能返回“Hello wsgi!”則說明配置正確。此時可以引入flask應用:

1、修改wsgi檔案,完整內容如下(這裡的views就是當前目錄的views.py檔案,看到網上很多文章還要import sys,再append當前目錄,其實如果在同一目錄下的話就不需要了):

from views import app as application

2、在wsgi同級目錄下增加 views.py檔案,其完整內容如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

   return "Hello Flask"

if __name__ == '__main__':

    app.run(host="0.0.0.0")

配置完 Apache + wsgi + flask,訪問的時候可能會出現如下錯誤:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/2.2.15 (CentOS) Server at 124.206.192.133 Port 8000

此時可以看看Apache的日誌檔案,可能的原因是 Apache 預設還是使用 2.6.6版本的python,另外mod_wsgi的版本可能也要升級到與python3匹配。

至此發現centos自帶的apache、wsgi版本都較低,需要升級.....!!!!!

升級過程:

1、去apache官網下載最新的 apache、apr-1.6.3.tar.gz、apr-util-1.6.1.tar.gz

2、刪除舊版的apache(2.2.15):

yum -y remove httpd

yum -y remove apr-1.3.9-5.el6_2.x86_64

3、在開始編譯安裝之前,需要先安裝相關的開發包組以及其他的一些依賴包,這些包有下面的這些:

# 安裝開發包組

[[email protected] src]# yum groupinstall "Development tools"

# 安裝相應的devel包

[[email protected] src]# yum install openssl-devel pcre-devel expat-devel

當然,如果一開始不知道缺少哪些包的話,可以先進行編譯安裝,然後根據錯誤提示再將缺少的包安裝上,這樣也是可以的。

4、因為httpd 是依賴與apr的,所以應該先編譯apr 以及apr-util,然後再安裝 httpd。

我們的原始碼檔案存放的路徑是/usr/local/src,我們編譯安裝的路徑是 /usr/local/apr,/usr/local/apr-util,/usr/local/httpd24.

# 編譯 apr

[[email protected] apr-1.6.2]# ./configure --prefix=/usr/local/apr  

# 安裝 apr

[[email protected] apr-1.6.2]# make -j 2 && make install   

# 編譯apr-util

[[email protected] apr-util-1.6.0]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/    

#安裝apr-util  

[[email protected] apr-util-1.6.0]# make -j 2 && make install

安裝apr-util過程中可能報錯,如果跟expat相關,可以先安裝expat庫(成功後繼續安裝apr-util):

yum install expat-devel

5、首先給httpd 建立預設的系統使用者,由於之前已經安裝過apache,通過命令檢視apache使用者和apache組已經有了,此處不用再建使用者和組:

cat /etc/password

cat /etc/group

6、編譯安裝httpd ,可以自己指定需要開啟的功能列表,然後指定程式安裝的路徑,我們這裡指定的安裝路徑還是 /usr/local/httpd24

# --prefix  指定程式需要安裝的路徑

# --enable  指定啟用的模組  

# --with-apr 指定apr的路徑    

# --with-apr-util  指定apr-util 的路徑

[[email protected] httpd-2.4.27]# ./configure --prefix=/usr/local/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

# 安裝 httpd  

[[email protected] httpd-2.4.27]# make -j 2 && make install

ezgame在執行make安裝的時候有報錯:

configure: error: pcre-config for libpcre not found. PCRE is required and availa

解決辦法:

yum  install pcre-devel  -y

接下來報了另一個錯:

/libapr-1.la -lrt -lcrypt -lpthread -lcrypt

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreat

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCod

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDe

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree'

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementH

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'

/usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacte

collect2: ld returned 1 exit status

make[2]: *** [htpasswd] 錯誤 1

make[2]: Leaving directory `/usr/local/src/httpd-2.4.33/support'

make[1]: *** [all-recursive] 錯誤 1

make[1]: Leaving directory `/usr/local/src/httpd-2.4.33/support'

make: *** [all-recursive] 錯誤 1

找了半天資料,大概有三種說法:

一是把apr和apr-util拷貝到 解壓後的 httpd/srclib路徑下,然後重新編譯、安裝,測試依然報錯。

另外一種方法(沒有測試,因為在/usr/lib/ 下沒找到libm.a、libm.so等):

1、apache的編譯選項上增加 --libdir=/usr/lib64 引數,如:

./configure --prefix=/home/apache2 --enable-modules=most --enable-mods-shared=max --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite --libdir=/usr/lib64

2、重新連結lib庫

mv /usr/lib/libm.a /usr/lib/libm.a.bak

mv /usr/lib/libm.so /usr/lib/libm.so.bak

mv /usr/lib/libexpat.so /usr/lib/libexpat.so.bak

ln -s /usr/lib64/libm.a /usr/lib/libm.a

ln -s /usr/lib64/libm.so /usr/lib/libm.so

ln -s /usr/lib64/libexpat.so /usr/lib/libexpat.so

第三種說法(ezgame測試有效):

終於在彎彎的一個論壇找到了答案。原來是apr apr-util 用了最新的1.6版本(之前1.6版本在centos7編譯安裝apache沒有問題)

降低了版本,用回1.5版本正常解決

apr-1.5.2.tar.gz apr-util-1.5.2.tar.gz

升級完Apache後,配置與之前的版本稍有不同,重新配置:

1、啟用rewrite:

LoadModule rewrite_module modules/mod_rewrite.so

2、啟用Virtual hosts

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

3、配置 Virtual hosts,在/usr/local/httpd24/conf/extra 路徑下的 httpd-vhosts.conf檔案裡:

<VirtualHost *:80>

    WSGIScriptAlias /flask /var/www/flasktest/flask.wsgi

<Directory /var/www/flasktest>

  Order allow,deny

  Allow from all

</Directory>

</VirtualHost>

4、新增:

LoadModule wsgi_module modules/mod_wsgi.so

5、Apache2.4預設拒絕所有連線,修改http.conf檔案:

<Directory />

    AllowOverride none

    Require all denied

</Directory>

apache安裝完之後用 service httpd start 的方式無法啟動服務,會提示無法識別的服務,此時需要手動註冊httpd服務:

1、

cp /usr/local/httpd24/bin/apachectl /etc/rc.d/init.d/httpd

2、

ln -s /etc/init.d/httpd /etc/rc.d/rc5.d/S85httpd

3、編輯 /etc/rc.d/init.d/httpd,新增以下注釋資訊:

# chkconfig: 345 85 15

# description: Activates/Deactivates Apache Web Server

4、執行chkconfig --add httpd

接下來編譯安裝mod_wsgi4.6.4版本:

1、

./configure --with-apxs=/usr/local/httpd24/bin/apxs --with-python=/usr/bin/python3.6.5/bin/python3.6

2、

make

執行make後最終報錯:

src/server/wsgi_python.h:24:20: fatal error: Python.h: No such file or directory

...........

...........

make: *** [src/server/mod_wsgi.la] 錯誤 1

最後做了下面兩步操作後make成功:

安裝之後的python3開發庫在/usr/bin/python3.6.5/lib目錄下,系統是無法找到的,啟用python3.6.5開發庫可以配置系統庫載入目錄,命令如下:

echo "/usr/bin/python3.6.5/lib"  >> /etc/ld.so.conf.d/python3.6.5.conf

ldconfig

./configure --with-apxs=/usr/local/httpd24/bin/apxs --with-python=/usr/bin/python3.6.5/bin/python3.6

 ##一定要是python3.6,不能是python3,一開始寫的是python3導致make失敗

備忘:

修改埠:

1、修改 /usr/local/httpd24/conf/httpd.conf 中的監聽埠(兩處):

Listen 8000

ServerName localhost:8000

2、修改 /usr/local/httpd24/conf/extra/httpd-vhosts.conf中的

<VirtualHost *:8000>

相關推薦

CentOS 6.8 安裝部署flask應用記錄

一、安裝Apache 1.1直接執行: yum install httpd -y 1.2將Apache設定為開機啟動及啟動、停止命令: 二、安裝Python 3.6.5: Centos 6.8上自帶的python是2.6.6,而且yum線上更新會提示沒有可用的更

centos 6.8 安裝redmine

use 參數 訪問 .so option ble 註釋 環境 -a 一、實驗環境 centos6.8 64位 所需安裝包: ruby-2.3.4.tar.gz、rubygems-1.8.25.tgz、redmine-2.3.2.tar.gz 二、安裝步驟 1、安裝必要的

CentOS 6.8 安裝mysql-5.6

centos6.8 mysql 源碼CentOS 6.8 下安裝mysql-5.6安裝環境:CentOS release 6.8 (Final) percona-server-5.6.29-76.2安裝依賴庫和工具yum -y install gcc gcc-c++ libgcrypt openssl op

centos6.8安裝部署LNMP(備註:nginx1.8.0+php5.6.10+mysql5.6.12)

debug pcr chkconfig c++ sam libjpeg php 執行 btool 在平時運維工作中,經常需要用到LNMP應用框架。以下對LNMP環境部署記錄下: 1)前期準備:為了安裝順利,建議先使用yum安裝依賴庫[root@opd ~]#yum ins

CentOS 6.8編譯安裝MySQL 5.6.14

CentOS 6.8下編譯安裝MySQL 5.6.14 概述: 通過原始碼安裝高版本的5.6.14。 正文: 一:解除安裝舊版本 使用下面的命令檢查是否安裝有MySQL Server rpm -qa | grep mysql 有的話通過下面的命令來解除安裝掉 目前我們查詢到的

CentOS 6.8編譯安裝MySQL 5.6.30

概述: CentOS 6.4下通過yum安裝的MySQL是5.1版的,比較老,所以就想通過原始碼安裝高版本的5.6.14。 正文: 一:解除安裝舊版本 使用下面的命令檢查是否安裝有MySQL Server rpm -qa | grep mysql 有的話通過下面的命令來解除

32和64位的CentOS 6.0 安裝 Mono 2.10.8 和Jexus 5.0

正常 nginx ng- 錯誤 保存 模塊 永久 www 要點 轉載:http://www.cnblogs.com/shanyou/archive/2012/01/07/2315982.html CentOS是一個基於RHEL的Linux發行版,其目的是為了提供

centos 6.4安裝與設置apache服務器

sta process vra 關閉selinux 安裝apache tps all cnblogs tar 1.打開虛擬機開啟centos 6.4系統後進入root用戶下,打開終端,輸入#yum -y install httpd,安裝apache服務器。   輸入命令後到

CentOS 6.x安裝VMWare-tools操作指引

vmware tools linuxCentOS 6.x下安裝VMWare-tools操作指引=====第一步:掛載安裝光盤先點擊vmware界面上的安裝vmware-tools,然後掛載光盤mount /dev/cdrom /mnt/第二步:copy壓縮文件到本地目錄cp /mnt/VMwareTools-

CentOS 6.x 安裝Zabbix Agent 3.2.x 操作指引

zabbix agent linuxCentOS 6.x 下安裝Zabbix Agent 3.2.x 操作指引=====第一步:安裝rpm包rpm -ivh http://http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-agent-3.2.0-1.

CentOS 6.5安裝KVM

centos 6.5下安裝kvmCentOS 6.5下安裝KVM一、檢查CPU是否支持虛擬化。(在主板BIOS中開啟CPU的VirtualizationTechnology)# grep -E -o ‘vmx|svm‘ /proc/cpuinfovmx二、基礎環境配置1.安裝KVM軟件包# yum -y gr

CentOS 6.5安裝Confluence 5.4

shell visible pri fail 文件中 false centos 6 chm var 1、主機信息 IP Confluence Server 10.64.10.2 MySQL Server 10.64.10.11 OS Conflu

CentOS 6.8 編譯安裝MySQL5.5.32

nec 註意 說明 copyright container 日誌 perl min mysqld MySQL多實例的配置 通過上文 CentOS 6.8 編譯安裝MySQL5.5.32 ,我們完成了編譯安裝,接下配置多實例 本圖借鑒徐亮偉"思維簡圖" 5,添加多實例目錄

centos 7環境安裝部署zookeeper

近一直在看zookeeper的知識,有所收穫,打算寫些一些關於zookeeper的部落格,也當做是自己的複習和筆記。 在上一篇 部落格中簡單地介紹了centos 7 下如何安裝jdk,這一篇將介紹如何在centos中安裝zookeeper並做叢集部署。 1、下載zookeeper安裝包,百度一下

Linux (Ubuntu 和 centos 6.x) 安裝 zsh

        zsh和bash一樣,是一種Unix shell,但大多數Linux發行版都預設使用bash shell。但Zsh有強大的自動補全引數和自定義配置功能, 強!強!強!, 這裡我們只介紹安裝      

Centos 6.x安裝Zabbix 3.4

    一、關閉SELINUX getenforce  setenforce 0 #把SELinux關閉,此操作為臨時關閉,重啟後失效 vim /etc/selnux/conf 修改為disabled,此操作為永久關閉,重啟後生效。  

CentOS 6 5 安裝MySQL 5 7 12,使用官網下載的rpm安裝

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

CentOS 6.8 原始碼安裝RabbitMQ

一、安裝依賴環境 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel 二、安裝erlang 1.下載所需原始碼,此

centos 6.8搭建PPTP VPN伺服器

centos 6.8下搭建PPTP VPN伺服器 一. 通過yum安裝 ppp和pptpd yum -y install ppp pptpd 二. 配置pptpd相關引數 2.1 配置/etc/pptpd.conf 找到下面兩行,去掉註釋,並修改IP

centOS 6.8,ipconfig -a命令無效的變通方法

51cto blog src watermark fig article .net ESS mark 使用ip addr命令。鳴謝:https://blog.csdn.net/q290994/article/details/77477795centOS 6.8下,ipco