仓酷云

标题: PHP教程之apache+mysql+php+ssl办事器之完整装置... [打印本页]

作者: 愤怒的大鸟    时间: 2015-2-3 23:52
标题: PHP教程之apache+mysql+php+ssl办事器之完整装置...
一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!   目标咱们的方针是装置一个答应咱们托管多个网站的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也不迟。

PHP装置(UNIX)
如今装置PHP言语。你下载了最新的beta版,然而你能够必需下载非beta版本。记住beta版本需求GNU make。
你依然假定是root,假如不是,su回到root。
PHP请求你已事后设置装备摆设好的Apache,以便它能晓得所需的器材在哪儿。在今后你装置Apache办事器时,你将会回到这里。改动到你有源代码的目次。
# cd /tmp/DOWNLOAD
# gunzip -c apache_1.3.x.tar.gz | tar xf -
# cd apache_1.3.x
# ./configure
# cd ..
好的,如今你可以入手下手PHP的装置。提取源代码文件并进入其目次。假如你下载了版本3,在数字和号令上有一个改动,不大的改动。
# gunzip -c php-4.0.x.tar.gz | tar xf -
# cd php-4.0.x
假如你正在编译代码,configure将永久是你的伴侣。:-) 因而,configure有良多选项。利用configure --help肯定你想要增添哪些。我只是需求MySQL和LDAP,而且固然Apache。
# ./configure --with-mysql=/usr/local/mysql
--with-xml
--with-apache=../apache_1.3.x
--enable-track-vars
--with-ldap
make并装置二进制代码。
# make
# make install
拷贝ini文件到lib目次。
# cp php.ini-dist /usr/local/lib/php.ini
你可以编纂PHP文件来设置PHP选项,如你可以经由过程在你的php.ini文件中拔出以下行,增添php的max_execution_time。
max_execution_time = 60;
注重:php3用户将利用php3.ini,而php4用户将利用php.ini文件。

Apache 与 Mod_SSL

该设置装备摆设并装置mod_ssl和Apache了。对此,你将需求有rsaref-2.0文件。在http://ftpsearch.lycos.com/上搜刮“rsaref20.tar.Z”。假如你不喜好Lycos,你可以选择其他搜刮引擎来搜刮文件。固然只要你在美国才需求这个文件。(管它呢,你也可从别处下载,起首在http://ftpsearch.ntnu.no/查找“rsaref20.tar.Z”,很多多少啊!。)
创立rasref目次,你将在该目次提取文件。注重。这假定你下载了一个一时目次,而你就在此目次。
# mkdir rsaref-2.0
# cd rsaref-2.0
# gzip -d -c ../rsaref20.tar.Z | tar xvf -
如今设置装备摆设并机关OpenSSL库。
# cd rsaref-2.0
# cp -rp install/unix local
# cd local
# make
# mv rsaref.a librsaref.a
# cd ../..
装置OpenSSL。记住,你将用它来创立一时证书和CSR文件。--prefix选项指定主装置目次。
# cd openssl-0.9.x
# ./config -prefix=/usr/local/ssl
-L`pwd`/../rsaref-2.0/local/ rsaref -fPIC
如今make、测试并装置它。
# make
# make test
# make install
# cd ..
咱们将设置装备摆设MOD_SSL模块,然后用Apache设置装备摆设指定它为一个可装载的模块。
# cd mod_ssl-2.5.x-1.3.x
# ./configure
--with-apache=../apache_1.3.x
# cd ..
如今咱们可以把更多的Apache模块加到Apache源代码树中。可选的--enable-shared=ssl选项使得mod_ssl机关成为一个DSO“libssl.so”。关于在Apache撑持DSO的更多信息,浏览Apache源代码树中的INSTALL和 htdocs/manual/dso.html文档。我激烈建议ISP和软件包装保护者为了最天真地利用mod_ssl而利用DSO东西,然而注重,DSO不是在一切平台上的Apache都撑持。
# cd apache_1.3.x
# SSL_BASE=../openssl-0.9.x
RSA_BASE=../rsaref-2.0/local
./configure --enable-module=ssl
--activate-module=src/modules/php4/libphp4.a
--enable-module=php4 --prefix=/usr/local/apache
--enable-shared=ssl
[...你可到场更多的选项...]
生成Apache,然后生成证书,并装置...
# make
假如你已准确地完成,你将失掉相似于以下的信息:
+-----------------------------------------------------------------------+
| Before you install the package you now should prepare the SSL |
| certificate system by running the "make certificate" command. |
| For different situations the following variants are provided: |
| |
| % make certificate TYPE=dummy (dummy self-signed Snake Oil cert) |
| % make certificate TYPE=test (test cert signed by Snake Oil CA) |
| % make certificate TYPE=custom (custom cert signed by own CA) |
| % make certificate TYPE=existing (existing cert) |
| CRT=/path/to/your.crt [KEY=/path/to/your.key] |
| |
| Use TYPE=dummy when you're a vendor package maintainer, |
| the TYPE=test when you're an admin but want to do tests only, |
| the TYPE=custom when you're an admin willing to run a real server |
| and TYPE=existing when you're an admin who upgrades a server. |
| (The default is TYPE=test) |
| |
| Additionally add ALGO=RSA (default) or ALGO=DSA to select |
| the signature algorithm used for the generated certificate. |
| |
| Use "make certificate VIEW=1" to display the generated data. |
| |www.knowsky.com
| Thanks for using Apache & mod_ssl. Ralf S. Engelschall |
| rse@engelschall.com |
| www.engelschall.com |
+-----------------------------------------------------------------------+

