1. 程式人生 > >個人筆記--->服務器篇

個人筆記--->服務器篇

反向 his 緩存 group tor cer shu nag 無法解析

day 01

環境:
PC: eth0:192.168.4.100
代理: eth0:192.168.4.5
eth1:192.168.2.5
web: eth1:192.168.2.100

--------------------------------------------------

·squid反向代理
squid服務器
軟件包:squid-3.3.8-26.el.x86_64.rpm
系統服務:squid
主程序:/usr/sbin/squid
主配置文件: /etc/squid/squid.conf
默認監聽端口:TCP 3128
默認訪問日誌:/var/log/squid/access.log
日誌文件:
代理:
# tailf /var/log/squid/access.log
web1:
# tailf /var/log/httpd/access_log
代理緩存文件;
# cd /var/spool/squid/00/00
# ls

--------------------

構建squid反向代理

一、
·搭建web服務器
·編寫網頁內容

二、
·部署squid代理服務器
- 裝包 squid
- 修改配置 /etc/squid/squid.conf
... ...
http_port 80 vhost
visible_hostname www.qwe.com
cache_peer 192.168.2.100 parent 80 0 originserver
cache_dir ufs /var/spool/squid 200 16 256
http_access allow all

·重啟squid服務

三、
·客戶端驗證


------------------------------------------------------

varnish服務器
高性能、開元反向代理器、 http加速器

查看varnish日誌
# varnishlog //varnish日誌
# varnishncsa //訪問日誌

---------------------

部署varnish緩存服務器

一、
·部署web

二、

·安裝軟件依賴包
gcc、readline-devel、pcre-devel
·創建賬戶
·編譯安裝源碼包
./configure --prefix=/usr/local/varnish

·復制啟動腳本和配置文件
# cp redhat/varnish.initrc /etc/init.d/varnish
# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
# ln -s /usr/local/varnish/bin/* /usr/bin/
# cp redhat/varnish_reload_vcl /usr/bin/

·復制代理配置文件
# mkdir /etc/varnish
# cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/

# uuidgen > /etc/varnish/secret


三、
·修改配置文件/etc/sysconfig/varnish
... ...
VARNISH_LISTEN_PORT=80
VARNISH_STORAGE_SIZE=64M
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"

·修改代理配置文件/etc/varnish/default.vcl
backend default {
.host = "192.168.2.100";
.port = "80";
}


四、
·關掉所有80端口的服務
·啟動varnish服務
# /etc/init.d/varnish start
殺死varnish進程
# killall -9 varnishd


五、
·客戶端驗證

----------------------------------------------------------------------------------------

處理緩存過期

>>代理
# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
//交互
>ban.url c.html

# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url c.html
//非交互
//作用效果相同


==================================================

day 02


環境:
PC:192.168.4.100
代理:192.168.4.5

nginx:輕量級的Web服務器,反向代理服務器
//占有內存少,並發能力強

排錯日誌
# tailf /usr/local/nginx/logs/error.log
# tailf /usr/local/nginx/logs/access.log

---------------------------------------------

構建nginx服務器

一、
·yum安裝常見依賴包
# yum -y install gcc、 pcre-devel、 openssl-devel
·編譯安裝源碼包
> tar
> ./configure
> make
> make install
·啟服務

二、
·客戶端驗證
//可以訪問到 welcome to nginx 頁面

--------------------------------------------

升級nginx

詳細步驟:
一、
·編譯新版本nginx軟件
# tar -xf nginx-1.9.0.tar.gz
# cd nginx-1.9.0
# ./configure \
> --prefix=/usr/local/nginx \ //選擇安裝路徑
> --user=nginx \ //用戶
> --group=nginx \ //組
> --with-http_ssl_module //開啟ssl加密功能
# make

二、
復制啟動腳本
# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold //覆蓋nginx老版本
# cp objs/nginx /usr/local/nginx/sbin/ //拷貝新版本
# make upgrade //升級

------------------------------------------------

nginx用戶認證

一、
·編譯安裝源碼包
- 安裝--with-http_ssl_module模塊
·修改nginx配置文件 /usr/local/nginx/conf/nginx.conf
auth_basic "Input Password:";
auth_basic_user_file "/usr/local/nginx/pass";
//server中添加認證提示符和認證密碼文件

二、
·生成加密的密碼文件
# yum 安裝httpd-tools
·創建用戶設置密碼
# htpasswd -c /usr/local/nginx/pass 用戶名
//密碼文件路徑要和配置文件裏寫的路徑一樣
·重啟服務

三、
·客戶端驗證
//輸入密碼後可以訪問

-----------------------------------------------------


修改配置文件,配置基於域名、IP、端口的虛擬主機

