Linux配置与应用web服务

| 文章字数:4.2k | 阅读时长:16min
这是一篇更新于 542 天前的文章,其中的信息可能已经有所发展或是发生改变。

web服务器采用浏览器/服务器(B/S)模型,浏览器用于解释和显示web页面,响应用户的输入请求,并通过HTTP协议讲用户请求的数据传递给web服务器。web服务器默认是使用80端口为客户机的浏览器提供浏览服务,浏览器使用HTTP发送请求,浏览器与服务器建立连接后,服务器查找到文档后将文档回传给客户机浏览器。

任务一

安装与配置完美的LAMP服务器

任务说明Web服务器又乘www服务器,是放置一般网站的服务器。一台web服务器上可以来建立多个网站,各个网站的拥有者只需要把做好的网页和相关文件放置在web服务器的网站中,其他用户就可以用浏览器访问网站中做好的网页了。LAMP是Linux、Apache、Mysql、PHP组合的简称,公司现因业务发展的需要,需要搭建一台自己的web服务器,用以存放公司的门户网站。要求服务器支持Mysql数据库以及PHP的动态网站,服务器IP地址为192.168.30.128

安装Apache

1
yum install httpd -y

设置Apache开机自启

1
chkconfig --levels 235 httpd on

启动Apache

1
service httpd start

启动后在浏览器中输入ip地址会看到一个centos的Apache的测试界面。

注意:若启动提示错误(🙅‍不影响访问)可以使用vim /etc/httpd/conf/httpd.conf命令修改配置文件,找到“ServerName”字样,在下面添加如下内容

1
ServerName localhost:80

发布一个简单的网页

使用mkdir -p /www/yhy创建存放网站的文件夹,使用echo "Hello world">/www/yhy/index.html创建主页文件。当然准确的来说这样创建html文件不是很正规的,不过只是测试而已无伤大雅🤪。使用vim /etc/httpd/conf/httpd.conf编辑配置文件在最后加入如下内容

1
2
3
<VirtualHost * :80>
4DocumentRoot /www/yhy
</VirtualHost>

在浏览器中输入IP地址访问测试主页,出现Hello world字样则说明成功。

注意我们需要要关闭防火墙以及SELinux

安装PHP

1
2
yum install -y php
yum install -y php-mbstring

使用vim /etc/httpd/conf/http.conf编辑配置文件在DirectoryIndex那一行添加index.php保存退出

修改网站文件夹下的index.html的名字,然后建立index.php文件中内容如下

1
<?php phpinfo();?>

刷新浏览器可以看到php的支持界面。

安装Mysql

1
yum install mysql-server mysql mysql-devel -y

要想让PHP支持MySQL,还需要安装php-mysql的安装包可以直接通过yum install -y php-mysql来进行安装。

开机启动

1
chkconfig --levels 235 mysqld on

启动服务

1
service mysqld start

当页面显示 Starting mysqld [OK] ,表示MySQL已启动。

修改数据库root用户密码

1
mysql_secure_installation

默认密码是为空的,所以所以提示 Enter current password for root (enter for none) 时,输入 回车(enter) 就可以。

设置新密码
这里设置新的root密码

1
2
3
Set root password? [Y/n] y
New password:
Re-enter new password:

注意:

1.输入的密码不会显示出来。在真实的生产环境中一定要设置复杂度高的密码,以免被暴力破解。

2.设置 MySQL 根密码仅是保护数据库的最基本措施。在构建或安装数据库驱动的应用程序时,用户通常可以为该应用程序创建数据库服务用户,并避免使用根账户执行除数据库管理以外的操作。

其他设置
下面根据个人偏好来进行设置,没有绝对的要求

1
2
3
4
Remove anonymous users? [Y/n] Y                #是否移除匿名用户
Disallow root login remotely? [Y/n] n #是否不允许root远程登录
Remove test database and access to it? [Y/n] n #是否移除test数据库
Reload privilege tables now? [Y/n] y #是否重新加载表的权限

登录数据库

1
mysql -u root -p

可以通过show databases;命令查看系统中的数据库

查看Mysql的主要配置文件

(1)Mysql的主配置文件为/etc/my.cnf

可以通过cat /etc/my.cnf来查看Mysql的主配置文件

(2)Mysql数据库文件的存放位置为/var/lib/mysql

(3)创建数据库来验证一下存放的位置。

