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>







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章