如今你可以创立一个定制的证书。该选项将提醒输出你的地址、公司、和其他一些器材。关于证书,请参阅本文的开头。
# make certificate TYPE=custom
如今装置Apache...
# make install
假如一切正常,你应当看到相似于以下的信息:
+----------------------------------------------------------------------------------+
| You now have successfully built and installed the |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the |
| (initially created or preserved) configuration files |
| |
| /usr/local/apache/conf/httpd.conf |
| and then you should be able to immediately fire up |
| Apache the first time by running: |
| |
| /usr/local/apache/bin/apachectl start |
| Or when you want to run it with SSL enabled use: |
| |www.knowsky.com
| /usr/local/apache/bin/apachectl startssl |
| Thanks for using Apache. The Apache Group |
| http://www.apache.org / |
+----------------------------------------------------------------------------------+

如今验证Apache和PHP是不是正在任务。但是,咱们需求编纂srm.conf和httpd.conf包管咱们把PHP类型加到了设置装备摆设中。检查httpd.conf并去失落以下行的正文。假如你准确地遵守了本文的指令,你的httpd.conf文件将位于/usr/local/apache/conf目次。文件有一行针对php4的addtype加了正文,如今就去失落正文。httpd.conf 文件--片段
>
> # And for PHP 4.x, use:
> #
---> AddType application/x-httpd-php .php
---> AddType application/x-httpd-php-source .phps
>
>
如今咱们筹办启动Apache办事器看它是不是在任务。起首咱们将启动不撑持SSL的办事器看它是不是启动了。咱们将反省对PHP的撑持,然后咱们将中断办事器而且启动启用了SSL撑持的办事器并反省咱们是不是一切正常。configtest 将反省一切设置装备摆设是不是准确设置。
# cd /usr/local/apache/bin
# ./apachectl configtest
Syntax OK
# ./apachectl start
./apachectl start: httpd started

测试咱们的任务

Apache 正在任务吗?
假如它任务正常,当你用Netscape毗连办事器时,你将看见一幅相似于这幅屏幕捕捉的屏幕。这是根基上 是Apache缺省装置的页面。
注重:你可以用域名或机械实践的IP地址与办事器毗连。反省这两种情况,确保一切任务正常。