1
2
create database yhy;
show databases;

或者也可以通过ll /var/lib/mysql来查看Mysql数据库文件的存放位置。

(4)数据库的日志输出存放位置

Mysql数据库的一些日志输出存放位置都是在/var/log这个目录下。mysqld.log存放MySQL数据库的一些日志信息。

(5)MySQL数据库是可以通过网络来访问的,其实用的协议是TCP/IP协议,MySQL数据库绑定的端口号为3306。可以使用netstat -anp |grep mysqld来查看。

安装PHPmyadmin

介绍:phpMyAdmin是一个以PHP为基础,以web-Base方式架构在网站主机上的MySQL数据库管理工具。他不仅可以管理整个MySQL服务器,而且也可以管理单个数据库。

1
2
3
4
cd /www/yhy	
wget http://oss.aliyuncs.com/aliyunecs/onekey/phpMyAdmin-4.1.8-all-languages.zip
unzip phpMyAdmin-4.1.8-all-languages.zip
mv phpMyAdmin-4.1.8-all-languages phpmyadmin

在浏览器中输入IP地址/phpmyadmin,然后会出现一个登录的界面。输入自己的数据库账号密码可以登录进去对数据库进行管理。具体如下图所示。

(6)添加允许访问的端口21:ftp ,80:http命令如下

1
2
iptables -I RH -Firewall -1 -INPUT -m state -state NEW -m tcp -p tcp -dport 21 -j ACCEPT
iptables -I RH -Firewall -l -INPUT -m state -state NEW -m tcp -p tcp

建议初学者可以使用service iptables stop来关闭防火墙和setenforce 0关闭SELinux来避免出错。但是这样十分不安全,以后的开发中还是要严谨的来,切记不可这样做。

任务二

配置多虚拟主机服务器

要求使用10.0.0.8和10.0.0.9两个IP地址创建基于IP地址的虚拟主机,其中IP地址为10.0.0.8的虚拟主机对应的主目录为/usr/www/web1,IP地址为10.0.0.9的虚拟主机对应的主目录为/usr/www/web2。在DNS服务器中建立web1.yhy.com和web2.yhy.com两个域名,使它们解析到同一个IP地址10.0.0.8上,然后创建基于域名的虚拟主机,其中:域名为web1.yhy.com的虚拟主机对应的主目录为/usr/www/web1,域名为web2.yhy.com的虚拟主机对应的主目录为/usr/www/web2。

配置单网卡多IP地址

1
2
3
4
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:1
vim ifcfg-eth0 //配置eth0的IP地址
vim ifcfg-eth0:1 //配置eth0:1的IP地址

只需修改网卡eth0:1中的以下两项,修改为如下所示:

1
2
DEVICE=eth0:1
IPADDR=10.0.0.9

使用service netwrok restart命令重启网络

建立网站主目录与主页文件

1
2
3
4
mkdir -p /usr/www/web1
mkdir /usr/www/web2
echo "web1">/usr/www/web1/index.html
echo "web2">/usr/www/web1/index.html

编辑配置文件

使用vim /etc/httpd/conf/http.conf命令配置主配置文件,在最后几行添加如下内容:

1
2
3
4
5
6
7
8
<VirtualHost 10.0.0.8:80>
4ServerAdmin webmaster@localhost.com
4DocumentRoot /usr/www/web1
</VirtualHost>
<VirtualHost 10.0.0.9:80>
4ServerAdmin webmaster@localhost.com
4DocumentRoot /usr/www/web2
</VirtualHost>

编辑完成后:wq保存退出然后重启Apache,使用service httpd restart来重启。

测试

打开浏览器先后输入10.0.0.810.0.0.9来进行测试。测试结果如下所示。

注意此处的http.conf配置文件其他的设置采用默认即可。如果这个两个IP的端口不同,要在Listen 80下面增加相应的监听端口。

思考❓如何通过web1.yhy.com和web2.yhy.com两个域名来访问相关服务呢?🌈

配置DNS服务

1
2
vim /etc/named.conf
vim /etc/named.rfc1912.zones

编辑配置文件如下所示

在区域文件中添加如下所示内容

建立正向查找域名文件

进入目录/var/named下

1
2
cp -p named.localhost yhy.zones
vim yhy.zones

重启服务关闭防火墙以及selinux

1
2
3
4
service named restart
service httpd restart
service iptables stop
setenforce 0

测试

