我爱编程

CentOS 7中使用Python3+apache+mod_ws

2018-01-03  本文已影响1432人  a7f994ad004f

环境:

1.准备工作

#yum install vim wget gcc gcc+ zlib-devel openssl-devel -y

我们先关闭防火墙和selinux,很多权限问题都是selinux引起的,等部署好了,可以再按需开启。

关闭防火墙
#systemctl stop firewalld

临时关闭selinux
#setenforce 0

永久关闭,编辑/etc/selinux/config文件,将SELINUX的值设置为disabled
#vim /etc/selinux/config
1.png

2.安装Apache

#yum install httpd-devel -y

启动apache
#systemctl start httpd

设置开机启动apache
#systemctl enable httpd

打开浏览器,输入你的CentOS IP地址,测试apache


2.png

3.编译安装Python-3.6.3

下载Python-3.6.3源文件
#wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

解压
#tar zxvf Python-3.6.3.tgz

编译安装
#cd /Python-3.6.3
#./configure --prefix=/usr/local/python36 --enable-shared --with-ssl
#make && make install

添加系统路径
# PATH=$PATH:/usr/local/python36/bin/
编辑/etc/profile 文件
#vim /etc/profile
在最后面添加如下代码:
export PATH=${PATH}:/usr/local/python36/bin/
保存退出后,重新加载环境变量
#source /etc/profile

4.编译安装mod_wsgi

回到用户目录
#cd

下载mod_wsgi
#wget https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.5.24

从github下载下来的文件是4.5.24,解压后就是mod_wsgi-4.5.24
#tar zxvf 4.5.24
#cd mod_wsgi-4.5.24

使用python3.6编译,一定是python3.6,不然后面会报错。
# ./configure --with-python=/usr/local/python36/bin/python3.6
#make && make install

5.安装MariaDB(MySQL)

#yum install mariadb-server mariadb-devel -y

启动mariadb
#systemctl start mariadb

设置开机启动mariadb
#systemctl enable mariadb

连接mysql
#mysql -u root

设置root账户密码,centos123是我设置的密码,注意后面有';'结尾。
> set password for 'root'@'localhost' = password('centos123');
Query OK, 0 rows affected (0.00 sec)

创建数据库,我创建的数据库是django
> CREATE DATABASE django DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

ctrl+c退出
> Ctrl-C -- exit!

6.安装Django-1.11.5

安装Django-1.11.5
#pip3 install django==1.11.5

验证django,如果出现版本号说明安装成功
# ./python3 -m django --version
1.11.5

安装PyMySQL,用来替代Python-MySQL
#pip3 install PyMySQL

进入/var/www/ 创建django项目
#cd /var/www/
# django-admin startproject web

修改__init__.py文件使用PyMySQL
# vim web/web/__init__.py
添加如下代码:
import pymysql
pymysql.install_as_MySQLdb()

编辑settings.py文件,修改数据为MySQL
# vim web/web/settings.py
注释掉sqlite,新增mysql
DATABASES = {
    #'default': {
    #    'ENGINE': 'django.db.backends.sqlite3',
    #    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #}
    'default':{
    'ENGINE':'django.db.backends.mysql',
    'NAME':'django',
    'USER':'root',
    'PASSWORD':'centos123',
    'HOST':'localhost',
    'PORT':'3306',
    }
}

运行web项目测试
#cd web
#python3 manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

January 03, 2018 - 06:13:45
Django version 1.11.5, using settings 'web.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
没有报错,说明运行正常。

7.配置httpd.conf和wsgi.py

编辑settings.py文件,加入CentOS主机IP
#vim web/settings.py
ALLOWED_HOSTS = ['192.168.43.128']


编辑wsgi.py文件
#vim web/wsgi.py
更改后的代码如下:
import os, sys
from django.core.wsgi import get_wsgi_application

sys.path.append('/usr/local/python36/bin/')    #将python3的目录加入系统路径
sys.path.append('/var/www/web/')    #将项目想入系统路径
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "web.settings")
application = get_wsgi_application()


编辑httpd.conf文件
#vim /etc/httpd/conf/httpd.conf

在文件最后,添加如下代码:
LoadModule wsgi_module modules/mod_wsgi.so

<VirtualHost *:80>    #监听80端口
    DocumentRoot "/var/www/web/"   #配置项目根目录
    WSGIScriptAlias / "/var/www/web/web/wsgi.py"   #链接到wsgi文件
    Alias /static/ /var/www/web/static/  #设置静态文件夹目录,不用可删除
    Alias /media/ /var/www/web/media/  #设置媒体文件目录,不用可删除
    <Directory /var/www/web/static>  #设置静态文件目录访问权限
        Require all granted
    </Directory>
    <Directory /var/www/web>   #设置项目目录访问权限
        AllowOverride all
        Require all granted
    </Directory>
    <Directory /var/www/web/media>   #设置媒体文件访问权限
        AllowOverride all
        Require all granted
    </Directory>
</VirtualHost>

重新启动httpd
#systemctl restart httpd

访问测试。


3.png

至此整个部署过程已经完成。
本文主要参考:http://www.mamicode.com/info-detail-1751342.html
感谢大神们将踩坑的信息分享了出来。

上一篇下一篇

猜你喜欢

热点阅读