码迷,mamicode.com
首页 > Web开发 > 详细

Apache 的修改端口,虚拟主机搭建基于网站加密和常见问题解答

时间:2014-10-30 15:33:12      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:虚拟主机   ip地址   虚拟机   加密   网站   端口   

Apache 的修改端口,虚拟主机搭建基于网站加密和常见问题解答

                                              作者  浩浩哥来了

首先需要确定apache这个服务存在

/etc/init.d/httpd restart 如果启动起来了说明你已经安装成功

如果启动不起来就需要自己手动安装,因为添加了本地源,所以可以直接安装

Yum install http* -y

/etc/init.d/httpd restart 在一次检测下,服务安装成功与否

Cd /var/www/html 目录下是存放网页的路径

Vim index.html 因为当前手头没有相应的网站,自己手动添加了一个index.html的临时网站

在网站中添加一些信息对网页进行标识。例如 huan ying lai dao haohaoge de wang zhan

/etc/init.d/httpd restart 对于修改了一些配置或者其他的操作,随手重启下服务是对你有好处的

192.168.18.112:80  前面是你的虚拟机中的ip地址后面是apache中默认的80端口

 

对网站修改端口

Vim /etc/httpd/conf/httpd.conf 这是apache的配置文件

/80 通过是/80找到在apache配置文件中两处需要修改80端口换成你当前需要使用的端口

#ServerName www.example.com:80 将此处的#去掉同时将80换成81,同时必须指明你当前的主机名,跟换成下面格式

ServerName haohaogelaile:81

Listen :80 在此处必须指明你的apacheip地址同时需要是用冒号将端口分隔开后面是修改的端口

Listen 192.168.18.112:81

/etc/init.d/httpd restart

重启服务会出现一下错误

[root@www conf]# /etc/init.d/httpd restart

停止 httpd                                              [确定]

正在启动 httpd(13)Permission denied: make_sock:could not bind to address 192.168.18.112:81

no listening sockets available, shuttingdown

Unable to open logs

                                                          [失败]

 

解决方法

selinux中添加http的端口

Yum install policycoreutils-python* -y

[root@www conf]# semanage port -l | grephttp    首先筛选出http的所有端口

http_cache_port_t              tcp      3128, 8080, 8118, 8123, 10001-10010

http_cache_port_t              udp      3130

http_port_t                    tcp      80, 443, 488, 8008, 8009, 8443

pegasus_http_port_t            tcp      5988

pegasus_https_port_t           tcp      5989

[root@www conf]# semanage port -a -thttp_port_t -p tcp 81  http添加81端口(port 端口必须指明 –a 添加的意思 –t是选择类型 –p选择协议以上可以根据筛选出来的结果相应的填写后面是81你所需要添加的端口)

[root@www conf]# semanage port -l | grephttp 在筛选一次看看81端口是否出现,添加过程较慢,需要耐心等待

http_cache_port_t              tcp      3128, 8080, 8118, 8123, 10001-10010

http_cache_port_t              udp      3130

http_port_t                    tcp      81, 80, 443, 488, 8008, 8009, 8443

pegasus_http_port_t            tcp      5988

pegasus_https_port_t           tcp      5989

[root@www conf]# /etc/init.d/httpd restart

停止 httpd                                              [失败]

正在启动 httpd                                           [确定]

[root@www conf]# /etc/init.d/httpd restart

停止 httpd                                              [确定]

正在启动 httpd                                           [确定]

在用浏览器输入192.168.18.112:81看看网页内容

 

修改网站存放路径

Vim /etc/httpd/conf/httpd.conf

/DocumentRoot  筛选找到该行

DocumentRoot “/web”  我会在根目录下创建web文件夹

Mkdir /web

[root@www conf]# ll -Z -d /var/www/html/ 将系统设定的路径下的上下文弄出来

drwxr-xr-x. root rootsystem_u:object_r:httpd_sys_content_t:s0 /var/www/html/

[root@www conf]# chcon -R -thttpd_sys_content_t /web  将之前的上下文添加到你需要放置的路劲文件上

Vim /web/index.html  编辑网页内容

/etc/init.d/httpd restart