httpd.conf配置文件的组成

httpd.conf的配置文件分为三大部分:

(1)全局变量(Global Enviornment)部分:

(2)主服务器配置(Main Server Configuration)部分:

(3)虚拟主机(Virtual Host)部分。

任务三

配置基于域名的服务器

网站搭建DNS服务器

在这里我们的测试域名为www.yhy.com

编辑配置文件

首先修改配置文件使用vim /etc/named.conf命令来进行编辑,修改成如下所示

编辑区域文件

然后使用vim /etc/named.rfc1912.zones在里面添加如下所示信息

1
2
3
4
zone "yhy.com" in{
4 type master;
44file "yhy.z";
};

建立正向查找域文件

进入目录/var/named下

1
2
cp -p named.localhost yhy.z
vim yhy.z

重启服务

1
2
service named restart  #重启
chkconfig named on #开机启动

搭建网站

创建网站主目录和主页文件

1
2
mkdir -p /www/html/yhy
echo "<h1>yhy.com</h1>">/www/html/yhy/index.html

编辑配置文件

使用vim /etc/httpd/conf/http.conf命令配置主配置文件,在最后几行添加如下内容:

1
2
3
4
5
6
NameVirtualHost 192.168.30.133
<VirtualHost 192.168.30.33:80>
4DocumentRoot /www/html/yhy
4ServerName www.yhy.com
4ServerAlias www.dumy-host.yhy.com
</VirtualHost>

还有其余一些地方做如下修改,主要是配置文件中的网站主目录。这里采用的方法或许有些不妥有一种为了目的不择手段的感觉😂。但是事实就是应该这样

使用service httpd restart命令重启apache服务器。

测试

在这里选择的是一台windows7作为客户端来进行测试,需要做如下配置。

然后打开浏览器在地址栏中输入www.yhy.com和服务器的IP地址192.168.30.133来进行测试。结果如下所示

根据结果所示我们可以看到谷歌浏览器提示了不安全,这是因为Web服务器在默认情况下,都是使用纯文本协议HTTP,纯文本协议并不会对于传输中的数据进行任何形式的加密,其在安全方面有着重大的缺陷。下面将会web服务器进行https协议进行安全加密。

任务四

安装配置服务器安全证书

为了解决HTTP协议存在的安全隐患,需要在web服务器上部署SSL证书应用HTTPS加密协议。HTTPS加密协议是HTTP协议的安全版本,有SSL+HTTP协议构建,可进行加密传输和身份认证。提供至少以下两种保障

(1)确保所有经过服务器传输的数据包都是经过加密的。

(2)对网站服务器真实身份进行认证,避免假冒。

申请HTTPS加密协议首先要到合法的CA机构,申请一张SSL证书。个人站点或者不涉及敏感信息的站点,可以申请免费安全套接字层(SSL)证书;网上银行、购物网站、政府机构等的网站应该购买更高级别的EVSS证书。在保证站点安全数据安全的同时,还可以提高站点服务商的信誉。

HTTPS实际上采用了Netscape的SSL作为HTTP应用层的子层(HTTPS使用端口443,而不是像HTTP那样使用端口80来进行和TCP/IP的通信)。SSL使用40位关键字作为RC4流加密算法,HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

安装Apache SSL支持模块

使用yum install -y mod_ssl来进行安装,安装后会自动生成/etc/httpd/conf.d/ssl.conf文件

生成证书

(1)生成一个自签名证书

下面的命令可以被用来产生一个自签名的证书。首先,生成2048位的加密私钥。

1
openssl genrsa -out ca.key 2048

(2)生成证书签名请求(CSR)

1
openssl req -new -key ca.key -out ca.csr

(3)生成X509自签名证书

1
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

(4)修改权限

chmod 400 ca.key ca.csr ca.crt修改权限为400,只有拥有者有可读权限。

(5)把创建的证书文件复制到对应的目录

1
2
3
cp ca.key /etc/pki/tls/private/
cp ca.csr /etc/pki/tls/private/
cp ca.crt /etc/pki/tls/certs/

(6)设置SSL配置Apache支持HTTPS

使用vim /etc/httpd/conf.d/ssl.conf修改SSL的设置文件,制定www.yhy.com站点HTTPS访问相关信息。内容如下图所示。建议配置前使用cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak命令进行备份。因为如果不小心配置出错的话,如果头脑不太清晰的话。可能会导致一步错步步错的情况发生,所以进行备份还是上上策。修改后内容如下图所示

