Ubuntu 16.04 配置apache、django、mod_wsgi、mongodb

本文详细介绍了在Ubuntu环境下安装Python3.5的方法,包括从源码编译和使用包管理器两种方式,并提供了Django项目通过Apache与mod_wsgi模块部署的步骤,涵盖环境配置、依赖安装及防火墙设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装python3.5

一、方法一
wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz
tar -xzvf Python-3.5.4.tgz
cd Python-3.5.4
./configure --enable-optimizations --enable-shared --prefix=/usr/ (prefix安装路劲,此处将在/usr/lib/安装)
make
make altinstall #保留旧版本Python
>> python3.5 -V 出错的话需先安装pip,用python2 get-pip.py

二、方法二(推荐)
1、安装
sudo add-apt-repository ppa:fkrull/deadsnakes
>>报ubuntu add-apt-repository: command not found错误, 执行一下:
    sudo apt-get install python-software-properties
    sudo apt-get install software-properties-common
2、重新安装
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.5
在控制台输入python3.5(python3) -V查看版本

建立软连接:
1、将python3.5添加软连接到python上,这样每次输入python就默认使用python3.5(全局使用)
sudo rm /usr/bin/python --> 删除python2建立的连接
sudo ln -s /usr/bin/python3.5 /usr/bin/python --> 建立python3.5的软连接
2、cd /usr/bin ,查看建立的软连接(可忽略)
>> ls python* -lh
输出类似:
python -> /usr/bin/python3.5(python3.5)
python2 -> /usr/bin/python2.7
ps:只要找到安装目录,将其执行文件通过 ln -s 命令建立到 /usr/bin目录下,都可以达到这个目的

安装pip3

一、官网提供的方法-->> https://pip.pypa.io/en/stable/installing/
1、cd ~/software(随便一个工作目录)
2、curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
curl:强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具;
语法: curl [option] [url]
3、在当前目录下 python3.5 get-pip.py
>> pip3 -V 输出pip的版本信息
二、方法二
sudo apt-get install python3-pip

更新命令>> pip install -U pip

安装项目所需库

1、生成所需库的.txt文件
pip3 freeze >requirements.txt
2、安装
pip3 install -r requirements.txt

安装apache2

sudo apt-get install apache2
sudo apt-get install apache2-dev (提供编译模块工具apxs)
vi /etc/apache2/apache2.conf,在末尾添加 LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
安装目录:/usr/lib/apache2
配置文件:/etc/apache2/
配置django的虚拟主机位置:/etc/apache2/sites-available/
日志文件:/var/log/apache2/
django项目应放位置:/var/www(80端口) 或者 /var/新建文件夹/ 

拷贝项目Project-m到 /var/django/目录下

1、win下如果你用的putty
在项目目录下打开cmd:pscp Project-m.tar.gz 服务器登陆用户名@服务器IP:/var/django
2、保持putty与服务器的连接不断开,及保持与服务器的会话。
打开putty时,点击左侧的collections,右侧有一个 Seconds between keepalives(0 to turn off),将此改成非零数字,10或20或其他

安装mod_wsgi

方法一、官网 -->https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html
源码 --> https://github.com/GrahamDumpleton/mod_wsgi/releases(有各个版本,此处4.5.7)
1、wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.7.tar.gz
2、tar -xzvf 4.5.7.tar.gz mod_wsgi-4.5.7
3、cd mod_wsgi-4.5.7
4、分别执行>> which apxs、which python3.5查看位置,将其添加到下方
./configure --with-apxs=/usr/bin/apxs --with-python=/usr/bin/python3.5
5、vim config.log
>>:/apxs 或者 :/APXS 回车,看是否不为空, 按小写n查找下一个
>>:/python 或者 :/PYTHON 回车,看是否不为空
两个都不为空再执行 make && make install
6、安装python dev的头文件和静态库,如果提示找不到python.h
>> sudo apt-get install python3-dev
make install 后会提示 成功添加到 /usr/lib/apache2/modules/下,且提示修改它的权限
(后面有问题再改也可以)可能需到此目录下 执行chmod 755 mod-wsgi.so 

