Web services are important in network communication, and what we're going to show here is the heavy-http protocol in Web services.
Under CentOS6.5, the Implementation tool for the HTTP protocol is called HTTPD, and we can use commands to view the current version of HTTPD and whether the HTTPD service is installed on this machine.
For example:
[Email protected] conf]# rpm-q httpd
Httpd-2.2.15-29.el6.centos.x86_64
This is the version of HTTPD 2.2.15. This version of HTTPD has a number of features, which are presented in the following example: Suppose our environment: a VMware Virtual host serves as a server-side Web service, and our client simulations use Win7
Then start between httpd, first say httpd has a master configuration file, defined httpd many new features. Due to our httpd2.2 version, two working modes are defined by default, one is Prefork and the other is worker.
We can see what files are generated by the HTTPD program through RPM–QL httpd.
[Email protected] conf]# RPM-QL httpd
......
/USR/SBIN/HTTPD (actually it's prefork)
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
Since HTTPD has a working mode, you must know which mode it works in, it is prefork mode by default, and it has a worker mode. Let's take a look at each of the two features in the config file:
(The server pre-generates something like "process pool (Server-pool)" Before responding to a client request, generating many sub-processes, the client responds, and we respond from the pool tone process)
For Prefork mode: In this working mode, the server's main process will fork itself to produce multiple sub-processes, each of which responds to a customer request.
<ifmodule prefork.c>
When the Startservers 8 service is turned on, 8 idle processes are generated
Minspareservers 5 Minimum number of idle processes
Maxspareservers 20 Maximum number of idle processes
Serverlimit 256 The maximum number of processes requested
MaxClients 256 maximum number of client requests allowed by the server at the same time
Maxrequestsperchild 4000 maximum number of requests per child process
</IfModule>
For this worker pattern: In worker mode, each child process generates many threads, and each thread requests a client request.
<ifmodule worker.c>
Startservers 4 Server restarts with 4 idle processes waiting for a client connection
MaxClients 300 indicates the maximum number of concurrent user requests allowed at the same time
Minsparethreads 25 minimum number of idle threads
Maxsparethreads 75 Maximum number of idle threads
Threadsperchild 25 Number of threads each child process can open
Maxrequestsperchild 0 The maximum number of requests per child process to handle
So we have a general understanding, we do the experimental experiment under the two modes of work.
Implementation: By renaming the configuration file method to open the working mode, such as:
[Email protected] sbin]# ll/usr/sbin/httpd*
-rwxr-xr-x. 1 root root 354816 2013/usr/sbin/httpd
-rwxr-xr-x. 1 root root 368168 2013/usr/sbin/httpd.event
-rwxr-xr-x. 1 root root 367240 2013/usr/sbin/httpd.worker
Now we turn on the HTTPD service to see the number of idle processes:
[[Email protected] sbin]# PS aux | grep "httpd*"
Root 2843 0.0 1.6 241748 8260? Ss 11:04 0:00/usr/sbin/httpd
Apache 2846 0.0 0.9 241748 4772? S 11:04 0:00/usr/sbin/httpd
Apache 2847 0.0 0.9 241748 4776? S 11:04 0:00/usr/sbin/httpd
Apache 2848 0.0 0.9 241748 4772? S 11:04 0:00/usr/sbin/httpd
Apache 2849 0.0 0.9 241748 4772? S 11:04 0:00/usr/sbin/httpd
Apache 2850 0.0 0.9 241748 4772? S 11:04 0:00/usr/sbin/httpd
Apache 2851 0.0 0.9 241748 4772? S 11:04 0:00/usr/sbin/httpd
Apache 2852 0.0 0.9 241748 4772? S 11:04 0:00/usr/sbin/httpd
Apache 2853 0.0 0.9 241748 4772? S 11:04 0:00/usr/sbin/httpd
Root 3550 0.0 0.1 103252 828 pts/1 s+ 13:41 0:00 grep httpd*
The process for marking the red italic is exactly 8, and the default number of 8 idle processes is turned on for the corresponding profile.
Now we switch to Httpd.worker working mode:
First look at the following:
[Email protected] sbin]#!ll
ll/usr/sbin/httpd*
-rwxr-xr-x. 1 root root 354816 2013/usr/sbin/httpd
-rwxr-xr-x. 1 root root 368168 2013/usr/sbin/httpd.event
-rwxr-xr-x. 1 root root 367240 2013/usr/sbin/httpd.worker
---------------------------------------------------------------------------------------------
Rename file again
[Email protected] sbin]# mv/usr/sbin/httpd/usr/sbin/httpd.prefork
[Email protected] sbin]# MV/USR/SBIN/HTTPD.EVENT/USR/SBIN/HTTPD
Restart Service
[Email protected] sbin]# service httpd restart
stopping httpd: [OK]
Starting httpd: [OK]
Now we look at the number of idle processes:
[Email protected] sbin]#!ps
PS aux | grep "httpd*"
Root 3578 0.0 0.8 184488 4032? Ss 13:46 0:00/usr/sbin/httpd
Apache 3581 0.0 0.6 528748 3276? Sl 13:46 0:00/usr/sbin/httpd
Apache 3582 0.0 0.6 528748 3284? Sl 13:46 0:00/usr/sbin/httpd
Apache 3583 0.0 0.6 528748 3280? Sl 13:46 0:00/usr/sbin/httpd
Root 3668 0.0 0.1 103252 832 pts/1 s+ 13:48 0:00 grep httpd*
Add the root user to the 80 port open listening socket This idle process, exactly 4.
Because the HTTPD service requires socket-based file communication, IP and port formats are required, so the master configuration file also defines the concept of the port, so that it does not pass the recognized 80 port.
Listen 80
Listen 38080
I've defined a 38080 port to use for Web services, so let's look at the actual effect:
[Email protected] sbin]# SS-TNLP | grep "httpd*"
LISTEN 0 128::::::* Users: (("httpd", 3805,4), ("httpd", 3808,4), ("httpd", 3809,4), ("httpd", 3810,4), ("httpd", 3811,4), (httpd), 3812,4), ("httpd", 3813,4), ("httpd", 3814,4), ("httpd", 3815,4))
LISTEN 0 128::: 38080:::* Users: (("httpd", 3805,6), ("httpd", 3808,6), ("httpd", 3809,6), ("httpd", 3810,6), ("httpd", 3811,6), (httpd), 3812,6), ("httpd", 3813,6), ("httpd", 3814,6), ("httpd", 3815,6))
Since our httpd is highly modular, it can be loaded dynamically and is very useful! For example: We want to disable the function of a module, take auth_digest as an example, we will ban it.
LoadModule Auth_basic_module modules/mod_auth_basic.so
#LoadModule Auth_digest_module modules/mod_auth_digest.so
Save and view directly
[Email protected] ~]# httpd-d dump_modules | grep "Digest"
Syntax OK
[[email protected] ~]# echo $?
1
Note that the digest module is blocked by us, it can be successfully commented out directly, do not need to restart the service or reread the configuration file.
In fact, our Web service is best not to open the service as root directly, so the configuration file defines the user to start the HTTP service, as follows
User Apache
Group Apache
Corresponding to the host, look!
Apache 3808 0.0 1.1 241880 5564? S-0:00/USR/SBIN/HTTPD
Apache 3809 0.0 1.1 241880 5564? S-0:00/USR/SBIN/HTTPD
Apache 3810 0.0 1.1 241748 5444? S-0:00/USR/SBIN/HTTPD
Apache 3811 0.0 1.1 241748 5444? S-0:00/USR/SBIN/HTTPD
Apache 3812 0.0 1.1 241748 5444? S-0:00/USR/SBIN/HTTPD
Apache 3813 0.0 1.1 241880 5564? S-0:00/USR/SBIN/HTTPD
Apache 3814 0.0 1.1 241748 5440? S-0:00/USR/SBIN/HTTPD
Apache 3815 0.0 1.1 241748 5444? S-0:00/USR/SBIN/HTTPD
Let's talk again about where the homepage address of the Web page is, because our environment CentOS6.5 this Linux system host to provide httpd services, so the home page is likely to define a directory under Linux as the portal for Web services, in the configuration file to write
Documentroot/var/www/html
It defines the "portal" of the Web service, assuming it has a 1.html file under the Linux host, and if it is edited, it will be accessible to 1.html with our client (Win7), right, let's try:
[Email protected] ~]# ll/var/www/html/1.html
-rw-r--r--1 root root 9 14:22/var/www/html/1.html
[Email protected] ~]# cat/var/www/html/1.html
Hellooooooooooooo
Ask our customers to request this page
650) this.width=650; "Style=" border-right-0px; border-top-width:0px; border-bottom-width:0px; border-left-width:0px "title=" 1 "border=" 0 "alt=" 1 "src=" http://img1.51cto.com/attachment/201408/10/6249823_ 1407644126bzrh.jpg "width=" 244 "height="/>
That's right!
First, the httpd directory usually has a index.html, this page is usually defined by the main page, if not, the server will become a similar "download" page, let us see
[Email protected] ~]# ll/var/www/html/
1.html c6/ct6.cfg hello.html hi.html ks.cfg repodata/test.html zabbix/
There is no index.html, is it. Let our client access it try:
650) this.width=650; "Style=" border-right-0px; border-top-width:0px; border-bottom-width:0px; border-left-width:0px "title=" 2 "border=" 0 "alt=" 2 "src=" http://img1.51cto.com/attachment/201408/10/6249823_ 1407644130was6.jpg "width=" 244 "height=" 236 "/>
What is this for?
In fact, this is the configuration file defined by the access mechanism, in the configuration file has a set of default DocumentRoot page parameters, note in the configuration file here,
<directory "/var/www/html" >
Options Indexes FollowSymLinks
Mainly see indexes This parameter, if you take it will show that, there is a download list, let you pick the download, this is not a potential huge leak, usually we can remove this item, if removed, as if, as if to look like, such as in front of indexes plus a-character, This in fact ensures a great degree of security. In fact, our configuration file is written here.
# same purpose, but it's much slower.
401 #
402 DirectoryIndex index.html Index.html.var
Find index.html from here as homepage
<directory "/var/www/html" >
Options-indexes FollowSymLinks
Save and reread the configuration file.
650) this.width=650; "Style=" border-right-0px; border-top-width:0px; border-bottom-width:0px; border-left-width:0px "title=" image "border=" 0 "alt=" image "src=" http://img1.51cto.com/attachment/201408/10/ 6249823_14076441324zjs.png "width=" 244 "height=" 119 "/> Haha, is not very magical!
And what does this followsymlinks mean, let's give an example:
Create a soft link to 1.html in the root file directory, in the following format:
[Email protected] html]# ln-sv/tmp/1.html/var/www/html/2014.html
'/var/www/html/2014.html ', '/tmp/1.html '
FollowSymLinks is then turned on by default in the configuration file, you can find 1.html by entering the URL http://192.168.1.184/2014.html, see:
650) this.width=650; "Style=" border-bottom:0px; border-left:0px; border-top:0px; border-right:0px "title=" image "border=" 0 "alt=" image "src=" http://img1.51cto.com/attachment/201408/10/6249823_ 1407644133jbku.png "" 244 "height="/>.
Our httpd also has the log function, the log is divided into two kinds, one is the error log, one is the Customlog access log, and the configuration file defines the path where, first see Customlog location
Customlog Logs/access_log combined
There are also error logs for: errorlog Logs/error_log
lrwxrwxrwx. 1 root root June 17:21 logs. /.. /VAR/LOG/HTTPD here is actually a link that points to the/var/log/httpd/
[Email protected] logs]# cd/var/log/httpd/
[email protected] httpd]# LL
Total 1348
-rw-r--r--1 root root 34583 9 23:24 access_log
-rw-r--r--1 root root 3874 Jul 22:07 access_log-20140727
-rw-r--r--1 root root 1280638 Jul 19:09 access_log-20140803
-rw-r--r--1 root root 22171 9 23:22 error_log
-rw-r--r--1 root root 7697 Jul 10:20 error_log-20140727
-rw-r--r--1 root root 15110 3 09:48 error_log-20140803
Our httpd service also has a good function, you can define the path alias, create a directory, just like the previous "root file directory." As below, I now define a path alias
Add alias/music/"/tmp/music/" to the configuration file and create a 23.html inside the/tmp/music.
[Email protected] music]# CD /tmp/music/
[email protected] music]# LL
Total 4
-rw-r--r--1 root root 00:10 23.html
[email protected] music]# cat 23.html
1111111111111
Then our client enters in the browser: http://192.168.1.184/music/23.html
650) this.width=650; "Style=" border-bottom:0px; border-left:0px; border-top:0px; border-right:0px "title=" image "border=" 0 "alt=" image "src=" http://img1.51cto.com/attachment/201408/10/6249823_ 1407644134xxt5.png "" 244 "height="/> Success, not with the help of the root file directory.
Next we will introduce more new features!!!!