共计 4106 个字符,预计需要花费 11 分钟才能阅读完成。
言:
LAMP 为网站搭建的很基本的一个架构,如果仅仅只是静态的网页文件,我们就可以通过基本的 web 服务器来处理。当我们需要处理动态内容时,比如把用户数据放在数据库,从数据库取出数据等等,我们就必须借助 CGI 连接到处理动态请求的应用。FastCGI 作为一个常驻型的 CGI,可以独立于 apache 服务,可以实现分布式的部署。接下来我们用一台 主机来搭建 phpMyAdmin 和 WordPress,并且让 wordpress 实现 https。
正文:
部署之前我们先简单介绍下我们用到的架构,不用多说 LAMP 就是我们熟悉的 linux 系统,apache,MySQL(maridb) 和 php,本次部署过程中我们用到的数据库是 maridb,基本上和 mysql 没多大区别。当我们的 web 服务器收到一个请求时,如果请求的是静态资源,服务器就返回静态资源,如果请求的是动态资源,服务器本身并不能处理,需要发到可以处理动态请求的程序上。CGI 就是 http 服务器与其他程序交谈的接口。
首先,安装必要的程序,
yum install httpd php php-mysql php-fpm mariadb-server mariadb php-mbstring
其中 php-mysql 是 php 连接 mysql 的,php-fpm 就是 fastcgi。然后我们就启动这些服务。
systemctl start httpd
systemctl start mariadb
systemctl start php-fpm
然后我们得下载 MyAdmin 和 WordPress,解压后放到 /var/www/html 目录下,并分别重命名为 vhost1 和 vhost2
mv /var/www/html/{MyAdmin*,vhost1}
mv /var/www/html/{WordPress*,vhost2}
一台服务器起两个 web 服务,所以我们就得用到虚拟主机实现,实现方法也特别简单。
修改 httpd 配置文件,/etc/httpd/conf/httpd.conf 找到 DocumentRoot 注释掉。
vim /etc/httpd/conf/httpd.conf
#DocumentRoot “/var/www/html”
然后我们就开始建我们第一个虚拟主机 vhost1 了,在 /etc/httpd/conf.d/ 目录下面,新建一个 vhost.conf,以此来记录虚拟主机的相关配置。配置内容:
#/etc/httpd/conf.d/vhost.conf
DirectoryIndex index.php
<VirtualHost *:80>
Servername www.a.com
DocumentRoot /var/www/html/vhost1
ProxyRequests Off
ProxyPassMatch ^/(.*\.php) fcgi://127.0.0.1:9000/var/www/html/vhost1/$1
<Directory “/var/www/html/vhost1”>
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
默认当我们输入网址或者 ip 时,可以自动识别工作目录下的 index.html 文件为主页,为了也能识别 index.php, 我们就得配置 DirectoryIndex index.php。下面的就是第一个虚拟主机的配置。我们的第一个网站放在 /var/www/html/vhost1 下,并自动加载 index.php。此时我们就可以访问我们的第一个网站了,只用输入 ip 或域名即可。
两个进程间通信间通信是要靠一个叫做 socket 的东东,就是 ip 和端口号,http 服务的默认端口为 80,当然 ip 地址还是很难记住的,所以我们用一个可读性更高的域名来标识一个网站。所以当我们想在一台服务器上放好几个站点时,服务器怎么来区分他们呢?
虚拟主机可以通过三种方法构架,分别是基于 ip,基于端口,和基于域名。使用的最多的就是基于不同域名实现的.
接下来,我们实现基于 httpd 的 WordPress,一般而言,我们得自行购买证书,放在服务器上,不过既然是自己随便玩玩,也没想着上线,所以我们可以自建 CA,下发证书。我们打开另一个 linux 系统,作为 CA 服务器。实现一个 CA 服务器也相当简单,生成一个私钥,然后通过这个私钥来生成一个自签证书。然后 http 服务器向 CA 服务器发一个证书 签名的请求,服务签名后再发给 http 服务器。好了,我们直接来实现把。
#CA 服务器端 (172.16.254.181)
cd/etc/pki/CA
(umask 077;openssl genrsa -out private/cakey.pem 2048)# 生成私钥,让在 private 目录下
openssl req -new -x509 -key private/cakey.pem -out cacert.pem# 通过上面的私钥生成自签证书
touch serial index.txt #生成计数文件
echo 01 > serial #初始话计数。
#http 端 (172.16.53.183)
cd /etc/httpd
mkdir ssl #在 httpd 的配置文件目录下,新建 ssl 用来存放私钥和证书
cd ssl
(umask 077;openssl genrsa -out httpd.key 1024)# 建立私钥
openssl req -new -key httpd.key -out httpd.csr# 建立证书签字请求文件
scp httpd.csr 172.16.253.181:/tmp# 发送到 CA 服务器端。
# 服务器端
openssl ca -in /tmp/httpd.csr -out certs/httpd.crt #签字,并把证书放在 certs 目录下,如果报错,基本上是因为你的 CA 服务器忘记创建 index.txt 或 serial 里面没序号。
scp certs/httpd.crt 172.16.53.180:/etc/httpd/ssl/# 把证书发送到 httpd 服务器端
使用基于 ssl 的 https 时,我们还得用到一个模块,所以我们先安装模块。
yum install mod_ssl
mod_ssl 的配置文件为 /etc/httpd/conf.d/ssl.conf, 我们把虚拟主机的配置都放在 /etc/httpd/conf.d/vhost.conf 中,所以我们先把 ssl 的配置复制到 vhost.conf 中,并把 ssl.conf 保存为备份。
grep ‘^[^#].*’ /etc/httpd/conf.d/ssl.conf >> /etc/httpd/conf.d/vhost.conf
mv /etc/httpd/conf.d/ssl.conf{,.bak}
然后修改虚拟主机的配置文件。下面只显示修改过的地方。
#/etc/httpd/conf.d/vhost.conf
<VirtualHost *:443>
DocumentRoot /var/www/html/vhost2# 此虚拟主机的根目录为 WordPress
ServerName www.b.com# 此 ServerName 为我们申请证书的域名,我们的域名必须和证书的域名一致
SSLCertificateFile /etc/httpd/ssl/httpd.crt #证书文件
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key# 私钥文件
ProxyRequests Off
ProxyPassMatch ^/(.*\.php) fcgi://127.0.0.1:9000/var/www/html/vhost2/$1
</VirtualHost>
作为 web 服务器本身的配置,到这就已经结束了。不过,我们是以不同的域名来区分不同的虚拟主机的,但怎么获取域名和 ip 的映射呢?最简单的方法肯定是把映射条目写到 host 文件中,但是博主就喜欢舍近求远。我们来建一个 dns 吧。
相关:http://www.linuxidc.com/Linux/2017-07/145439.htm
初始化配置 WordPress
前言:
上面主要讲到的是搭建 WordPress 的运行环境,本问将主要讲一下如何配置数据库,和 WordPress 以使此博客系统可以访问。
正文:
首先我们得在 mariadb 数据库中,新建一个数据库,并且设置好帐号密码给予用户访问权限。模式情况下,是可以匿名进去连接到数据库的。用 mysql 命令进入数据库:
[root@localhost ~]#mysql
MariaDB [(none)]> create database WordPress;# 新建一个名为 wordpress 的数据库
MariaDB [(none)]> grant all on WordPress.* to ‘linuxidc’@’localhost’ identified by ‘1234’;# 给用户 linuxidc 访问 WordPress 所有表的权限,密码为 1234.
MariaDB [(none)]>quit
数据库这边我们已经设置完毕,我们输入服务器的 ip 或者域名访问 WordPress(如果是 https,就只能输入域名了),然后输入响应信息。点击提交之后,就会生成一个配置信息,我们复制配置内容,然后在 WordPress 网站的目录下新建一个配置文件,直接把配置内容粘贴进去即可。博主的目录是 /var/www/html/vhost2/. 配置文件生成之后就直接点进行安装,后面就跟着提示安装就可~ 就这样愉快而又快乐的,我们就拥有了自己的博客网站了。当然,如果你想让别人访问就得购买服务器或者虚拟主机,然后购买域名等等。
如果你按着上一篇同样搭建了 MyAdmin,就可以直接输入数据库的帐号密码 就是上面的 linuxidc 1234 直接管理数据库啦~
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-07/145438.htm