·修改配置文件
# vim /usr/local/nginx/conf/nginx.conf
... ...
server {
listen 80; #端口
server_name www.aa.com; #域名
root html;
}

server {
listen 192.168.4.5:80; #基於IP (默認所有(*:80))
server_name www.bb.com;
root www;
}

·創建www目錄寫入頁面內容

·客戶端驗證
# vim /etc/hosts

------------------------------------------------------

SSL虛擬主機

一、
·構建nginx服務器

二、
·修改配置文件,設置需要加密網站的虛擬主機
... ...
server {
listen 443 ssl;
server_name www.xx.com
ssl_certificate cert.pem; //配置公鑰
ssl_certificate_key cert.key; //配置私鑰
}
... ...
//配置文件中有模板

·生成私鑰與證書(公鑰)
//公私鑰要生成在/usr/local/nginx/conf/下
生成命令:
# openssl genrsa -out cert.key
# openssl req -new -x509 -key cert.key -out cert.pem
//公私鑰名稱自定義,但要與配置文件一致。

·重啟服務

三、
·客戶端驗證
#vim /etc/hosts
# firefox https://www.xx.com
//添加信任後可以訪問


-------------------------------------------

---> web1
client --> proxy--負載均衡 |
健康檢查 |
---> web2


nginx反向代理(調度器)
配置Nginx服務器,添加服務器池,實現反向代理功能
//upstream * {


一、
·構建nginx服務器

二、
·編寫配置文件 /usr/local/nginx/conf/nginx.conf
>>定義集群
//ip_hash #相同客戶端訪問相同服務器
//weight:權重 不加參數默認平均(默認是1) (權重越高,訪問次數越多)
//max_fails:動態監測失敗次數
//fail_timeout:超時時間,失敗後x秒內不訪問該主機
>>server裏調用集群

------
簡單的模板
... ...
upstream aa { //定義集群
server 192.168.2.100;
server 192.168.2.200;
}
server {
listen 80;
server_name www.abc.com;

location / {
proxy_pass http://aa; //調用集群
}
}

------


三、
·客戶端驗證
//反復訪問兩個web服務器
//頁面出現順序、次數與集群內的參數有關


==========================================================

day 03

LNMP
Linux系統下Nginx+MySQL+PHP/Python(網站開發語言)的網站服務架構,主流的企業網站平臺之一


--------------------------------------------

部署LNMP環境


一、
·yum安裝常見依賴包
gcc、openssl-devel、pcre-devel

·安裝nginx

·yum安裝mariadb
mariadb mariadb-server mariadb-devel

·安裝php、 php-fpm
//php-fpm是rpm包,要cd到lnmp_soft下yum安裝

·安裝php-mysql

二、
·啟動服務
# nginx //端口:80
# systemctl start mariadb //端口:3306
# systemctl start php-fpm //端口:9000

·檢驗端口是否正常啟動

--------------------------------------------


動靜分離: Nginx+PHP
用戶發送請求到nginx :80
nginx判斷用戶訪問的是靜態還是動態
如果是靜態,則在root對應的目錄中找到頁面,直接給用戶
如果是動態,則nginx將請求轉發給9000端口,處理後發送給用戶

-------------------------------------------

構建LNMP平臺
實現動靜分離