在浏览器中输入192.168.18.112:81  可以看到你之前修改完后路劲上的网页信息

 

虚拟主机

基于一个ip多个域名

如果在你apache服务器中没有配置DNS服务器的想要通过域名访问你网站,进行如下操作

Vim /etc/hosts

192.168.18.112 www.haohaogelaile.comluowenhao   ip和域名相对应

192.168.18.112 www.baidu.com baidu

随后创建两个不同网站的文件路径

Mkdir /web

Mkdir /web1

chcon -R -t httpd_sys_content_t /web

chcon -R -t httpd_sys_content_t /web1

vim /web/index.html  在两个网页填写不同的内容来区分

vim /web1/index.html

vim /etc/httpd/conf/httpd.conf

NameVirtualHost 192.168.18.112:80   指明虚拟主机的ip和端口

<VirtualHost 192.168.18.112:80> 

   ServerAdmin haohaogelaile@qq.com  虚拟主机管理员邮箱

   DocumentRoot /web1  虚拟主机的文件路径

   ServerName www.haohaogelaile.com虚拟主机域名

   ErrorLog logs/dummy-host.example.com-error_log  日志存放路径和名称

   CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost 192.168.18.112:80>

   ServerAdmin haohaogelaile@qq.com

   DocumentRoot /web2

   ServerName www.baidu.com

   ErrorLog logs/dummy-host.example.com-error_log

   CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

虚拟主机存在优先级,在配置文件中从上倒下,第一个网页可以使用ip或者域名直接访问,第二个则必须使用域名才能访问

 

对网站进行加密

[root@www conf]# yum list | grep mod_ssl 

mod_ssl.x86_64                        1:2.2.15-15.el6                  luo.repo

[root@www conf]# yum install mod_ssl.x86_64–y

[root@www conf]# cd /etc/pki/tls/certs/ 在此路径下添加证书

[root@www certs]# make haohaogelaile.pem  生成好好哥来了这个证书

umask 77 ; \

       PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \

        PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \

       /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509-days 365 -out $PEM2 -set_serial 0 ; \

       cat $PEM1 >  haohaogelaile.pem; \

       echo ""    >>haohaogelaile.pem ; \

        cat $PEM2 >> haohaogelaile.pem ; \

       rm -f $PEM1 $PEM2

Generating a 2048 bit RSA private key

..........+++

...........+++

writing new private key to‘/tmp/openssl.LyXtf7‘

-----

You are about to be asked to enterinformation that will be incorporated

into your certificate request.

What you are about to enter is what iscalled a Distinguished Name or a DN.

There are quite a few fields but you canleave some blank

For some fields there will be a defaultvalue,

If you enter ‘.‘, the field will be leftblank.

-----

Country Name (2 letter code) [XX]:CN  国家中国

State or Province Name (full name) []:BJ 省会 北京

Locality Name (eg, city) [Default City]:BJ 城市 北京

Organization Name (eg, company) [DefaultCompany Ltd]:WANGDONG 公司

Organizational Unit Name (eg, section)[]:YUNWEI 部门

Common Name (eg, your name or your server‘shostname) []:haohaogelaile.com 主机名

Email Address []:haohaogelaile@qq.com 邮箱

[root@www certs]# chmod o+xhaohaogelaile.pem

Vim /etc/httpd/conf.d/ssl.conf

SSLCertificateFile/etc/pki/tls/certs/haohaogelaile.pem 去掉#号同时将你证书生成的路径填在后面

SSLCertificateKeyFile/etc/pki/tls/certs/haohaogelaile.pem 同上

Vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:443  将此处的端口换成443,443是网站加密过后的端口

<VirtualHost *:443>   此处也换成443

   ServerAdmin haohaogelaile@qq.com

   DocumentRoot /web1

   ServerName www.haohaogelaile.com

   SSLEngine on 加密打开

   SSLCertificateFile /etc/pki/tls/certs/haohaogelaile.pem  指向之前加密证书的路径

   SSLCertificateKeyFile /etc/pki/tls/certs/haohaogelaile.pem

   ErrorLog logs/dummy-host.example.com-error_log

   CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost *:443>    如果有多个网站添加多个如下

   ServerAdmin haohaogelaile@qq.com

   DocumentRoot /web

   ServerName www.baidu.com

   SSLEngine on

   SSLCertificateFile /etc/pki/tls/certs/haohaogelaile.pem

   SSLCertificateKeyFile /etc/pki/tls/certs/haohaogelaile.pem

   ErrorLog logs/dummy-host.example.com-error_log

   CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

