LNMP+EFK
主机 | 软件服务版本 | 主机名 |
---|---|---|
192.168.100.100 | Nginx-1.18、Filebeat | node100 |
192.168.100.101 | PHP-5.6.27 | node101 |
192.168.100.102 | MySQL5.7 | node102 |
192.168.100.103 | Kafka | kafka103 |
192.168.100.104 | Kafka | node104 |
192.168.100.105 | Kafka | node105 |
192.168.100.106 | ES、Kibana、Logstash | node106 |
192.168.100.107 | ES | node107 |
192.168.100.108 | ES | node108 |
一、分离部署LNMP架构搭建并运行WordPress站点实例
很多人在搭建的时候都是使用的一台机器来部署LNMP架构,但是我们在实际的工作中一般都是分离部署的。也就是说MySQL是MySQL,它是一台单机,分离部署自己跑自己的服务,提高效率!
关键概念:
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器。
CGI(Common Gateway Interface)全称是“通用网关接口”,是一种让客户端(Web浏览器)与Web服务器(nginx等)程序进行通信(数据传输)的协议。
FastCGI(Fast Common Gateway Interface)全称是“快速通用网关接口”是通用网关接口(CGI)的增强版本,由CGI发展改进而来,主要用来提高CGI程序性能,类似于CGI,FastCGI也是一种让交互程序与Web服务器通信的协议。
OS:CentOS Linux release 7.4.1708 (Core)
主机 | 软件服务版本 | 主机名 |
---|---|---|
192.168.100.100 | Nginx-1.18、Filebeat | node100 |
192.168.100.101 | PHP-5.6.27 | node101 |
192.168.100.102 | MySQL5.7 | node102 |
在所有主机配置A记录解析
[root@node100 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.100 node100
192.168.100.101 node101
192.168.100.102 node102
192.168.100.103 node103
192.168.100.104 node104
192.168.100.105 node105
192.168.100.106 node106
192.168.100.107 node107
192.168.100.108 node108
一、首先安装Nginx(192.168.100.100主机操作)
优化环境
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config &> /dev/null
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
iptables -F
systemctl stop NetworkManager &> /dev/null
systemctl disable NetworkManager &> /dev/null
1)安装相关的依赖包
[root@node100 ~]# yum install -y gcc gcc-c++ openssl-devel zlib-devel zlib pcre-devel
2)建立Nginx用户并指定id
[root@node100 ~]# groupadd -g 1001 nginx
[root@node100 ~]# useradd -u 900 nginx -g nginx -s /sbin/nologin
[root@node100 ~]# tail -1 /etc/passwd
nginx:x:900:1001::/home/nginx:/sbin/nologin
3)下载Nginx源码安装包并安装
[root@node100 ~]# cd /usr/local/src
[root@node100 src]# ls
[root@node100 src]# yum install -y wget
[root@node100 src]# wget https://nginx.org/download/nginx-1.18.0.tar.gz
[root@node100 src]# tar xf nginx-1.18.0.tar.gz
[root@node100 src]# ls
nginx-1.18.0 nginx-1.18.0.tar.gz
[root@node100 src]# cd nginx-1.18.0/
[root@node100 nginx-1.18.0]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root@node100 nginx-1.18.0]#./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx && make && make install
4)创建软连接并启动Nginx访问测试
[root@node100 nginx-1.18.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@node100 nginx-1.18.0]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@node100 nginx-1.18.0]# netstat -nalptu | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 39063/nginx: master
到这里Nginx已经安装完毕,接下来安装php
二、安装PHP(192.168.100.101主机操作)
优化环境
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config &> /dev/null
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
iptables -F
systemctl stop NetworkManager &> /dev/null
systemctl disable NetworkManager &> /dev/null
yum安装:
在CentOS 7系统上安装PHP 7.4版本的方法 - 狂猫 - 博客园 (cnblogs.com)
CENTOS 7 YUM 安装PHP7.4 - 简书 (jianshu.com)
云服务器 手动搭建 LNMP 环境(CentOS 7)-最佳实践-文档中心-腾讯云 (tencent.com)
1)安装相关的依赖包
[root@node101 ~]# yum install -y gcc gcc-c++ libxml2-devel libcurl-devel openssl-devel bzip2-devel
2)安装libmcrypt
[root@node101 ~]# cd /usr/local/src
[root@node101 src]# ls
[root@node101 src]# yum install -y wget
[root@node101 src]# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
[root@node101 src]# ls
libmcrypt-2.5.7.tar.gz
[root@node101 src]# tar zxf libmcrypt-2.5.7.tar.gz
[root@node101 src]# ls
libmcrypt-2.5.7 libmcrypt-2.5.7.tar.gz
[root@node101 src]# cd libmcrypt-2.5.7/
[root@node101 libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
3)源码编译安装:
注意:如果网络不好导致不能下载php源码包的话,需要自己从本地上传php源码包!
[root@node101 ~]# ls
anaconda-ks.cfg php-5.6.27.tar.gz
[root@node101 ~]# cp php-5.6.27.tar.gz /usr/local/src/
[root@node101 ~]# cd /usr/local/src/
[root@node101 src]# ls
libmcrypt-2.5.7 php-5.6.27.tar.gz
libmcrypt-2.5.7.tar.gz
[root@node101 src]# tar zxf php-5.6.27.tar.gz
[root@node101 src]# ls
libmcrypt-2.5.7 php-5.6.27
libmcrypt-2.5.7.tar.gz php-5.6.27.tar.gz
[root@node101 src]# cd php-5.6.27/
[root@node101 php-5.6.27]# ls
acinclude.m4 php.ini-production
aclocal.m4 README.EXT_SKEL
build README.GIT-RULES
buildconf README.input_filter
buildconf.bat README.MAILINGLIST_RULES
CODING_STANDARDS README.md
config.guess README.namespaces
config.sub README.NEW-OUTPUT-API
configure README.PARAMETER_PARSING_API
configure.in README.REDIST.BINS
CREDITS README.RELEASE_PROCESS
ext README.SELF-CONTAINED-EXTENSIONS
EXTENSIONS README.STREAMS
footer README.SUBMITTING_PATCH
generated_lists README.TESTING
genfiles README.TESTING2
header README.UNIX-BUILD-SYSTEM
INSTALL README.WIN32-BUILD-SYSTEM
install-sh run-tests.php
LICENSE sapi
ltmain.sh scripts
main server-tests-config.php
makedist server-tests.php
Makefile.frag snapshot
Makefile.gcov stamp-h.in
Makefile.global stub.c
makerpm tests
missing travis
mkinstalldirs TSRM
netware UPGRADING
NEWS UPGRADING.INTERNALS
pear vcsclean
php5.spec.in win32
php.gif Zend
php.ini-development
[root@node101 php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts && make && make install
编译安装完php后再创建Nginx用户,要求UID和GID和Nginx机器上的一致!
groupadd -g 1001 nginx
#如果GID冲突,则到/etc/group里面更改GID即可
useradd -u 900 nginx -g nginx -s /sbin/nologin
#如果UID冲突,则到/etc/passwd里面更改UID即可
# tail -1 /etc/passwd
nginx:x:900:1001::/home/nginx:/sbin/nologin
提供PHP的配置文件及提供脚本
[root@node101 php-5.6.27]# cp php.ini-production /etc/php.ini
[root@node101 php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@node101 php-5.6.27]# chmod +x /etc/init.d/php-fpm
[root@node101 php-5.6.27]# chkconfig --add php-fpm
[root@node101 php-5.6.27]# chkconfig php-fpm on
修改php主配置
[root@node101 php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@node101 php-5.6.27]# vim /usr/local/php5.6/etc/php-fpm.conf
修改内容如下:
25 pid = run/php-fpm.pid
149 user = nginx
150 group = nginx
164 listen = 192.168.10.12:9000 #PHP主机的IP地址
235 pm.max_children = 50
240 pm.start_servers = 5
245 pm.min_spare_servers = 5
250 pm.max_spare_servers = 35
修改完成后启动php服务
[root@node101 php-5.6.27]# service php-fpm start
Starting php-fpm done
[root@node101 php-5.6.27]# service php-fpm status
php-fpm (pid 20252) is running...
[root@node101 php-5.6.27]# netstat -pantul | grep php
tcp 0 0 192.168.100.101:9000 0.0.0.0:* LISTEN 20252/php-fpm: mast
到这里php安装完成,接下来安装MySQL
三、安装MySQL(192.168.100.102主机操作)
优化环境
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config &> /dev/null
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
iptables -F
systemctl stop NetworkManager &> /dev/null
systemctl disable NetworkManager &> /dev/null
在RHEL7中默认自带了mariadb需要卸载
[root@node102 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@node102 ~]# yum remove -y mariadb-libs
1)下载MySQL源码包
[root@node102 ~]# cd /usr/local/src
[root@node102 src]# ls
[root@node102 src]# yum install -y wget
[root@mysql src]# wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
[root@node102 src]# ls
mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
2)解压MySQL源码包把解压的文件拷贝到/usr/local/mysql下,然后进入mysql目录查看
[root@node102 src]# tar xf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
[root@node102 src]# mv mysql-5.7.36-linux-glibc2.12-x86_64 /usr/local/mysql
[root@node102 src]# cd /usr/local/mysql/
[root@node102 mysql]# ll
总用量 272
drwxr-xr-x 2 root root 4096 1月 7 00:16 bin
drwxr-xr-x 2 root root 55 1月 7 00:16 docs
drwxr-xr-x 3 root root 4096 1月 7 00:16 include
drwxr-xr-x 5 root root 230 1月 7 00:16 lib
-rw-r--r-- 1 7161 31415 259199 9月 7 2021 LICENSE
drwxr-xr-x 4 root root 30 1月 7 00:16 man
-rw-r--r-- 1 7161 31415 566 9月 7 2021 README
drwxr-xr-x 28 root root 4096 1月