将django项目利用mod_wsgi+Apache部署到linux服务器上
–>
环境:阿里云服务器linux系统CentOS7,阿里云服务器自带的python2.7,mod_wsgi3.4,Apache(也叫httpd)2.4.6
购买阿里云服务器后,在自己电脑上 下载Xshell5软件,用来远程连接服务器,连接服务器的操作网上教程很多,这里不再累述,连接服务器后,自动进入了linux系统的命令行模式,(若此时打命令ls和其他命令都没有反应,可以先打命令
cd /home/ ,接着打 ls 命令就可以看到目录文件夹下的资源)。
接着就是配置服务器上的环境,(本来我的项目是用python3写的,后来在配置服务器上环境时,即使用上了virtualenv来控制python版本,结果还是出错,在查看日志后,发现项目刚开始调用python3,接着又去调用python2,实在令人费解,弄了很长时间也没解决,最后把项目改写成了python2版本),阿里云服务器CentOS7已经自带python2.7了,就不用再安装了。
首先输入:
yum install httpd httpd-devel -y
来安装apache,httpd就是apache服务,httpd-devel 是所依赖的,-y表示安装时的确定命令yes
接着输入:
yum install mod_wsgi
来安装mod_wsgi
接着在Apache的httpd.conf里加上这两句:(httpd.conf一般路径为 /etc/httpd/conf/httpd.conf ,可以 输入vi /etc/httpd/conf/httpd.conf命令来进入编辑。)
LoadModule wsgi_module modules/mod_wsgi.so Include /home/shawn/blog_project/apache_django_wsgi.conf
|
第一句话一般不变,第二句是你的项目路径下的一个 apache_django_wsgi.conf文件,需要改写成你自己项目的路径。
接着就是上传项目,点击Xshell软件上方的一个快捷键“新建文件传输”,它会自动帮你下载安装Xftp软件,此时你可以看见本机以及服务器上的文件夹,先进入服务器的 /home/目录,再选择本机的项目文件夹右键 传输即可上传到服务器/home/目录下,以下是我的项目目录,
在项目根目录下新建apache_django_wsgi.conf文件,用来连接apache与django项目,文件内容:
<VirtualHost *:80> DocumentRoot /home/demand_jango/demand_jango Alias /static/ /home/demand_jango/jiaowu/static/ Alias /static/admin/ /usr/lib64/python2.7/site-packages/django/contrib/admin/static/admin <Directory /> Require all granted </Directory> <Directory /usr/lib64/python2.7/site-packages/django/contrib/admin/static/admin> Require all granted </Directory> <Directory /home/demand_jango/jiaowu/static> Require all granted </Directory> <Directory /home/demand_jango/jiaowu/static> <Files yan.jpg> Require all granted </Files> </Directory> <Directory /apache> Require all granted </Directory> <Directory /home/demand_jango/demand_jango> <Files wsgi.py> Require all granted </Files> </Directory> WSGIDaemonProcess demand_jango python-path=/usr/lib64/python2.7/site-packages user=apache group=apache WSGIProcessGroup demand_jango WSGIScriptAlias / /home/demand_jango/demand_jango/wsgi.py </VirtualHost>
其中
DocumentRoot为项目路径, Alias /static/ 为静态文件夹路径,Alias /static/admin/为django下的admin路径,
<Directory /> Require all granted </Directory>
这些语句是给对应文件夹访问权限。
WSGIDaemonProcess demand_jango python-path=/usr/lib64/python2.7/site-packages user=apache group=apache 中
demand_jango 为项目名,python-path为python的site-packages路径,user=apache group=apache声明使用apache用户 组,
WSGIScriptAlias 后是项目下的wsgi.py文件路径。
在项目下的wsgi.py文件中加上一句话
import sys sys.path.append('/home/demand_jango') #项目路径
回到 Xshell软件中,在命令行 cd /home/下,输入 chown -R apache:apache demand_jango,
(demand_jango为项目文件夹名),让项目文件夹用户组变为apache,
再输入chmod -R 755 demand_jango 赋予项目文件夹及子目录读写权限,
再 cd ..回到系统根目录chmod -R home 让home目录有读写权限。
最后需要去修改一下项目下的setting.py文件中:
DEBUG =False
ALLOWED_HOSTS = ['59.110.154.238','locaclhost','127.0.0.1']
其中 '59.110.154.238'为你的服务器的公网IP地址。
对于阿里云服务器来说,还需要去阿里云平台上设置你的服务器的安全组里的安全规则,因为apache使用的是80端口,所以需要去安全规则里设置80端口可以被访问。
然后最好重启一下服务器让一些命令生效,重启完后输入
service httpd start
启动apache服务,就可以在浏览器上输入公网IP(利如:http://59.110.154.238/gdut/) 访问到服务器上的django项目了。
如果还是访问不了可以到输入 cat /etc/httpd/logs/error_log ,查看apache的错误日志文件,去 一 一解决。
本文来源 互联网收集,文章内容系作者个人观点,不代表 本站 对观点赞同或支持。如需转载,请注明文章来源,如您发现有涉嫌抄袭侵权的内容,请联系本站核实处理。
© 版权声明
文章版权归作者所有,未经允许请勿转载。