使用Apache2部署Django项目

Linux系统 2018-08-07 1264

安装apache2

1.apt-get install apache2
查看apache版本号
apachectl -v
安装apache2-mod-wsgi
2.apt-get install libapache2-mod-wsgi-py3
安装完,进入apache安装目录
cd /etc/apache2/
ls mods-available/进入mods-available
但是有一个文件mod_wsgi.so文件偏旧
进入
cd /usr/lib/apache2/modules/
有一个文件是黄色的。
要编译安装更新。
下载安装 apt-get install apache2-dev
到github
https://github.com/GrahamDumpleton/mod_wsgi/archive/4.6.4.tar.gz下载
命令:wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.6.4.tar.gz
解压缩:tar xvfz 4.6.4.tar.gz
进入cd mod_wsgi-4.6.4/
ls
检查apxs地址
使用whreris apxs
检查python
使用whereis python
使用./configure --with-apxs=/usr/bin/apxs --with-python=/usr/bin/python3.5
使用make来编译
使用make install
编译成功后进入cd /usr/lib/apache2/modules/
发现哪个文件变颜色了。
再进入/etc/apache2
ls
查看mods-enabled/目录
使用ls mods-enabled/
如果有wsgi.conf说明启用了。
或使用命令:enmod wsgi启用wsgi

开始配置apache:
1.cd sites-available/
2.ls
3.vim blog.conf
4.配置

<VirtualHost *:80>    
    WSGIScriptAlias / /var/www/student_search/student_search/wsgi.py    
    <Directory /var/www/student_search/student_search>    
        <Files wsgi.py>    
            Require all granted    
            </Files>    
</VirtualHost>  

如果没有虚拟环境,上方代码已配置完成。
5.如果有虚拟环境
启用虚拟环境:source /var/www/VENV/bin/activate
使用命令:python -c 'import sys; print(sys.prefix)'可以打印出虚拟环境的地址
退出虚拟环境命令:deactivate
查看配置是否有问题
apache2ctl configtest
重启:apache2ctl restart
查看apache2的错误日志:cat /var/log/apache2/error.log
每次配置文件修改都要重启apache2服务器。
但是,访问admin还是会出现没有静态文件的情况。需要收集静态文件
进入项目文件修改settings.py
vim settings.py
在settings.py中添加STATIC_ROOT = os.path.join(BASE_DIR, 'static_collected')
进入虚拟环境,python3.5 manage.py collectstatic
在进入apache中修改blog.conf
cd /etc/apache2/sites-enabled/
//////////////////////////////
如果你使用的是sqlite3数据库,还会提示 Attempt to write a readonly database,同样要给www-data写数据库的权限

进入项目目录的上一级,比如project目录为 /home/tu/blog 那就进入 /home/tu 执行下面的命令(和修改上传文件夹类似)

sudo chgrp www-data blog
sudo chmod g+w blog
sudo chgrp www-data blog/db.sqlite3  # 更改为你的数据库名称
sudo chmod g+w blog/db.sqlite3
备注:上面的不要加 -R ,-R是更改包括所有的子文件夹和文件,这样不安全。个人建议可以专门弄一个文件夹,用它来放sqlite3数据库,给该文件夹www-data写权限,而不是整个项目给写权限,有些文件只要读的权限就够了,给写权限会造成不安全。

标签:Linux系统

文章评论

评论列表

已有0条评论