Linux网站服务

一,概念

前言

UI的转变:B/S架构

Web Server

Nginx(Tengine)、Apache、IIS

静态元素

.html .img  .css  .swf  .mp4

动态元素

.php .jsp .cgi .asp  SQL

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结合,java

二,静态站点

Apache

建议使用2.4及以上的版本



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

虚拟主机

目的

虚拟主机VirtualHost
作用:在一台物理服务器上运行多个网站

类型

基于主机名
基于IP地址
基于端口号

配置虚拟主机

实现如下网站:
www.a.org         /var/www/html/a.org     
www.b.org         /b.org
注意关闭firewalld和selinux

www.a.org

# mkdir /var/www/html/a.org
# vim /var/www/html/a.org/index.html

创建a.org的配置文件
# vim /etc/httpd/conf.d/a.org.conf
<VirtualHost *:80>
   ServerName www.a.org
   DocumentRoot /var/www/html/a.org
</VirtualHost>

检测配置文件语法,重启服务
# httpd -t
# systemctl restart httpd

注意:web客户机可以自建DNS,也可以HOSTs文件解析。
测试:yum install -y elinks
elink www.a.org

www.b.org

# mkdir /b.org
# vim /b.org/index.html

创建b.org的配置文件
# vim /etc/httpd/conf.d/b.org.conf
<VirtualHost *:80>
   ServerName www.b.org
   DocumentRoot /b.org
</VirtualHost>

<Directory "/b.org">
   Require all granted
</Directory>
 
检测配置文件语法,重启服务
# httpd -t
# systemctl restart httpd

注意:域名解析。www.b.org
测试:yum install -y elinks
        elink www.b.org

三,动态站点

1,HttpServer:(测试LAMP)

首先安装Apache和上面的静态站点一样

1.1 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 //默认测试页面

1.2 安装 Apache