PHP撑持正在任务吗??
如今将测试PHP撑持……创立一个文件(名为:test.php ),它有以下信息。文件需求位于文档根途径下,它应当缺省设置为/usr/local/apache/htdocs。注重这依附于咱们之前选择的前缀,但是,这可在 httpd.conf中改动。设置多个虚拟主机将在另外一篇文章加少,请寄望,由于它将触及装置Apache和它的指令的一些很根基的选项。
test.php 文件
< ?
phpinfo();
?>
它将显示有关办事器、php和情况的信息。上面是输入页面的顶部的屏幕抓取。
很酷吧,PHP起感化了。

SSL 选择正在任务吗??
好了,如今咱们筹办测试SSL了。起首中断办事器,并以启用SSL的选项重启它。
# /usr/local/apache/bin/apachect l stop
# /usr/local/apache/bin/apachectl startssl
测试它是不是任务:经由过程用一个Netscape与办事器毗连而且选择https协定,即:https://youserver.yourdomain.comhttp://yoursever.yourdomain.com:443 ,也能够再试一下你的办事器的 ip地址,即:https://xxx.xxx.xxx.xxxhttp://xxx.xxx.xxx.xxx:443
假如它起感化了,办事器将把证书发送到阅读器以创立一个平安毗连。这将让阅读器提醒你承受本人签订的证书。,假如它是来自VeriSign或Thawte的一张证书,那末阅读器将不提醒你,由于证书来自一个可托的证书受权机构(CA)。在咱们的情形中,咱们创立并签订咱们本人的证书……咱们不想即刻买一个。起首,咱们想要包管咱们能使一切正常。
你在Netscape中将看见启用了以下选项。这就告知你一个平安的毗连已创立起来了。

PHP和MySQL能一同任务吗??
如今,咱们可以肯定php能与MySQL一同任务,经由过程创立一个复杂的剧本,对“test2”数据库做一些拔出和数据删除操作。只是一个复杂的剧本以测试它是不是任务了。在另外一篇文章中咱们将会商PHP剧本毗连一个 MySQL数据库。还记得咱们已创立立了数据库和一张表。咱们可以如今完成它,然而我选择不。我想要再反省一次root有权限创立立数据库和表,但是,PHP供应了对MySQL的供应,因而我能很轻易地编写代码以创立一个测试数据库和若干笔记录。
记得咱们之前创立了书本数据库。假如你跳过了之前的内容,这局部将不任务。咱们创立了有一个“books”表的test2数据库,而且为一本书拔出了一笔记录。
这个剧本根基上阅读该表并列出一切字段名,它切实其实很复杂。
< ?
$dbuser = "root";
$dbhost = "localhost";
$dbpass = "password";
$dbname = "test2";
$dbtble = "books";
$mysql_link = mysql_connect($dbhost,$dbuser,$dbpass);
$column = mysql_list_fields($dbname,$dbtble,$mysql_link);
for($i=0; $i< mysql_num_fields($column); $i++ )
{
print mysql_field_name($column,$i )."< br> ";
}
?>
一个更庞杂的例子将向你演示PHP某些绝妙的功效。
< html>
< head>
< title> Example 2 -- more details< /title>
< /head>
< body bgcolor="white">
< ?
$dbuser = "root";
$dbhost = "localhost";
$dbpass = "password";
$dbname = "test2";
$dbtable = "books";
//------ DATABASE CONNECTION --------//
$mysql_link = mysql_connect($dbhost,$dbuser, $dbpass);
$column = mysql_list_fields($dbname,$dbtable,$mysql_link);
$sql = "SELECT * FROM $dbtable";
$result = mysql_db_query($dbname,$sql);
?>
< table bgcolor="black">
< tr> < td>
< table>
< /td> < /tr>
< /table>
< /body>
< /html>
注重,咱们竟能在统一文件中同时有HTML和PHP号令。这就是PHP剧本的奇奥的地方。