(可能不需要)在/etc/apache2/apache2.conf 末尾添加 LoadModule wsgi_module modules/mod_wsgi.so

在/etc/apache2/sites-available/配置Django虚拟主机,名字project.conf

<VirtualHost *:8080>
    ServerName django.test.com
    ServerAlias test.com
    ServerAdmin asfd@163.com

    DocumentRoot /var/django/Project-m/project

    Alias /static /var/django/Project-m/project/static
    Alias /templates /var/django/Project-m/project/templates

    <Directory /var/django/Project-m/project/static>
            AllowOverride None
            Require all granted
    </Directory>

    <Directory /var/django/Project-m/project/templates>
            AllowOverride None
            Require all granted
    </Directory>

    WSGIScriptAlias / /var/django/Project-m/project/wsgi.py
    <Directory /var/django/Project-m/project>
            <Files wsgi.py>
                    AllowOverride None
                    Require all granted
            </Files>
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ps:修改/etc/apache2/ports.conf ,在其中的
    Listen 80  
下面添加:
    Listen 8080
***   使此配置文件生效   ***
80端口的DocumentRoot是www
apache2 启动相关: sudo service apache2 start/stop/restart/reload
1、启动apache2服务: sudo /etc/init.d/apache2 start
2、使配置文件project.conf生效: sudo a2ensite project.conf
3、使默认配置文件失效(否则局域网内其他电脑不能通过IP地址访问): sudo a2dissite 000-default.conf
4、重启Apache: sudo /etc/init.d/apache2 restart

修改project下的wsgi.py文件

import sys
os.environ["DJANGO_SETTINGS_MODULE"] = "djangoWeb.settings"
sys.path.append('/var/DjangoWeb/venv/lib/python3.5/site-packages')
DIR = dirname(dirname(abspath(__file__)))
if PROJECT_DIR not in sys.path:
    sys.path.insert(0,DIR) #目录查找优先级,0最优先

最后就是在项目的settings.py文件中更改

ALLOWED_HOSTS = ['服务器ip']
ps: 没有域名就通过ip访问 http://服务器ip:8080/
测试远程主机是否能连通:telnet 服务器ip 8080
服务端测试:curl http://localhost:8080
多看日志.........

开启防火墙.

sudo apt-get install ufw
1、启用
    sudo ufw enable
    sudo ufw default deny 
    作用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)。
2、关闭
    sudo ufw disable 
 
3、查看防火墙状态
    sudo ufw status 
4、开启/禁用相应端口或服务举例
    sudo ufw allow 8080 允许外部访问8080端口
    sudo ufw delete allow 8080 禁止外部访问8080 端口
5、查看8080端口是否监听
     netstat -anp | grep 8080
     netstat -ntlp | grep 8080

MongoDB安装配置

1、创建数据库目录
sudo mkdir -p /data/MongoDB  # 创建数据库目录
sudo chmod 777 /data/MongoDB #更改目录权限
sudo mkdir -p /data/MongoDB/data  # 创建数据目录
sudo mkdir -p /data/MongoDB/log  #创建日志目录
2、vi /data/MongoDB/mongodb.conf  # 新建并编辑配置文件
    dbpath=/data/MongoDB/data  #数据存储目录
    logpath=/data/MongoDB/log/mongodb.log     #日志文件路径
    logappend = true #追加
    port=27017 #端口号
    fork=true #后台进程

3、启动mongod服务
mongod -f /data/MongoDB/mongodb.conf

ps:若要通过python 的os模块读取系统环境变量,只需在 /etc/apache2/envvars 中添加,是因为apache启动时是在此文件中读取相关环境变量

匹配完整日期(平年、闰年)的正则:

^((((19|20)\d{2})-(0?[13-9]|1[012])-(0?[1-9]|[12]\d|30))|(((19|20)\d{2})-(0?[13578]|1[02])-31)|(((19|20)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))-0?2-29))$

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值