通过vim /etc/httpd/conf/httpd.conf命令配置网站支持HTTPS,同样建议配置前进行备份。具体内容如下:

1
2
3
4
5
6
7
8
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
ServerAdmin admin@yhy.com
DocumentRoot /var/www/html
ServerName www.yhy.com
</VirtualHost>

使用service httpd restart重启apache服务器。

测试HTTPS访问结果

测试结果如下所示

点击继续访问后,可以进到此界面,这里提示我们刚才的证书是不安全的,是因为这本来就已经有人再用了所以会出现这种情况。

强制apache web服务器始终使用https

我们需要做的是将所有的HTTP请求重定向到HTTPS

(1)强制网站使用HTTPS访问,使用vim /etc/httpd/conf/http.conf命令编辑主配置文件。添加如下语句

1
2
ServerName www.yhy.com:80
Redirect permanent / https://www.yhy.com

(2)强制虚拟主机使用HTTPS,使用vim /etc/httpd/conf/http.conf命令编辑主配置文件。添加如下语句

1
2
ServerName www.yhy.com
Redirect permanent / https://www.yhy.com

任务五

配置服务别名与用户认证

要求

  1. 设置网站主目录的路径为/var/www/web
  2. 添加index.jsp文件作为默认文档
  3. 设置Apache监听端口号为8888
  4. 设置默认字符集为GB2312
  5. 建立一个名为test的虚拟目录,其对应的物理路径是/usr/local/test,并配置Web服务器允许该虚拟目录浏览和允许内容协商的多重视图特性,仅允许来自网络10.0.0.0网段的客户机的访问
  6. 建立一个名为private的虚拟目录,其对应的物理路径为/usr/local/private,并配置Web服务器对该虚拟目录启用用户认证,只允许用户名为abc和xyz的用户访问。

建立相关目录及文件

1
2
3
4
5
6
7
8
mkdir -p /var/www/web #建立网站目录
cd /var/www/web
mkdir test private #在网站主目录下建立虚拟目录
mkdir -p /usr/local/test #建立别名目录
mkdir -p /usr/local/private #建立认证目录
echo "www.yhy.com">/var/www/web/index.jsp
echo "test">/usr/local/test/index.jsp
echo "private">/usr/local/private/index.jsp

建立允许访问认证网站的用户

1
2
3
htpasswd -c /etc/httpd/mycreatpwd abc
htpasswd -c /etc/httpd/mycreatpwd xyz
chmod 755 /etc/httpd/mycreatpwd

备注:mycraetpwd文件的权限,设置成用户可以访问就可以,设置权限为755。尽可能不要放在网站的根目录下,防止被人下载。

通过cat命令查看mycraetpwd文件中的内容

配置http.conf文件

使用vim /etc/httpd/conf/httpd.conf修改主配置文件,

1
2
3
4
Listen 8888	#在136行,定义服务器端口号
DocumentRoot "/var/www/web" #在292行,定义网站根目录路径
DirectoryIndex index.jsp #在402行,添加默认主页的文件名
AddDefaultCharest GB2312 #在759行,添加网站编码

备注:在vim编辑器中,打开文件后按Esc键后输入:set nu可以显示文件的行号。也可以输入/+关键词来快速查找需要修改的内容。

同时在文档中相应位置,增加如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Alias /test/ "/usr/local/test/"
<Directory "/usr/local/test/">
Options Indexes
Order allow,deny
Allow from 10.0.0.0/8
</Directory>
Alias /private "/usr/local/private/"
<Directory "/usr/local/private/">
Authtype basic
AuthName "This is private directory,please login:"
AuthUserFile "/etc/httpd/mycreatpwd"
Require user abc xyz
AllowOverride all
Order allow,deny
Allow from 10.0.0.0/8
</Directory>
<VirtualHost www.yhy.com:8888>
DocumentRoot /var/www/web
ServerName www.yhy.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

备注:使用service iptables stopsetenforce 0关闭防火墙以及SELINUX。然后使用service httpd restart重启服务choconfig --levels 235 httpd on设置开机启动

测试

在客户机的浏览器中输入www.yhy.com:8888

在客户机的浏览器中输入www.yhy.com:8888/test

在客户机的浏览器中输入www.yhy.com:8888/private

扫码加我微信