虚拟主机的设置
如今是设置Apache处置一些虚拟主机的工夫了。因为Apache供应的天真性,虚拟主机可很复杂地做到。起首你需求一个DNS办事器把虚拟主机的域名指向web办事器的IP地址。在DNS利用一个CNAME纪录把 your_virtual_domain.com指向办事器的IP。其次你需求修正Apache的设置装备摆设文件httpd.conf以增添新的虚拟域名。记住,这只是一个很根基的例子,你有勇气读一下Apache的指令。
让咱们看一个 httpd.conf 的例子。
httpd.conf 片段
#--------------------------------------------------------#
# VIRTUAL HOST SECTION NON-SSL
#--------------------------------------------------------#
# VirtualHost directive allows you to specify another virtual
# domain on your server. Most Apache options can be specified
# within this section.
# Mail to this address on errors
ServerAdmin webmaster@domain1.com
# Where documents are kept in the virtual domain
# this is an absolute path. So you may want to put
# in a location where the owner can get to it.
DocumentRoot /home/vhosts/domain1.com/www/
# Since we will use PHP to create basically
# all our file we put a directive to the Index file.
DirectoryIndex index.php
# Name of the server
ServerName www.domain1.com
# Log files Relative to ServerRoot option
ErrorLog logs/domain1.com-error_log
TransferLog logs/domain1.com-access_log
RefererLog logs/domain1.com-referer_log
AgentLog logs/domain1.com-agent_log
# Use CGI scripts in this domain. In the next case you
# can see that it does not have CGI scripts. Please
# read up on the security issues relating to CGI-scripting.
ScriptAlias /cgi-bin/ /var/www/cgi-bin/domain1.com/
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
# This is another domain. Note that you could host
# multiple domains this way...
# Mail to this address on errors
ServerAdmin webmaster@domain2.com
# Where documents are kept in the virtual domain
DocumentRoot /virtual/domain2.com/www/html
# Name of the server
ServerName www.domain2.com
# Log files Relative to ServerRoot option
ErrorLog logs/domain2.com-error_log
TransferLog logs/domain2.com-access_log
RefererLog logs/domain2.com-referer_log
AgentLog logs/domain2.com-agent_log
# No CGI's for this host
# End: virtual host section
利用上述例子在你的办事器上创立你本人的虚拟主机。假如你想从Apache网站上浏览每条指令,它的网址是:http://www.apache.org

SSL虚拟主机
创立SSL虚拟主机相似非SSL。除你需求指定别的的指令,还有,你需求增添一个DNS纪录而且修正 httpd.conf。这里有一个例子。
#--------------------------------------------#
# SSL Virtual Host Context
#--------------------------------------------#
# General setup for the virtual host
DocumentRoot /usr/local/apache/htdocs
ServerAdmin webmaster@securedomain1.com
ServerName www.securedomain1.com
ErrorLoglogs/domain1.com-error_log
TransferLog logs/domain1.com-transfer_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A test
# certificate can be generated with `make certificate' under
# built time. Keep in mind that if you've both a RSA and a DSA
# certificate you can configure both in parallel (to also allow
# the use of DSA ciphers, etc.)
# Note that I keep my certificate files located in a central
# location. You could change this if you are an ISP, or ASP.
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog /usr/local/apache/logs/ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
记住你有良多指令可以指定。咱们将在另外一篇有关设置装备摆设Apache的文章中会商,本文只是一个入门性指南。

生成证书
这是若何生成证书的墨守成规的描写。
为你的Apache办事器创立一个RSA私用密钥(被Triple-DES加密而且停止PEM格局化):
# openssl genrsa -des3 -out server.key 1024
请在平安的中央备份这个server.key文件。记住你输出的通行短语(pass phrase)!你可以经由过程上面的号令看到这个RSA私用密钥的细节。
# openssl rsa -noout -text -in server.key
并且你可觉得这个RSA私用密钥创立一个加密的PEM版本(不保举),经由过程以下号令:
# openssl rsa -in server.key -out server.key.unsecure
用办事器RSA私用密钥生成一个证书签订恳求(CSR-Certificate Signing Request)(输入将是PEM格局的):
# openssl req -new -key server.key -out server.csr
当OpenSSL提醒你“CommonName”时,确保你输出了办事器的FQDN("Fully Qualified Domain Name") ,即,当你为一个今后用https://www.foo.dom/会见的网站生成一个CSR时,这里输出"www.foo.dom"。你可借助以下号令检查该CSR的细节:
# openssl req -noout -text -in server.csr