[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# systemctl enable httpd

1.3 防火墙

[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

1.5 网站主目录建立测试页

1 建立静态页面。
[root@apache ~]# vim /var/www/html/index.html
1702test
请注意观察测试是否成功。

2 建立动态页面。
[root@apache ~]# vim /var/www/html/2.php
<?php
phpinfo();
?>
请观察测试是否成功,NO(需要安装php)

1.6 安装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
重新启动网站程序。调动php模块
[root@apache ~]# systemctl restart httpd

请再次刷新页面。见下图。PHP语言被解析成功。


请思考。PHP查询的数据存放在哪里?
答:在数据库中。

1.7 安装数据库(mysql/Mariadb)

[root@apache ~]# yum -y install mariadb-server mariadb
[root@apache ~]# systemctl start mariadb.service
[root@apache ~]# systemctl enable mariadb.service

增强mysql。
[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/2.php
<?php
$link=mysql_connect('localhost','root','123');
if ($link)
echo "Successfuly";
else
echo "Faile";
mysql_close();
?>

请思考。数据库是否可以连接成功。
测试结果: php无法连接mysql  。因为缺少php连接mysql的工具

1.8 配置php-mysql,用来连接Mariadb

配置php连接Mariadb
[root@apache ~]# yum -y install php-mysql
[root@apache ~]# php -m //查看php有哪些扩展
[PHP Modules]
mysql
mysqli
[root@apache ~]# systemctl restart httpd

1.9 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         //站点默认主目录

2.0 MPM优化 (面试题)

# prefork MPM //进程模式(稳定)
<IfModule prefork.c>
StartServers 6 //初始建立的进程数
MinSpareServers 6 //最小空闲的进程数
MaxSpareServers 15 //最大空闲的进程数
ServerLimit 2000 //最大启动的进程数 默认256
MaxClients 2000 //最大并发连接数  默认256
MaxRequestsPerChild 4000 //每个子进程在其生命周期内允许响应的最大请求数,0不限制
</IfModule>

# worker MPM //线程模式(高效)
<IfModule worker.c>
StartServers 2 //初始建立的进程数
ThreadsPerChild 50 //每个进程建立的线程数
MinSpareThreads 100 //最小空闲的线程数
MaxSpareThreads 200 //最大空间的线程数
MaxClients  2000 //最大的并发访问量(线程)
MaxRequestsPerChild 0 //每个子进程在其生命周期内允许响应的最大请求数,0不限制
</IfModule>
图示

2,部署网上商城 ecshop

下载的logo

2.1 基础环境

一,基础环境
[root@apache ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@apache ~]# setenforce 0
[root@apache ~]# systemctl stop firewalld.service
[root@apache ~]# systemctl disable firewalld.service

2.2 安装LAMP

二、安装LAMP
[root@apache ~]# yum -y install httpd mariadb-server mariadb php php-mysql gd php-gd
[root@apache ~]# systemctl start httpd mariadb
[root@apache ~]# systemctl enable httpd mariadb
[root@apache ~]# mysqladmin -u root password "123"

2.3 安装Ecshop

2.3.1 上传站点源码包

1. Apache 配置虚拟主机
[root@apache ~]# vim /etc/httpd/conf.d/zhufo.conf

 httpd -t httpd配置文件语法检测
[root@apache ~]# systemctl restart httpd

2. 导入ecshop网站源码
[root@apache ~]# mkdir -p /webroot/zhufo
[root@apache ~]# unzip ECShop_V3.0.0_UTF8_release0518.zip
[root@apache ~]# cp -rf ECShop_V3.0.0_UTF8_release0518/*    /webroot/zhufo/

3. 安装ecshop [任何client]
[root@tianyun ~]# vim /etc/hosts //如果没有使用DNS解析
192.168.122.161 www.zhufo.top zhufo.top //161为 web server IP

2.3.2 前台安装源码包


[root@apache ~]# chmod -R 777 /webroot/zhufo/



修改php.ini时区

[root@apache ~]# vim /etc/php.ini


[root@apache ~]# systemctl restart httpd


3,部署博客系统wordpress

Logo

 

3.1 基础环境[已完成]

一、基础环境[已完成]
[root@apache ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
[root@apache ~]# setenforce 0
[root@apache ~]# systemctl stop firewalld.service
[root@apache ~]# systemctl disable firewalld.service

3.2 安装LAMP[已完成]

二、安装LAMP[已完成]
[root@apache ~]# yum -y install httpd mariadb-server mariadb php php-mysql gd php-gd
[root@apache ~]# systemctl start httpd mariadb
[root@apache ~]# systemctl enable httpd mariadb
[root@apache ~]# mysql_secure_installation

3.3 安装Ecshop

3.3.1 Apache 配置虚拟主机

1. Apache 配置虚拟主机
[root@apache ~]# vim /etc/httpd/conf.d/tianyun.conf

[root@apache ~]# systemctl restart httpd

3.3.2 导入wordpress网站源码

2. 导入wordpress网站源码
[root@apache ~]# mkdir -p /webroot/tianyun
[root@apache ~]# tar xf wordpress-4.5.3-zh_CN.tar.gz
[root@apache ~]# cp -rf wordpress/* /webroot/tianyun/

3.3.3 准备数据库(创建一个库)


3.3.4 安装wordpress[任何client]

4. 安装wordpress [任何client]
[root@tianyun ~]# vim /etc/hosts
192.168.122.161 www.zhufo.top zhufo.top www.tianyun.com tianyun.com //161为 web server IP


chmod -R 777 /webroot/tianyun



4,Apache访问控制

准备环境
[root@aliyun ~]# rm -rf /var/www/edusoho/web/download/*
[root@aliyun ~]# echo "download....." > /var/www/edusoho/web/download/index.html
仅用于http 2.4+

案例1:允许所有主机访问
<Directory "/var/www/edusoho/web/download">
AllowOverride None
Require all granted
</Directory>

AllowOverride All 允许子目中的 .htaccess 中的设置覆盖当前设置
AllowOverride None 不允许子目中的 .htaccess 中的设置覆盖当前设置
    Require all denied


案例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>

案例4:针对文件的访问控制4
不允许在/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>







猜你喜欢

转载自blog.csdn.net/loukundeboke/article/details/80040682