一、
·編寫nginx配置文件 nginx.conf
基本格式:
server {
listen 80 ;
server_name ... ;
location / { //靜態
root html;
}
location ~ \.php$ { //動態
root html;
fastcgi_pass 127.0.0.1:9000;
//nginx無法解析php頁面,轉發給9000端口
include fastcgi.conf;
//配置文件中有模板
}
二、
·編寫測試頁面
# vim /usr/local/nginx/html/test.php
<?php
$i="This is a test Page";
echo $i;
?>

三、
·重啟nginx服務

·firefox訪問


---------------------------------------------

地址重寫
格式:
rewrite 舊 新 [選項];
//可選項 :
last : 觸發後不再讀其他rewrite
break : 不再讀其他語句,直接結束訪問
redirect : 臨時
permament : 永久

在location欄最後添加
rewrite /a.html /b.html;
//當用戶訪問/a.html,自動為用戶跳轉到/b.html


在location前添加
rewrite ^/ http://www.tmooc.cn/;
//當用戶訪問192.168.4.5,自動為用戶跳轉到www.tmooc.cn

rewrite ^/(.*) http://www.tmooc.cn/$1;
//當用戶訪問192.168.4.5/下面子頁面,自動為用戶跳轉到www.tmooc.cn/下相同的頁面


根據不同的瀏覽器。訪問相同頁面結果不同
//根據nginx配置文件中的內置變量判斷用戶使用的瀏覽器$http_user_agent

一、
·準備兩套頁面 /usr/local/nginx/html/
test.html
curl/test.html
·修改配置文件
if ($http_user_agent ~* curl) { //識別客戶端curl瀏覽器
rewrite ^(.*)$ /curl/$1 break;
}



===========================================
day 04

優化nginx服務器
#vim /usr/local/nginx/conf/nginx.conf

---
·隱藏版本號
http {
server_tokens off;
}
驗證:# curl -I http://192.168.4.5/
//訪問結果版本號不顯示

---

·實現高並發
worker_processes 1; //與CPU核心數量一致
//工作進程數
events {
worker_connections 65535;
//每個worker最大並發連接數
}

//ulimit主要是用來限制進程對資源的使用情況的,它支持各種類型的限制
# ulimit -Hn 100000 硬限制hard
# ulimit -Sn 100000 軟限制soft
-a 查看

驗證:# ab -c 2000 -n 2000 http://127.0.0.1/

---

·包頭信息緩存
- 包頭信息過長會報414錯誤

client_header_buffer_size 1k;
//默認請求包頭信息的緩存

large_client_header_buffers 4 4m;
//大請求頭部信息的緩存個數 和 容量

tcp_nodelay on;
//關閉TCP緩延遲發送數據

keepalice_timeout 10;
//保持連接的超時時間

//先根據client_header_buffers分配,如果不夠,再根據large值分配
... ...

---
·自定義錯誤頁面
error_page 404 /40x.html; //自定義錯誤頁面
location = /40x.html {
root html;
}
# vim /usr/local/nginx/html/40x.html
<h1>~~~~^^^Error^^^~~~</h1>

測試:firefox http://192.168.4.5/xx.html

//註意是本地的錯誤頁面,不要和調度做在一起

---

-----------------------------------------------

Tomcat



安裝部署Tomcat服務器
tomcat 默認端口:8080

一、
·安裝部署JDK基礎環境
yun裝包:java-1.8.0-openjdk、java-1.8.0-openjdk-headless

二、
·安裝部署Tomcat服務器
# tar -xf apache-tomcat-8.0.30.tar.gz
# mv到/usr/local/tomcat

三、
·啟動服務
# /usr/local/tomcat/bin/startup.sh //開啟服務
# /usr/local/tomcat/bin/shoudown.sh //關閉服務
端口:8080
:8009
:8005


四、
·測試
# firefox http://192.168.2.100:8080
//Tomcat主頁


·創建JSP測試頁面並訪問
//頁面根路徑/usr/local/tomcat/webapps/ROOT/test.jsp

頁面內容
---
<html>
<body bgcolor="red"> //指定網頁背景顏色
<center>
<%String s = session.getId();%> //獲取SessionID
<%=s%>
<h1>tomcatA/B</h1> //固定字串信息
</center>
</body>
</html>
---


=============================================


day 05
------
memcached緩存服務器
軟件包:memcached-1.4.15-9.el7.x86_64
服務名:memcached
TCP/UDP:11211
-memcached 是高性能的分布式緩存服務器
-用來集中緩存數據庫查詢結果。減少數據庫訪問次數,以提高動態web應用的響應速度

------
構建memcached服務

一、
·裝包
# yum -y install memcached
·啟服務

二、
使用telnet訪問memcached服務器
·yum安裝telnet

·telnet連接服務器測試增、刪、改、查。
# telnet 192.168.4.5 11211
增 > add myname 0 180 3 //新建,存在則報錯
> append myname 0 180 3 //向變量結尾追加數據
改 > replace myname 0 180 3 //替換,不存在則報錯
> set name 0 180 3 //添加或替換變量
//name:變量名
//0:不壓縮
//180:name變量的緩存時間
//3:變量占用3字節空間
查 > get name //讀取變量
> stats //查看狀態
刪 > delete myname //刪除變量
>flush_all //清空所有緩存

----------------------------------------------------------

LNMP+memcached

一、
·部署LNMP環境
- 安裝依賴包
gcc、openssl-devel、pcre-devel、zlib-devel
- 源碼安裝nginx
- 安裝mariadb
mariadb、mariadb-server、mariadb-devel
- 安裝php
php、php-mysql
php-fpm-5.4.16-36.el7_1.x86_64.rpm
php-pecl-memcache //memcache擴展

二、
·修改nginx配置文件
# vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}


三、
·啟服務
nginx :80
mariadb :3309
php-fpm :9000

四、
·編寫測試頁面
/usr/local/nginx/html/index.php
<?php
echo 11
echo 22
?>

五、
·訪問測試

--------------------------------------------------------

Session共享
- 存儲在服務器端,保存用戶名、密碼等信息

Cookies
-由服務器下發給客戶端,保存在客戶端的一個文件裏。
保存的內容主要包括:SessionID、賬戶名,過期時間,路徑和域



使用tomcat設置session

搭建session環境

一、 2.100/2.200
·部署兩臺Tomcat服務器
- 安裝jdk環境
- 安裝tomcat軟件
- 啟服務


二、4.5
·部署nginx調度器
- 源碼安裝nginx
- 修改nginx配置文件
通過upstream定義兩臺tomcat服務器地址池
默認調度為輪詢
proxy_pass調用地址池
- 啟服務


三、
·創建jsp測試頁面
# vim /usr/local/tomcat/webapps/ROOT/test.jsp
//Ctrl+f > 頁面內容

四、 4.100
·客戶端測試
# firefox http://192.168.4.5/test.jsp
//刷新出現的網頁內容A/B輪詢

--------------------------------------------------------

Tomcat實現session會話共享

一、
·構建memcached服務
- 裝包
- 啟服務 :11211

二、
·在Tomcat服務器上部署msm
- 安裝msm
# cd lnmp-soft/session
# cp *.jar /usr/local/tomcat/lib/
- 修改配置文件,連接memcached服務器
# vim /usr/local/tomcat/conf/context.xml
<Context>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="mem1:192.168.2.5:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>
</Context>
//配置文件內沒有模板,復制粘貼到<Context>中

·重啟服務

三、
·客戶端訪問
# firefox http://192.168.4.5/test.jsp



==========================================


day 06

Redis
------
源碼安裝redis服務器
一、
·解包
·安裝依賴包gcc
·# make && make install

二、
·初始化設置
#./utils/install_server.sh

三、
·服務管理
# /etc/init.d/redis_6379 //啟動腳本
# service redis_6379 status //查看狀態
# service redis_6379 stop
# service redis_6379 start

四、
·使用客戶端軟件快速測試服務器
# redis-cli
>ping
PONG
... ...


---------------------------------------------

配置Redis主從服務器

一、
·主、從服務器安裝Redis

二、
·配置主服務器設置
-修改主服務器配置文件
/etc/redis/6379.conf
requirepass 123456 //配置密碼

-重啟服務

-修改啟動腳本
/etc/init.d/redis_6379
$CLIEXEC -a redis123 -p $REDISPORT shutdown


·配置從服務器設置
-修改從服務器配置文件
/etc/redis/6379.cong
slaveof 192.168.2.100 6379 //指定主服務器IP和端口
masterauth 123456 //寫入主服務器的密碼

-重啟服務

三、
驗證效果
# redis-cli -h 192.168.4.100 -a redis123 //登錄主服務器設置數據
> set test 123
OK

# redis-cli –h 192.168.4.200 //登錄主服務器查看數據同步效果
> get test
"123"


-----------------------------------

數據庫操作指令

格式:

> set a '內容' //設置變量名
> get a //查看變量
> setrange a 位置 '內容' //替換
> ser a '內容' ex 5 //變量的過期時間為5秒
//字符串過期後查看該值為空
> append a 'xxx' //向變量中追加


其他操作
·keys 匹配
- 找符合匹配條件的key,特殊符號用\屏蔽
> keys *
//匹配所有,查看數據庫下所有數據

·flushall
- 清空所有數據

·select id
- 選擇數據庫,id用數字指定,默認數據庫為0



=========================================


day 07

svn
搭建svn服務器思路:
一、
·yum裝包 subversion
·創建項目目錄
# mkdir /var/svn
# svnadmin create /var/svn/booo

二、
·修改配置文件
/var/svn/booo/conf/*

三、
·導入初始化數據
在需要導入的文件目錄下
# svn import . file:///var/svn/booo/ -m "備註信息"
//提交後的版本為 1

四、
·啟動服務共享倉庫
# systemctl restall svnserve //共享所有倉庫
# svnserve -d -r /var/svn/booo //共享單個倉庫

五、
·本地驗證
//下載svn的共享文件到當前目錄
# svn co --username tom --password tom123 svn://127.0.0.1 tom
//取出版本 1

#svn其它操作見PPT



-----------------------------------------------
制作RPM包

一、
·裝包 rpm-build

二、
·準備工作
-生成rpmbuild目錄結構
# rpmbuild -ba 00.spec
//root家目錄下會生成rpmbuild目錄
-將源碼包復制到SOURCES目錄下
-修改SPEC的配置文件
# vim SPECS/nginx.spec
//新建.spec文件,裏面會有模板
-安裝依賴包
gcc、pcre-devel、zlib-devel、openssl-devel

三、
·創建RPM包
# rpmbuild -ba SPECS/nginx.spec
//退出狀態為0表示正常

四、
·驗證
//打包好的rpm包在RENS/x86_64/nginx-1.8.0-1.x86_64/prm
scp發送到新建虛擬機測試安裝
# rpm -ivh nginx-1.8.0-1.x86_64.rpm



END

個人筆記--->服務器篇