将CSR发到一个CA
如今你必需发送该CSR到一个CA以便签订,然后的了局才是可以用于Apache的一个真实的证书。
有两种选择:
第一种,你可以经由过程一个贸易性CA如Verisign 或 Thawte签订证书。那末你凡是要将CSR贴入一个web表格 ,付出签订费用并守候签订的证书,然后你可以把它存在一个server.crt文件中。关于贸易性CA的更多信息,请拜见以下链接:
Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
Thawte Consulting - http://www.thawte.com/certs/server/request.html
CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br
IKS GmbH - http://www.iks-jena.de/produkte/ca /
Uptime Commerce Ltd. - http://www.uptimecommerce.com
BelSign NV/SA - http://www.belsign.be
你本人的CA
第二种,你可以使用本人的CA并由该CA签订CSR。你可以创立本人的认证中间来签订证书。最复杂的办法是使用OpenSSL供应的CA.sh或 CA.pl剧本。对照庞杂并且是手工的办法是:
为你的CA创立一个RSA私用密钥( 被Triple-DES加密而且停止PEM格局化的):
# openssl genrsa -des3 -out ca.key 1024
请在平安的中央备份这个ca.key文件。记住你输出的通行短语(pass phrase)!你可以经由过程上面的号令看到这个RSA私用密钥的细节。
# openssl rsa -noout -text -in ca.key
并且你可觉得这个RSA私用密钥创立一个加密的PEM版本(不保举),经由过程以下号令:
# openssl rsa -in ca.key -out ca.key.unsecure
使用CA的RSA密钥创立一个自签订的CA证书(X509布局)(输入将是PEN格局的):
# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
你可以经由过程以下号令检查该证书的细节:
# openssl x509 -noout -text -in ca.crt
筹办一个签订所需的剧本,由于"openssl ca"号令有一些奇异的请求并且缺省的OpenSSL设置装备摆设不答应复杂地直接利用"openssl ca"号令,所以一个名为sign.sh的剧本随mod_ssl分发一道宣布(子目次pkg.contrib/)。 利用该剧本停止签订。
如今你可使这个CA签订办事器的CSR,以便创立用于Apache办事器外部的真实的SSL证书(假定你手头已有一个server.csr):
# ./sign.sh server.csr
它签订办事器的CSR而且了局在一个server.crt文件中。
如今你有两个文件:server.ket和server.crt。在你的Apache的httpd.conf文件中,以下利用它们:
SSLCertificateFile /path/to/this/server.crt
SSLCertificateKeyFile /path/to/this/server.key
server.csr不再需求了。
接触MYSQL,开始设计数据库程序
作者: admin    时间: 2015-2-4 06:45
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 深爱那片海    时间: 2015-2-7 13:48
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 精灵巫婆    时间: 2015-2-15 02:06
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 再现理想    时间: 2015-3-4 10:55
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 简单生活    时间: 2015-3-19 07:04
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 活着的死人    时间: 2015-3-27 10:39
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 冷月葬花魂    时间: 2015-4-2 07:42
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者: 只想知道    时间: 2015-4-4 04:23
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 山那边是海    时间: 2015-4-6 23:10
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 灵魂腐蚀    时间: 2015-4-7 05:26
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 金色的骷髅    时间: 2015-4-8 05:51
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 小魔女    时间: 2015-4-15 00:23
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 爱飞    时间: 2015-4-21 16:48
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 谁可相欹    时间: 2015-5-6 22:09
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 变相怪杰    时间: 2015-6-19 10:33
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 若天明    时间: 2015-9-22 22:44
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 海妖    时间: 2015-10-8 04:05
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 愤怒的大鸟    时间: 2015-10-8 17:36
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2