用浏览器访问https192.168.18.112:443 会出现证书风险的提示毕竟是自己弄得玩的,要没风险的是要钱滴!

 

多个ip对应多个域名

首先在虚拟机中添加一块网卡,为eth1192.168.18.113

Vim /etc/hosts

192.168.18.112 www.haohaogelaile.comluowenhao

192.168.18.113 www.baidu.com baidu

Vim /etc/httpd/conf/httpd.conf

<VirtualHost 192.168.18.112:443>  在此处将*换成你所需要替代的ip

   ServerAdmin haohaogelaile@qq.com

   DocumentRoot /web1

   ServerName www.haohaogelaile.com

   SSLEngine on

   SSLCertificateFile /etc/pki/tls/certs/haohaogelaile.pem

   SSLCertificateKeyFile /etc/pki/tls/certs/haohaogelaile.pem

   ErrorLog logs/dummy-host.example.com-error_log

   CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost 192.168.18.113:443>  同上

   ServerAdmin haohaogelaile@qq.com

   DocumentRoot /web

   ServerName www.baidu.com

   SSLEngine on

   SSLCertificateFile /etc/pki/tls/certs/haohaogelaile.pem

   SSLCertificateKeyFile /etc/pki/tls/certs/haohaogelaile.pem

   ErrorLog logs/dummy-host.example.com-error_log

   CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

/etc/init.d/httpd restart

/etc/init.d/network restart

测试在浏览器中输入https://192.168.18.112:443 可以看到第一个网页信息

https://192.168.18.113:443 可以看到第二个网页的信息

 

常见问题

()

启动apache遇到错误:httpd: Could not reliablydetermine the server‘s fully qualified domain name
[root@server httpd-2.2.4]# /etc/init.d/httpd start
 
httpd: Could not reliably determine the server‘s fully qualified domain name,using 127.0.0.1 for ServerName
 
[root@server ~]# cd /etc/httpd/conf/httpd.conf 进入apache的安装目录
[root@server conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@server conf]# vi httpd.conf   编辑httpd.conf文件,搜索"#ServerName",添加ServerName localhost:80
#ServerName www.example.com:80
ServerName localhost:80
3)再重新启动apache 即可。
[root@server ~]# /etc/init.d/htttpd restart

 

()
OS 10048)通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次
make_sock: could not bind to address 0.0.0.0:80...” 

一般是IIS或其他程序占用了80端口引起的,引起的原因,可以参考:

http://wiki.apache.org/httpd/CouldNotBindToAddress

我是由于安装了Skype,开着Skype占用了80端口 

几种可能的解决方案:
1)由于服务器的80端口被占用引起的,如果是windows的话就是IIS,停掉Default Web Site就可以了;

2)将httpd.conf中的Listen 80行改为  Listen 81,换一个端口
3)将httpd.conf中的Listen 80行改为  Listen 127.0.0.1:80

 

()

服务器总共2VirtualHost apachectl restart的时候却出现了下面的警告提示:

[warn] _default_ VirtualHost overlap onport 80, the first has precedence

这个,大概意思就是后面新增加的这个个VirtualHost 由于端口被占用,不能生效,沿用第一个虚拟主机的配置。

检查了一下,发现,原来在httpd.conf里,我没有把#NameVirtualHost *:80前的注释去掉,导致这个没有生效。

去掉#之后restart,问题解决,网站可以正常访问。

 


本文出自 “浩浩哥来了” 博客,谢绝转载!

Apache 的修改端口,虚拟主机搭建基于网站加密和常见问题解答

标签:虚拟主机   ip地址   虚拟机   加密   网站   端口   

原文地址:http://8292004.blog.51cto.com/8282004/1569628

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!