设为首页 收藏本站
查看: 736|回复: 0

[经验分享] ubuntu下配置Apache+mod

[复制链接]

尚未签到

发表于 2017-12-25 07:12:08 | 显示全部楼层 |阅读模式
  经过了一个星期的摸索,查找资料以及实验,我搭建的环境基本能用(还有就是Django后台的静态文件加载的问题)
  这里面只是介绍一下我的过程,因为对应Apache还不是很熟练,特别是配置文件。只能供大家参考一下。
  网上的资料比较多,但是可能不适合自己,只能取其精华,但是没经验的话,不知道哪里是精华,所以就多试试吧。写这个博客,也是对自己这一段时间坚持学习的鼓励。
  转发,请标记出处:http://www.cnblogs.com/if-then/p/6959730.html
  环境 Ubuntu16.04LTS
  Apache 2.4.25
  mod_wsgi :mod_wsgi-4.5.15.tar.gz
  Django :1.8
  Apache 搭建:
  Apache搭建有两种方式
  一,下载源码http://archive.apache.org/dist/httpd/,编译安装的方式
  这种方式呢,我下载的是httpd-2.4.25.tar.gz
  源码安装还是要看官方文档,它对应系统有依赖包主要有 apr-util-1.5.4 、pcre-8.38,下载编译前看看文档的注意事项,少走弯路!
  二,sudo apt-get install apache2
  这种安装方便,但是我安装完,配置文件与源码安装的方式不一样,要在site-enable下,而且是虚拟机方式的配置文件,我网上找资料的时候,多半是看到的httpd.conf配置的,所以这个没深入看。但是看到一个博客下的评论,有人是这样配置的,跟我的配置意思一样,可以借鉴,如下:
  <VirtualHost *:80>
  DocumentRoot /var/other/django/ibooklist/
  ServerName *.chedushi.com
  ServerAlias *.chedushi.com
  WSGIScriptAlias / /var/other/django/ibooklist/ibooklist/wsgi.py
  Alias /media/ /var/other/django/ibooklist/media/
  Alias /static/ /var/other/django/ibooklist/static/
  <Directory /var/other/django/ibooklist/static/>
  Order deny,allow
  Allow from all
  </Directory>
  <Directory /var/other/django/ibooklist/media/>
  Order deny,allow
  Allow from all
  </Directory>
  <Directory /var/other/django/ibooklist/>
  Options +ExecCGI
  Order allow,deny
  Allow from all
  </Directory>
  </VirtualHost>
  网上资料有的写配置这个,和我配置httpd.conf文件意思一样(此段补加的20170613)。我只能不严谨的说应该差不多,^_^
  安装方式还是比较简单,不多说了!只有安装完,访问127.0.0.1 能看到 it works! 就行了。
  安装mod_wsgi
  注意: 安装这个宝贝也需要一些依赖,也要先看官方文档!
  下载了mod_wsgi-4.5.15.tar.gz
  解压
  tar -zxvf mod_wsgi-4.5.15.tar.gz
  进入目录,./configure
  遇到一个问题 /bin/sh: 1: apxs: not found
  百度有的说要安装httpd-devel
  但在Apache网站上,只有for fedora and  Centos 的rpm包
  本U没有对应的包
  再查查看~~~转发,请标记出处:http://www.cnblogs.com/if-then/p/6959730.html
  上官方文档,也时有写的
  If you are running Debian or Ubuntu Linux with Apache 2.4 system packages, regardless of which Apache MPM is being used, you would need both:
  apache2 (此包应该不用,如果安装了相当于安装了一个应用服务,所以你在试的时候先装下面的dev,如果不行,再装吧)
  apache2-dev
  看来一切都得看官方文档的靠谱!!将这个两个用  apt-get install 安装上
  再编译~~~结果还是不行~~我泪~~~
  报错如下

  • /usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_
  • 32 against `a local symbol' can not be used when making a shared object; rec
  • ompile with -fPIC
  这是要重新安装python2.7 而且重新编译 用-fPIC参数(这里注意,安装的时候如果你用的是sqlite3的数据库,这里就一块弄了,否则django应用都起不来,先安装一个sudo apt-get install libsqlite3-dev,这样再./configure --prefix=/usr/local/ CFLAGS=-fPIC ,  make的时候就不会提示
  Python build finished, but the necessary bits to build these modules were not found:
  _bsddb             _sqlite3           _tkinter    ........
  需要单独安装的这个提示了)
  我因为这个和sqlite3安装的事情,多安装了好几遍python2.7 因为时个老电脑1cpu2核的,结果编译耗费了老久时间了~~~~
  命令如下 进入python源码目录下
  ./configure --prefix=/usr/local/   CFLAGS=-fPIC  ###ps:--enable-optimizations 这个参数可加可不加,加上的话make的时间长,我经过多次的话,后来在                                                                              test_logging 的过程就报错了,网上没查到,可能跟我的主机名有关,但不确定)
  make
  sudo make install
  安装完的路径为  /usr/local/lib/下的python2.7
  然后再安装mod_wsgi
  安装完后,会在Apache 安装目录/usr/local/apache24/下的文件夹modules中存在 mod_wsgi.so,(主要就是为了它!!,网上有说下载so文件,拷贝到这个文件夹下,但我没找到哪里下载)
  到此安装算成功了,但是我们还是测试一下,看可以用不
  在 /usr/local/apache24/cgi-bin/下 建立一个测试脚本 test.wsgi(名字随便,叫wsgi.py更好吧,因为Django就是用这个呢!)
  def application(environ, start_response):  
  status = '200 OK'   
  output = 'Hello World!'  
  response_headers = [('Content-type', 'text/plain'),  
  ('Content-Length', str(len(output)))]  
  start_response(status, response_headers)  
  return [output]  
  以上脚本在官网上也有,我是在谁的博客里复制了一份。复制粘贴的时候,检查一下格式是否符合python
  然后配置 sudo  vi /usr/local/apache24/conf/httpd.conf
  找到一堆LoadModule  XXXXXXX的地方,增加一条
  LoadModule wsgi_module modules/mod_wsgi.so
  在 ScriptAlias /cgi-bin/ "/usr/local/apache24/cgi-bin/"  #当然了 注意路径可能不一样
  加上
  ScriptAlias /test "/usr/local/apache24/cgi-bin/test.wsgi"    #起了一个test的别名指向这个文本,可以在浏览器里访问http://127.0.0.1/test
  如果出现Hello World!,就成功了,如果没有,再加一窜下面的访问控制权限的!
  <Directory "/cgi-bin/">
  <Files test.wsgi>
  Require all granted
  </Files>
  </Directory>
  到这,环境应该就没问题了,希望你能够顺利到这!
  安装Django项目
  这里要先说的是,我对与配置文件还不是很熟悉,怎么配置是最小及最优还不是很了解,只能说是能用
  到这呢,就只是配置文件的事情了,如果你的python加载模块都正常的话,如果不正常,你看缺少什么模块就加什么,用pip安装很简单,但是pip建议还是源码安装吧
  还有就是不要装多个python,就留一个就行了。
  这里面主要先改一下
  DocumentRoot "/usr/local/apache24/htdocs" 路径换成你的Django的路径,
  指向项目目录,不要指向应用下,如 /usr/app/mystie/   
  mysit
  ├── dbshell.bat
  ├── db.sqlite3
  ├── manage.py
  ├── migrate.bat    #bat文件是我在window上编写程序时写的,可以忽略!
  ├── mysit
  ├── __init__.py
  ├── __init__.pyc
  ├── settings.py
  ├── settings.pyc
  ├── urls.py
  ├── urls.pyc
  ├── wsgi.py
  └── wsgi.pyc
  ├── news       #我的model view等文件目录
  ├── static   #静态文件的文件目录
  └── syncdb.bat
  上面的路径很重要,就是写路径的问题了,我DocumentRoot改成下面 DocumentRoot "/usr/app/mysit"
  <Directory "/mysit">  #紧邻的文件夹就改成这个,指向应用的目录,下面的目录都是相对于DocumentRoot的
  Options Indexes FollowSymLinks ExecCGI
  AllowOverride None
  Require all granted
  </Directory>
  里面配置这些就可以了 ,注意,网上说2.2版本和2.4版本的授权命令是不一样的,所以你如果查询了好多,会看到allow from all,这个是2.2的等同于 Require all granted在这条ScriptAlias /test "/usr/local/apache24/cgi-bin/test.wsgi"语句下,插入下面的语句,指定django项目的wsgi.py
  WSGIScriptAlias / "/usr/app/mysit/mysit/wsgi.py"     ###wsgi.py 不用做任何改动,网上好多要加路径的,我觉得既然django就支持这个方式,应该不用动的!
  再加一段允许访问的权限,如下,(我没明白为什么还要再给一遍,或者<Directory "/mysit">为什么不行,因为是相对于DocumentRoot了啊???)
  <Directory "/usr/app/mysit/mysit">
  Require all granted
  </Directory>因为我的static放在/usr/app/mysit下的static目录了,所以再加个权限,(我真不知道为什么还加,我就是因为这个问题,弄了2晚上)
  <Directory "/usr/app/mysit/static/">
  AllowOverride None
  Options all
  Require all granted
  </Directory>
  而且我前面的已经加了一个 /mysti的权限了!!!
  到此,我访问127.0.0.1/index就可以访问我的程序了,(小问题是登后台,没有样式,并且sqlite3还是访问不了,目前还没解决,先把步骤写了)好了,就写到这吧,互相学习
  转发,请标记出处:http://www.cnblogs.com/if-then/p/6959730.html
  解决:
  后台样式的问题,今天解决了一下,可能不是最好的方法:(从日志里看到,访问css文件,获取失败)
  将django下的
  /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/下的admin目录 拷贝到项目下的static目录下
  sudo cp -rf admin/ /usr/local/mysit/static/         
  (思考:这个方法我觉得比较笨,应该通过通过django配置文件,包含过来???,而且项目下的static应该放在配置文件目录下,当时我的项目就是这里配置的)
  数据库前台还是不能写!,这个问题还没解决,还得研究

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427696-1-1.html 上篇帖子: Apache POI – Reading and Writing Excel file in Java 下篇帖子: apache server和tomcat集群配置二:垂直负载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表