PHP教程之超等办事器apache+mysql+php+ssl之完整...
学习了六个多月PHP了,还是个新手,在这里受到了很多人的帮助,谢谢你们!apache|mysql|办事器|攻略 目标咱们的方针是装置一个答应咱们托管多个网站的web办事器,个中一些是针对电子商务的平安处理计划,而大局部网站是经由过程毗连一个数据库办事器而且提取其数据的剧本驱动的。为了这个义务所需的东西是:
Apache-一个网站办事器
Mod_SSL-一个平安套接字层(SSL)的模块
OpenSSL-开放源代码东西箱(mod_ssl所需)
RSARef-仅对美国用户
MySQL-一个数据库办事器
PHP-一种剧本言语
“条条亨衢通罗马”……因而这只是良多能到达咱们请求的设置装备摆设之一。我选择如许的设置装备摆设,是由于它是最复杂和最快的一种。选择Mod_SSL/OpenSSL的缘由是由于我有它的先前经历,是最快设置装备摆设和最轻易装置的一种。为了彼此便利地与Apache集成,我选择了PHP和MySQL。记住,Perl能做到你想要做任何任务,但是,PHP对任何想进修它地法式员来讲复杂而且轻易。
但愿你将在停止这个复杂的指南后能胜利地完成以下方针。
装置并设置MySQL数据库办事器
o 晓得如何反省MySQL办事器的形态
o 晓得如何利用号令行客户法式存取MySQL办事器
o 晓得如何从web存取你的DB办事器
装置并设置具有SSL的Apache网站办事器
o 设置装备摆设一个复杂的虚拟网站
o 晓得如何中断并启动办事器
o 晓得如何做一些根基的主机托管设置装备摆设
装置并设置装备摆设办事器端剧本的PHP 4.0超文本预处置器
o 晓得如何编写复杂的php代码
o 晓得如何利用php毗连一个DB
o 创立一个启用PHP地复杂网站与一个数据库沟通
发明一些样本证书用于Apache SSL
o 晓得如何发生一个CSR文件
o 晓得如何加密一个键码
o 晓得如何 签订你本人的证书
本文将掩盖大批的信息。本指南作为一个入门性地的指南,让你步入电子商务、网站剧本和平安套接字层 (SSL)的世界,目标是匡助你创立由存储在数据库中的静态信息驱动的平安网站。
本文绝非是一个具体周全的文档,它固然将有一些毛病(但愿最小),在你浏览它时请记住这一点。但是,它将激起你的热忱并运转后面提到的产物,但愿让你更好了解这些器材是如何任务的。不需求之前的编程常识,但假定你有点盘算机常识后台。我的方针是编写这个文档以便任何老手能了解我正在议论的器材。假如我到达了,那末我做了一件功德。假如你垂手可得地创立了电子商务站点,比我做的更精彩:-) 给我一些注释。
假定
本文假定你已把以下软件装置在你的体系上了。
Perl (最好是ver 5+)
gzip或gunzip
gcc 和 GNU make
假如你没有装置好这些,你将需求接纳需要的步调在注释本文的任何进程前把他们装置好。
你也需求对UNIX号令、HTML、和SQL的一个根基懂得。你应当有如何办理你的Linux机械的一个根基懂得。你也需求一个完整正常的Linux机械,你将在它下面装置软件。固然你将需求在后面列出的需要的软件包以编译源代码,而且最初,包管你还没有在Linux机械中预装了MySQL、Apache、或PHP。
任务道理
了解在幕后产生了甚么是有匡助的。这里是一个过度简化的任务道理,下图和随后的注释今朝不是完整准确的,只是它的一个要点概述:
情形是:咱们有一个从一个数据库掏出一些数据的网页。John Doe从他的阅读器恳求该页,恳求被发送给web办事器,接着挪用一个PHP剧本。PHP剧本由PHP预处置器注释并从数据库中掏出数据,然后了局由余下的PHP剧本加工并转化成HTML,做后的HTML被发还用户的阅读器。
让咱们一步一步地看:
John Doe 从他的阅读器中点击一个链接;他的阅读器发送对http://www.yourserver.com/test.php的恳求。
Apache失掉对test.php的恳求,它晓得.php文件应由PHP预处置器(mod_php)处置,因而它告诉 PHP处置它。它晓得这些,是由于咱们在Apache的设置装备摆设中指定它。
test.php是包括号令的一个PHP剧本。这些号令之一是翻开一个到一个数据库的毗连并抓取数据。PHP 处置到数据库的毗连,而且注释SQL挪用从DB中提取数据。
办事器办事器失掉从PHP注释器来的毗连恳求,而且处置这个恳求。恳求多是相似于一个复杂的选择语句,或数据库表创立等。
数据库然后将应对和了局回送到PHP注释器。
Apache回送该了局到John Doe的阅读器,作为对他恳求的应对。John Doe如今看见一个包括从一个数据库来的一些信息的网页。
假如这是一个对https://www.yoursecureserver.com/test.php的恳求,全部进程与上述相似,除每一个恳求和应对在两头被加密息争密,即,阅读器毗连Apache,取得它的加密键码,加密恳求并发送它。
办事器看到恳求,解密而且认证它。它处置文件,加密而且发送它。然后阅读器用办事器的键码解密它。记住既然毗连被加密,就是用分歧的端口用。端口80用在在非平安毗连上,而端口443用在平安毗连时。
再说一次,它不是100%的准确,然而它足够快地让你晓得幕后产生的工作的十分复杂的概述。
既然咱们对咱们正在试图到达的方针有了一个很根基的懂得,让咱们持续装置软件吧。
筹办
Apache (Web办事器)-http://www.apache.org
Mod_SSL (平安办事器层)-http://www.modssl.org
OpenSSL (SSL东西箱)-http://www.openssl.org
PHP (剧本言语)-http://www.php.net
MySQL (SQL数据库办事器 )-http://www.mysql.com
下载一切(tar文件)源代码到一个一时目次下。包管你把他们放在有良多空间的中央……你应当以root身份下载他们以免权限成绩。
咱们的企图
咱们的企图是起首装置MySQL办事器并包管它任务,然后咱们将装置PHP和Mod_SSL,最初咱们将装置Apache网站办事器。在咱们装置了Apache今后,咱们可以测试PHP和Mod_SSL撑持是不是起感化了。
MySQL源代码装置(UNIX)
你必需用来履行装置MySQL源代码分发的根基号令是(自一个没解开“tar”文件):
经由过程利用su成为 root用户。
$su
直接进入你有tar文件的目次。(利用一个一时目次。这里利用 /tmp/download/ )
#cd /tmp/download/
利用以下号令提取文件。
# gunzip -d -c mysql-3.22.xx.tar.gz | tar xvf -
改动到新目次,它在提取时代创立。
# cd mysql-3.22.xx
如今你可以入手下手“设置装备摆设”MySQL办事器。你可以用configure指定良多选项,利用configure --help检查一切的选项。我已选择--prefix指定到装置地址的直接途径。configure将反省你的编译器和一些其他器材。假如你有任何毛病,你可以反省config.cache文件检查毛病。
# configure --prefix=/usr/local/mysq
在你完成了设置装备摆设今后,你可以履行以下号令make真实的二进制代码。
# make
如今你已筹办好装置一切的二进制代码。运转以下号令在你用configure --prefix选项指定的目次下装置二进制代码。
# make install
在你装置好二进制代码后,如今是创立用于界说权限的mysql表的时分了。
# scripts/mysql_install_db
# cd /usr/local/mysql/bin
# ./safe_mysqld &
# ./mysqladmin -u root password "new-password"
注重:/usr/local/mysql是我选择装置MySQL办事器的目次。你可以经由过程改动目次选择别的的中央。
你可以经由过程运转一些复杂的测试来验证办事器正在任务以确保MySQL正在运转。输入应当相似于上面所示的:BINDIR=/usr/local/mysql/bin。BINDIR依附于你在下面的前缀选择的目次。
# BINDIR/mysqlshow -p
+---------------+
| Databases |
+---------------+
| mysql |
+---------------+
一旦你装置好MySQL,它将主动地创立2个数据库。一个mysql表,它掌握在实践的办事器顶用户、主机和 数据库权限;另外一个是一个test数据库,咱们能利用test数据库。但是,咱们想给你一个疾速而复杂的MySQL可用的一些号令行选项的概述。这也将包管root被设置了对DB办事器的全体存取权限,即:root有创立数据库、数据库表等的允许,因而咱们将创立一个test2数据库,在今后咱们用它停止咱们的测试。在你经由过程号令行进入MySQL前,你将被提醒root用户的新口令。记住你之前改动了它。
# mysql -u root -p
mysql> show databases;
+----------------+
| Database |
+----------------+
| mysql |
| test |
+----------------+
mysql> create database test2;
Query OK, 1 row affected (0.00 sec)
如今选择新的数据库利用,并创立一个名为tst_tbl的新表, 有以下2个字段。字段1是是一个id字段,答应你晓得纪录的id。本色上为了简化这只是的一个行号。第二个字段是你一个name字段,存储书名信息。这些字段的格局是:字段1(id)是一个长度为3的整数(int),而字段2(name)是一个长度为50的字符(char)字段。为搜刮和索引数据,咱们指定id为键码。
mysql> use test2;
Database changed
mysql> CREATE TABLE books ( id int(3) not null
-> auto_increment, name char(50) not null,
-> unique(id), primary key(id));
Query OK, 0 rows affected (0.00 sec)
如今咱们用以下号令验证一切准确无误。
mysql> show tables
+---------------------+
| Tables in test2 |
+---------------------+
| books |
+---------------------+
1 row in set (0.00 sec)
mysql> describe books;
+-------+-------------+------+------+----------+------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+------+----------+------------------------+
| id | int(3) | | PRI | 0 | auto_increment |
| name | char(50) | | | | |
+-------+-------------+------+------+----------+------------------------+
2 rows in set (0.00 sec)
注重到describe号令根基上“描写”了表的结构。相当不错吧!
好,该试一些的确有效的SQL号令,拔出并从数据库当选择数据,如今把几个纪录加到新表中。记住这些是复杂的书名纪录,然而一旦你取得了SQL足够的经历,你可觉得一些大的电子商务站点创立的确庞杂的数据库。让咱们创立2本设想的书的2笔记录。第一笔记录是我在未来某天写的一本书的名字-“PHP 4 Newbies”,另外一本是一个很有效的Linux书,“Red Hat Linux 6 Server”, 由Mohammed J. Kabir所著。
mysql> INSERT INTO books (name) values("PHP 4 Newbies");
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO books (name) values("Red Hat Linux 6 Server");
Query OK, 1 row affected (0.00 sec)
如今咱们可以反省新记载,收回一条“选择一切”号令
mysql> SELECT * from books;
+----+----------------------------------+
| id | name |
+----+----------------------------------+
| 1 | PHP for Newbies |
| 2 | Red Hat Linux 6 Server |
+----+----------------------------------+
2 rows in set (0.00 sec)
很好,MySQL办事器完整起感化了。咱们可以持续到场,然而此时没甚么意义。注重到当你向数据库中拔出纪录时,你如何不用指定id号,这是由于你创立了启用auto_increment选项的id字段。
让我演示一下若何做一个疾速删除。这只是让你晓得,记住,你可在MySQL的网站http://www.mysql.com上找到所需的有关mysql号令和办事器的一切信息。
mysql> delete from books where id=1;
Query OK, 1 row affected (0.00 sec)
mysql> select * from books;
+----+-----------------------------------+
| id | name |
+----+-----------------------------------+
| 2 | Red Hat Linux 6 Server |
+----+-----------------------------------+
1 row in set (0.00 sec)
好了,加入MySQL,持续装置。你可在完成一切装置而且一切任务正常后玩MySQL也不迟。
熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域, 实践是检验自己会不会的真理。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 实践是检验自己会不会的真理。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
页:
[1]