c++ primer plus(第6版)中文版 第九章编程练习答案

首先,说明下环境:

linux:fedora14;

IDE:eclipse;

python:python2.7

python框架:django

web服务器:apache

web服务器的python模块:mod_wsgi

写在前面:

之前用的windows下面的xampp,写的php后台,现在想转向linux下面的python,跟以前一样,选择apache和eclipse作为自己的开发工具。

eclipse的python配置, 参见之前的博客:http://blog.csdn.net/zy416548283/article/details/16955047

为什么选择框架? 不重复造轮子,,为什么选择django,使用的人最多,,为什么python2.7,跟python3不一样呢。。。为什么是apache呢,nginx没玩过,以后性能上如果有需求,再改吧~  而apache支持python,需要一个模块,mod_wsgi,之前自己也尝试配置mod_python,但是会遇到很多错误,mod_python已经停止维护了,所以,还是用mod_wsgi吧~

其实,这类文章,网上也有很多,照着弄,基本可以解决,也花费了我很多时间,我主要记录我的问题,和一些我的配置和理解,毕竟我也很菜~

(1)关于apache的配置的权限问题,总是出现一些问题:

没有访问权限403错误? 之前设置了目录的访问权限,但还是出现问题,这个时候,最有效的方式是去查看错误日志。我之前没有找到这个日志,然后尝试了手动编译apache的方法,发现竟然可以使用,但是修改了根目录之后又用不了,很是郁闷,根据错误日志,搜索到这个帖子:http://wiki.apache.org/httpd/13PermissionDenied ,解决方法就是把权限打开到root目录的下一级目录。这一步纠结了我好久的时间,所以说,日志对于解决问题相当地重要。

(2)File does not exist: /var/www/html/favicon.ico,就是找不到图标,关于这个图标的作用,参见:http://blog.csdn.net/avilifans/article/details/12972315 ,大概作用就是收藏的时候提供一个图标。

(3)加载mod_wsgi,并配置wsgi:

a. 首先改变网站的根目录,在httpd.conf中配置

DocumentRoot "/home/zy/www/lib108/src/lib108/"

b.当然要让其它人访问它,需要配置它的权限:

<Directory "/home/zy/www/lib108/src/lib108">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

c.我用的eclipse建的项目,所以是上面的结构。 上面这个配置,可以写在httpd.conf中,但是如果你的配置比较多的话,这样就会让文件显得比较臃肿,并且不方便修改。所以我们创建了一个文件wsgi.conf,把关于mod_wsgi的配置都放在这里。我目前的配置是:

LoadModule wsgi_module modules/mod_wsgi.so   #加载模块
WSGIScriptAlias / "/home/zy/www/lib108/src/lib108/conf/django.wsgi"

<Directory "/home/zy/www/lib108/src/lib108">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

Alias /media /usr/lib/python2.7/site-packages/django/contrib/admin/media
<Directory "/usr/lib/python2.7/site-packages/django/contrib/admin/media">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
 <Location "/media/">
    SetHandler None
</Location>
 <LocationMatch "\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">
    SetHandler None
</LocationMatch>

需要将这样一个文件,引入到httpd.conf中:

