拓撲圖見編譯實現LAMP,bind,CA.jpg
test3配置:
yum -y install bind
修改named.conf配置文件:
// listen-on port 53 { 127.0.0.1; }; //監聽IP與端口
// allow-query { localhost; }; //供查詢的主機,這里的localhost為只允許查詢本機
dnssec-enable no; //啟動安全的開關
dnssec-validation no; //安全相關選項
注釋掉根解析的相關配置
//zone “.” IN {
// type hint;
// file “named.ca”;
//};
修改name.rfc1912.zones
添加如下內容:
zone “.” IN {
type master;
file “root.zone”;
};
寫一個解析數據庫
$TTL 1D
@ IN SOA rootdns rootadmin ( 1 1H 1H 1W 1D )
NS rootdns
com NS comdns.
rootdns. A 172.18.35.102
com. A 172.18.35.111
修改named.ca文件:這個文件是尋找根DNS服務器的文件,所有的DNS服務器上的這個文件都修改為以下形式:
. 3600000 NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 172.18.35.102
test5配置:
安裝bind:yum -y install bind
修改配置文件/etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
配置一個區域:/etc/named.rfc1912.zones
zone “com” IN {
type master;
file “com.zone”;
};
配置com區域數據庫
$TTL 1D
@ IN SOA comdns comadmin ( 1 1H 1H 1W 1D )
NS comdns
tom NS tomdns
comdns A 172.18.35.111
tomdns A 172.18.35.112
配置named.ca
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 172.18.35.102
test6配置;
安裝bind:yum -y install bind
配置/etc/named.conf文件
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
配置一個區域:/etc/named.rfc1912.zones
zone “tom.com” IN {
type master;
file “tom.com.zone”;
};
配置一個區域數據庫:
$TTL 1D
@ IN SOA tomdns tomadmin ( 1 1H 1H 1W 1D )
NS tomdns
tomdns A 172.18.35.112
webserver A 172.18.35.100
www CNAME webserver
修改/var/named/named.ca
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 172.18.35.102
test7配置DNS:
修改配置文件/etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
修改/var/named/named.ca
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 172.18.35.102
以上為DNS配置,關閉防火墻,與SELinux,啟動服務即可,如果服務無法啟動,檢查配置文件與區域文件,可以使用以下命令進行檢查
named-checkconf //檢查配置文件
named-checkzone “tom.com” tom.com.zone //檢查區域文件
test1配置
下載httpd,apr,apr-util程序
由于這里編譯的apache程序是2.4.25,需要apr1.4與apr-util1.4以上而yum庫提供的apr與apr-util為1.39,所以這里需要編譯apr與apr-util程序
解壓apr-1.5.0.tar.bz2,apr-util-1.5.3.tar.bz2,httpd-2.4.25.tar.bz2
tar xf ….
編譯apr-1.5.0.tar.bz2:
cd apr-1.5.0
./configure –prefix=/usr/local/apr
出錯,提示gcc沒有,安裝
yum -y install gcc
echo $?:如果為0就成功了,如果不為0那就掛了
-j 4 && make install
echo $?
cd ..
編譯apr-util-1.5.3.tar.bz2:
cd apr-util-1.5.3
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
echo $?
make -j 4 && make install
echo $?
cd ..
編譯httpd-2.4.25.tar.bz2
./configure –prefix=/usr/local/httpd –sysconfdir=/etc/httpd –enable-modules=most –enable-mods-shared=most –enable-so –enable-proxy –enable-proxy-fcgi –enable-ssl –enable-cgi –enable-rewrite –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –with-mpm=profork –with-z –with-libxml2 –with-pcre –enable-cgid
出錯:提示缺少perc-config
yum provides */pcre-config //查出這個文件是在pcre-devel包下
yum -y install pcre-devel
出錯:提示openssl有點舊了
yum -y install openssl-devel
出錯:提示MPM選項沒有叫profork的,回頭一看原來是寫錯了,叫prefork
echo $?
make -j 4 && make install
echo $?
test4配置:
下載一個mariadb程序
tar xf mariadb-10.1.22-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
ln -sv mariadb-10.1.22-linux-x86_64 mysql
useradd -r -M -s /sbin/nologin mysql
cd mysql/
chown -R root.mysql ./*
mv /etc/my.cnf /etc/my.cnf.bak
mkdir -p /data/mysql
chown -R mysql.mysql /data
cp support-files/my-huge.cnf /etc/my.cnf //具體復制那個文件要看你的內存有多大了,各個文件對應的內存不一樣
cp support-files/mysql.server /etc/init.d/mysqld //啟動腳本文件
chmod +x /etc/init.d/mysqld //給腳本的小權利
配置/etc/my.cnf文件
datadir = /data/mysql //指定數據庫目錄
skip_name_resolve = ON //優化性能
innodb_file_per_table = ON //優化性能
./scripts/mysql_install_db –user=mysql –datadir=/data/mysql //數據庫初始化
出錯了,說沒有libaio.so.1這個玩意
yum provides */libaio.so.1
yum -y install libaio-0.3.109
service mysqld start
啟動成功
export PATH=$PATH:/usr/local/mysql/bin //寫個命令路徑
mysql -u root //登陸數據庫
grant all privileges on *.* to test@’%’ identified by ‘test’; //創建一個用戶,并允許在其它主機登陸
grant all privileges on *.* to test@’localhost’ identified by ‘test’; //允許在本地登陸
create database mydata; //創建一個庫
flush privileges; //刷新數據庫
\q //退出數據庫
test2配置:
上傳數據庫,并解壓到/usr/local/下,做一個軟鏈接為mysql指向解壓目錄
下載php:
tar xf php-5.6.4.tar.xz
cd php-5.6.4
./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql –with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –enable-sockets –with-mcrypt –with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d –with-bz2 –enable-maintainer-zts –enable-fpm
出錯了,沒有安裝gcc
yum -y install gcc
出錯了,沒有找到xml2-config文件
yum provides */xml2-config
yum -y install libxml2-devel
出錯了,說,沒有打到openssl的<evp.h>
yum provides */evp.h
yum -y install openssl-devel
出錯了,說需要重新安裝bzip2
yum -y install bzip2
出問題了,說有bzip2這個包了,那就裝一下bzip2的開發包吧
yum -y install bzip2-devel
出錯了,說找不到mcrypt.h頭文件,看看這個頭文件那里有
yum provides */mcrypt.h
yum -y install libmcrypt-devel
echo $?
make -j 4 && make install
echo $?
mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
修改配置文件:/usr/local/php/etc/php-fpm.conf
listen = 172.18.35.101:9000 //修改監聽IP與端口
在test1上搭建nfs服務:
修改/etc/export文件添加如下內容
/www/root 172.18.35.101(async,rw)
yum -y install showmount
service rpcbind start
service nfs start
在test2掛載nfs目錄
yum -y install showmount
mkdir /www/root -p
mount -t nfs 172.18.35.100:/www/root /www/root
test7配置CA
cd /etc/pki/CA/
openssl genrsa -out private/cakey.pem 2048 //生成CA私鑰
openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 3650 //生成自簽證書
touch index.txt serial //創建必要文件
echo 01 > serial //文件中添加編號
在test1上生成CA請求文件
cd /etc/httpd //在此目錄中生成文件以后配置文件就可以不改了
openssl genrsa -out server.key 1024 //生成私鑰文件
openssl req -new -key server.key -out server.p //生成請求文件server.p,將請求文件給CA服務器,名聲然后確認并生成證書
scp server.p 172.18.35.113:/etc/pki/CA/certs/ //發送請求文件給CA服務器
在test7上確認證書
openssl ca -in certs/server.p -out certs/server.crt -days 365 //確認證書
scp certs/server.crt 172.18.35.100:/etc/httpd/ //將證書發送給http服務器
配置test1上的https服務:
修改主配置文件/etc/httpd/httpd.conf
LoadModule proxy_module modules/mod_proxy.so //將注釋去掉
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so //將注釋去掉
LoadModule rewrite_module modules/mod_rewrite.so //啟動URL重寫功能
LoadModule ssl_module modules/mod_ssl.so //啟動ssl功能
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so //啟動shmcb功能
<Directory />
AllowOverride none
Require all granted //這個是禁止訪問其它所有目錄修改為granted后就為允許了
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.php //添加可以運行以.php結尾的文件
</IfModule>
AddType application/x-http-php .php //添加的行,增加一種應用類型
AddType application/x-http-php-source .phps //添加的行,增加一種應用類型
DocumentRoot “/www/root” 修改網頁根目錄
#DocumentRoot “/usr/local/httpd/htdocs” //注釋掉,中心主機不可以與虛擬主機同時啟動,這里關閉中心主機
Include /etc/httpd/extra/httpd-ssl.conf //去掉注釋,啟動ssl的配置文件
配置etc/httpd/extra/httpd-ssl.conf文件:
<VirtualHost 172.18.35.100:443> //監聽的端口與IP
DocumentRoot “/www/root/wordpress” //網頁的存放地
ServerName www.tom.com //訪問https的域名
#ServerAdmin you@example.com //管理員郵箱
ProxyRequests off //關閉正向解析文件
ProxyPassMatch ^(.*\.php)$ fcgi://172.18.35.101:9000/www/root/$1 //指定反解方式
rewriteEngine on //啟動重寫功能
rewritecond %{HTTP_HOST} !^www.tom.com [NC] //申明client請求的不是以www.tom.com為前綴[NC]為忽略大小寫
rewritecond %{HTTP_HOST} !^$ //申明client請求的不是以空為前綴
rewriterule ^(.*) https://www.tom.com/ [L] //如果請求符合上述要求,那么就進行跳轉,跳轉為https://www.tom.com/;[L]為立即停止重寫,并不再使用其它規則
<Directory “/www/root/wordpress”>
Options none
AllowOverride none
Require all granted
</Directory>
在test1上進行配置wordpress:
下載wordpress:
解壓到/www/root/目錄下,并給其寫權限
將客戶端的DNS修改為172.18.35.113,將根證書導入瀏覽器,訪問www.tom.com進行測試
測試成功
原創文章,作者:gaomei,如若轉載,請注明出處:http://www.www58058.com/74020