Linux基础学习之从入门到精通Day17
网站服务
名词:
HTML:超级文本标记语言
网页:使用HTML,PHP,JAVA语言格式书写的文件。
主页: 网页中呈现用户的第一个页面
网站:多个网页组合而成的一台网站服务器
URL:访问网站的地址
统一资源定位符
网站架构
LAMP:Linux+Aoache+Mysql+php
HTTP Server
========================================================
静态元素: .html .img js css swf mp4
动态元素: .php .jsp .cgi .asp php SQL
Web Server:
Nginx(Tengine)、Apache、IIS
Web 中间件:
php: PHP-fpm、HHVM
jsp: Tomcat、JBOSS、Resin、IBM WebSphere
常见组合方式:
LNMP (Linux + Nginx + MySQL + PHP) //php-fpm进程
LAMP (Linux + Apache + MySQL + PHP) //php作为Apache的模块
Nginx + Tomcat //取代Apache与Tomcat结合
一、Apache基础
Apache: www.apache.org
软件包: httpd
服务端口: 80/tcp(http) 443/tcp(https,http+ssl)
配置文件: /etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
/etc/httpd/conf.d/welcome.conf //默认测试页面
二、安装Apache
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# systemctl enable httpd
网站主目录建立测试页:
[root@apache ~]# vim /var/www/html/index.html
a.123
[root@apache ~]# vim /var/www/html/2.php
<?php
phpinfo();
?>
192.168.31.154/index.html
[root@apache ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@apache ~]# setenforce 0
[root@apache ~]# firewall-cmd --permanent --add-service=http
[root@apache ~]# firewall-cmd --permanent --add-service=https
[root@apache ~]# firewall-cmd --reload
三、安装PHP
[root@apache ~]# yum -y install php //php作为Apache的模块
[root@apache ~]# ll /etc/httpd/modules/libphp5.so
-rwxr-xr-x. 1 root root 4588368 Jun 24 2015 /etc/httpd/modules/libphp5.so
[root@apache ~]# ll /etc/httpd/conf.d/php.conf
-rw-r--r--. 1 root root 691 Jun 24 2015 /etc/httpd/conf.d/php.conf
[root@apache ~]# systemctl restart httpd
四、安装Mariadb
[root@apache ~]# yum -y install mariadb-server mariadb
[root@apache ~]# systemctl start mariadb.service
[root@apache ~]# systemctl enable mariadb.service
[root@apache ~]# mysql_secure_installation //提升mariadb安全 [可选]
Set root password? [Y/n]
New password: 123
Re-enter new password: 123
[root@apache ~]# mysql -uroot -p123 //登录mariadb测试
MariaDB [(none)]> \q
[root@apache ~]# rm -rf /var/www/html/*
[root@apache ~]# vim /var/www/html/index.php
<?php
$link=mysql_connect('localhost','root','123');
if ($link)
echo "Successfuly";
else
echo "Faile";
mysql_close();
?>
测试结果: php无法连接mysql
五、并配置php连接Mariadb
[root@apache ~]# yum -y install php-mysql
[root@apache ~]# php -m //查看php有哪些扩展
[PHP Modules]
mysql
mysqli
[root@apache ~]# systemctl restart httpd
六、Apache基本配置
[root@tianyun ~]# vim /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" //安装目录
Listen 80 //监听端口
IncludeOptional conf.d/*.conf //包含conf.d下的*.conf文件
User apache //运行Apache的用户
Group apache //运行Apache的用户组
DirectoryIndex index.html index.php //设置默认主页
DocumentRoot //站点默认主目录
<Directory "/var/www"> //Apache访问控制
AllowOverride None
# Allow open access:
Require all granted
</Directory>
忘记MySQL密码
MySQL 5.7.5 and earlier:
[root@mysql1 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables
[root@mysql1 ~]# service mysqld restart
[root@mysql1 ~]# mysql
mysql> update mysql.user set password=password("456") where user="root" and host="localhost";
mysql> flush privileges;
mysql> \q
[root@mysql1 ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-table
[root@mysql1 ~]# service mysqld restart
Apache 访问控制
一、目录访问控制的类型
- 设置目录特性
- 基于主机
- 基于用户
二、基于主机的访问控制
准备环境
[root@aliyun ~]# rm -rf /var/www/edusoho/web/download/*
[root@aliyun ~]# echo "download....." > /var/www/edusoho/web/download/1.html
仅用于http 2.4+
案例1:允许所有主机访问
<Directory "/var/www/edusoho/web/download">
AllowOverride None
Require all granted
</Directory>
AllowOverride All 允许子目中的 .htaccess 中的设置覆盖当前设置
AllowOverride None 不允许子目中的 .htaccess 中的设置覆盖当前设置
案例2:只允许网段192.168.5.0/24、192.168.10.0/24访问
<Directory "/var/www/edusoho/web/download">
AllowOverride None
Require ip 202.106.0.0/24
Require ip 114.248.160.203
</Directory>
案例3:只拒绝某些主机访问
<Directory "/var/www/edusoho/web/download">
AllowOverride None
<RequireAll>
Require not ip 114.248.160.203
Require all granted
</RequireAll>
</Directory>
三、基于用户的访问:访问时需要用户名和密码
==使用无格式文本文件
- 建立口令文件
[root@tianyun ~]# htpasswd -cm /etc/httpd/conf/webpasswd user1
New password: 输入密码
Re-type new password: 再输入密码
Adding password for user user1
-c 创建
-m MD5
[root@tianyun ~]# cat /etc/httpd/conf/webpasswd
user1:$apr1$tkLV4/..$BL2nd2Wbx4I5ZAf5uv8ZS.
[root@tianyun ~]# htpasswd -m /etc/httpd/conf/webpasswd user2
- 配置支持认证
<Directory "/var/www/edusoho/web/download">
AllowOverride None
Require all granted
AuthType Basic
AuthName "welcome to tianyun.me..."
AuthUserFile /etc/httpd/webpasswd
Require valid-user
</Directory>
四、针对文件的访问控制
不允许在/var/www/edusoho/web/upload目录中执行.php文件
<Directory /webroot/baidu/upload>
AllowOverride None
Require all granted
<Files ~ "\.php$" >
Order allow,deny
Deny from all
</Files>
</Directory>
HTTP协议
在 OSI 七层模型中,HTTP协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了 HTTP 协议。使用 HTTP 协议时,客户端首先与服务端的 80 端口建立一个 TCP 连接,然后在这个连接的基础上进行请求和应答,以及数据的交换。
HTTP 有两个常用版本,分别是 HTTP1.0和 HTTP1.1。主要区别在于 HTTP1.0 中每次请求和应答都会使用一个新的 TCP 连接,而从 HTTP1.1 开始,减少了 TCP 连接的建立和断开,提高了效率。
常见的HTTP相应状态码
200:请求被正常处理
204:请求被受理但没有资源可以返回
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301:永久性重定向
302:临时重定向
303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用POST方法
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