Include conf.d/*.conf

这个是将conf.d目录下所有的*.conf文件都引入进来,我的文件是放在这个目录下的,如果你的不是放在这里,你需要再使用一个include把你的配置文件引入进来。

(4)安装命令,并配置wsgi到django:

a. 安装apache服务器:

yum install httpd

b.安装mod_wsgi:

好像命令行安装的,自带了这个模块,手动编译的apache,同样需要手动编译这个模块,编译的时候可能会遇到这个错误:mod_wsgi.c Python.h:没有那个文件或目录,,解决方法:yum install python-devel,安装apache的apxs扩展。

c. wsgi到django的配置文件django.wsgi,在第三步的配置文件中,会用到这个文件,我的是:

import os
import sys
import django.core.handlers.wsgi

sys.path.append(r‘/home/zy/www/lib108/src/‘)
#sys.path.append(os.path.dirname(os.path.dirname(__file__)))
os.environ[‘DJANGO_SETTINGS_MODULE‘] = ‘lib108.settings‘
os.environ[‘PYTHON_EGG_CACHE‘] = ‘/tmp/.python-eggs‘

application = django.core.handlers.wsgi.WSGIHandler()

5. css的样式丢失的问题:

使用chrome的F12可以发现问题,文件找不到,需要配置下admin这个东西,具体配置,在第三步的那个配置文件中,关于media的路径问题,使用:

python
import django
django.__file__

可以找到对应的django路径进去研究下,就清楚了。

这样设置之后,需要在django的项目中的settings中,做配置:

MEDIA_ROOT = ‘/usr/lib/python2.7/site-packages/django/contrib/admin/media‘
MEDIA_URL = ‘/media/‘

这样,可以轻松解决css样式丢失的问题。

其它小问题:

(1)Address already in use: make_sock: could not bind to address 80 [resolved],使用:sudo fuser -k -n tcp 80

(2)eclipse写html,用对应插件,参见:http://blog.csdn.net/shanliangliuxing/article/details/8571832

(3)Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock,没有安装mysql-server,跟windows好大的区别,windows用别人提供好的界面,根本没有这些概念~ mysql的初步使用和安装,参见:http://blog.csdn.net/tianlesoftware/article/details/7001808

(4)pyc是什么文件,编译好的二进制文件,不用公开源码,参见:http://blog.csdn.net/sislcb/article/details/4002414

写在后面:

果然用linux搞东西,就会遇到各种问题,慢慢解决和积累吧~

希望这次搞东西,可以学的更深一点,比如数据库/python这些~

先大概看下django,然后直接着手搭建教研室的网站搭建,先实现一个工作去向的统计功能~

参考资料:

http://www.cnblogs.com/compass/articles/2125605.html

http://www.cnblogs.com/compass/archive/2011/09/28/2194460.html

http://my.oschina.net/HankCN/blog/137539

http://blog.csdn.net/a657941877/article/details/8953233

c++ primer plus(第6版)中文版 第九章编程练习答案,布布扣,bubuko.com

时间: 2024-10-14 09:00:45

c++ primer plus(第6版)中文版 第九章编程练习答案的相关文章

c++ primer plus(第6版)中文版 第十章编程练习答案

第十章编程练习答案 10.1为复习题5类提供定义,并演示 //10.1为复习题5类提供定义,并演示 #include <iostream> using namespace std; class BankAccount { string m_name; string m_num; unsigned m_balance; public: BankAccount (string name, string num, unsigned balance) { m_name = name; m_num =

c++ primer plus(第6版)中文版 第八章编程练习答案

第八章编程练习答案 8.1编写一个输出字符串的函数,有一个默认参数表示输出次数,默认为1.(原题太扯啦,题意基础上小改动) //8.1编写一个输出字符串的函数,有一个默认参数表示输出次数,默认为1.(原题太扯啦,题意基础上小改动) #include <iostream> using namespace std; void show (const char* str, int time=1) { unsigned n=(time>0)?time:-time; for (unsigned i

c++ primer plus(第6版)中文版 第十三章编程练习答案

第十三章编程练习答案 13.1根据Cd基类,完成派生出一个Classic类,并测试 //13.1根据Cd基类,完成派生出一个Classic类,并测试 #include <iostream> #include <cstring> using namespace std; // base class class Cd { char performers[50]; char label[20]; int selections; // number of selections double

c++ primer plus(第6版)中文版 第十二章编程练习答案

第十二章编程练习答案 12.1根据以下类声明,完成类,并编小程序使用它 //12.1根据以下类声明,完成类,并编小程序使用它 #include <iostream> #include <cstring> using namespace std; class Cow{ char name[20]; char * hobby; double weight; public: Cow(); Cow(const char * nm, const char * ho, double wt);

c++ primer plus(第6版)中文版 第七章编程练习答案

第七章编程练习答案 7.1编写一个程序,用户不停输入两数,直到有0出现为止,计算调和平均数 //7.1编写一个程序,用户不停输入两数,直到有0出现为止,计算调和平均数 #include <iostream> using namespace std; double average (unsigned x, unsigned y) { return (2.0 * x * y / (x + y)); } int main () { while (true) { unsigned x, y; cout

C++ Primer Plus 第六版 第16章 string类和标准模板库

1.string实际上是模板具体化basic_string<char> 的一个typedef,有默认参数,所以省略了初始化参数 2.size_type是一个依赖于实现的整形 string将string::npos定义为字符串的最大长度 3.string类的构造函数P656 4.对于c-风格字符串,3种输入方法:cin>>   cin.getline(),cin.get 对于string   ,2种输入方法:cin>>,getline(cin,string对象) 5.st

《C++ Primer》 第四版 第7章 函数

<C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/9479711

C Primer Plus (第五版) 第九章 函数 编程练习

第九章 函数 编程练习 设计函数 min(x,y),返回两个double数值中较小的数值,同时用一个简单的驱动程序测试该函数. #include <stdio.h> double min(double x, double y); int main(void) { double a, b; printf("请输入两个数:\n"); scanf("%lf%lf", &a, &b); printf("两个数中较小的数是:%lf\n&q

《C Primer Plus(第6版)(中文版)》普拉达(作者)epub+mobi+azw3

内容简介 <C Primer Plus(第6版)中文版>详细讲解了C语言的基本概念和编程技巧. <C Primer Plus(第6版)中文版>共17章.第1.2章介绍了C语言编程的预备知识.第3~15章详细讲解了C语言的相关知识,包括数据类型.格式化输入/输出.运算符.表达式.语句.循环.字符输入和输出.函数.数组和指针.字符和字符串函数.内存管理.文件输入输出.结构.位操作等.第16章.17章介绍C预处理器.C库和高级数据表示.本书以完整的程序为例,讲解C语言的知识要点和注意事项