LNMMP架构搭建wp个人博客实现动静态内容分离

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

思路:
   搭建wordpress个人博客,nginx做动静态文件分离,nginx处理静态内容(本地)

   动态内容由上游服务器php-fpm来完成


规划:

   nginx     反代后端 php-fpm            172.16.43.1
   php-fpm,php-extentsion(memcache),php-extentsion(xcache) 172.16.43.2
   mariadb 10       172.16.43.3


实现过程:

1. nginx安装及使用(172.16.43.1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#nginx的安装需要环境: gcc-c++,pcre,zlib,nginx
.
# i) 安装gcc编译器
yum -y  install  gcc-c++
.
# ii) 安装pcre
tar  xf pcre-8.33. tar .gz
cd  pcre-8.33
. /configure  --prefix= /usr/local/pcre
make  &&  make  install
.
# iii) 安装zlib
tar  xf zlib-1.2.8. tar .gz
cd  zlib-1.2.8
. /configure  --prefix= /usr/local/zlib
make  &&  make  install
.
# iv) 安裝nginx
tar  xf nginx-1.5.7. tar .gz
cd  nginx-1.5.7
. /configure  --prefix= /usr/local/nginx  --sbin-path= /usr/local/nginx/nginx  --conf-path= /etc/nginx/nginx .conf --pid-path= /usr/local/nginx/nginx .pid --with-pcre= /root/pcre-8 .30 --with-zlib= /root/zlib-1 .2.8
make  &&  make  install
.
# v) 为nginx添加启动脚本
# vim /etc/rc.d/init.d/nginx
#!/bin/bash
# nginx Startup script
# chkconfig: - 85 15
# description: nginx Startup script
# processname: nginx
#pidfile: /var/local/nginx/nginx.pid
#config: /usr/local/nginx/nginx.conf
nginxd= /usr/local/nginx/nginx
nginx_config= /etc/nginx/nginx .conf
nginx_pid= /var/local/nginx/nginx .pid
RETVAL=0
prog= "nginx"
.
/etc/rc .d /init .d /functions
/etc/sysconfig/network
.
[ ${NETWORKING} =  "no"  ] &&  exit  0
[ -x $nginxd ] ||  exit  0
.
start() {
if  [ -e $nginx_pid ]; then
    echo  "nginx already running...."
    exit  1
fi
    echo  -n $ "Starting $prog: "
    daemon $nginxd -c ${nginx_config}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] &&  touch  /var/lock/subsys/nginx
    return  $RETVAL
}
.
stop() {
     echo  -n $ "Stopping $prog: "
     killproc $nginxd
     RETVAL=$?
     echo
     [ $RETVAL = 0 ] &&  rm  -f  /var/lock/subsys/nginx  /var/run/nginx .pid
}
.
reload() {
     echo  -n $ "Reloading $prog: "
     #kill -HUP `cat ${nginx_pid}`
     killproc $nginxd -HUP
     RETVAL=$?
     echo
}
.
case  "$1"  in
     start)
         start
         ;;
     stop)
         stop
         ;;
     reload)
         reload
         ;;
     restart)
         stop
         start
         ;;
     status)
         status $prog
         RETVAL=$?
         ;;
     *)
         echo  $ "Usage: $prog {start|stop|restart|reload|status|help}"
         exit  1
esac
exit  $RETVAL
.
# vi) 为nginx做配置处理
chmod  a+x  /etc/rc .d /init .d /nginx
chkconfig nginx on
useradd  -r -s  /sbin/nologin  nginx -U
.
# vii) 配置规划中的内容
vim  /etc/nginx/nginx .conf
############## 配置文件开始 ################
user nginx;
#启动进程,一般和CPU数量一致
worker_processes 2;
#[ debug | info | notice | warn | error | crit ] 错误日志的级别及位置
error_log  /var/log/nginx/error .log debug;
#一个nginx进程打开的最多文件描述符数目,最好与ulimit -n的值保持一致
worker_rlimit_nofile 51200;
events {
     #工作进程的最大连接数量,根据硬件调整
     worker_connections 4096;
     #[ kqueue | rtsig | epoll | /dev/poll | select | poll ] 使用epoll(linux2.6的高性能方式)
     use epoll;
}
http {
     include       mime.types;
     default_type  application /octet-stream ;
     # 内核直接返回请求,提升性能
     sendfile        on;
     # 保持长连接时间
     keepalive_timeout  5;
     # 开启gzip服务器压缩功能
     gzip   on;
     server {
         listen 80;
         resolver www.king.com;
         add_header testserver $server_addr;
         location / {
             root    /var/www/html ;
             index  index.html index.htm;
         }
         location ~* \.(jpg|png|gif|jpeg|js|css)$ {
             root  /var/www/html ;
         }
         location ~ \.php$ {
             # 这里就是关键,root 这里必须与上游服务器文件路径对应
             root  /var/www/html ;
             fastcgi_pass   172.16.43.2:9000;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
             include        fastcgi_params;
         }
     }
}
.
# vi) 替换fastcgi参数
# vim /etc/nginx/fastcgi_params
fastcgi_param  GATEWAY_INTERFACE  CGI /1 .1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

wKioL1NbaOaxR89aAARTsw6IS_g328.jpg

2. php-fpm 安装(172.16.43.2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# i) 解决php安装依赖
yum -y groupinstall  "Desktop Platform Development"
yum -y  install  libmcrypt-devel
yum -y  install  bzip2 -devel
.
# ii) 安装php with fpm
tar  xf php-5.4.19. tar .bz2
cd  php-5.4.19
. /configure  --prefix= /usr/local/php  --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl -- enable -mbstring --with-freetype- dir  --with-jpeg- dir  --with-png- dir  --with-zlib --with-libxml- dir = /usr  -- enable -xml -- enable -sockets -- enable -fpm --with-mcrypt --with-config- file -path= /etc  --with-config- file -scan- dir = /etc/php .d --with-bz2
make  &&  make  install
.
# iii) 为php提供配置文件:
cp  php.ini-production  /etc/php .ini
.
# iv) 配置php-fpm
#为php-fpm提供SysV init脚本,并将其添加至服务列表:sapi在源码包下
cp  sapi /fpm/init .d.php-fpm   /etc/rc .d /init .d /php-fpm
chmod  +x  /etc/rc .d /init .d /php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
为php-fpm提供配置文件:
cp  /usr/local/php/etc/php-fpm .conf.default  /usr/local/php/etc/php-fpm .conf
编辑php-fpm的配置文件:vim  /usr/local/php/etc/php-fpm .conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pid =  /usr/local/php/var/run/php-fpm .pid
listen = 172.16.43.2:9000

3. php拓展xache安装(172.16.43.2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# i) 安装xcache
tar  xf xcache-3.1.0. tar .bz2
cd  xcache-3.1.0
/usr/local/php/bin/phpize
. /configure  -- enable -xcache --with-php-config= /usr/local/php/bin/php-config
make  &&  make  install
# 安装结束时,会出现类似如下行, 将后半句复制
Installing shared extensions:      /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
.
# ii) 编辑php.ini,整合php和xcache:
# 首先将xcache提供的样例配置导入php.ini
mkdir  /etc/php .d
# xcache.ini文件在xcache的源码目录中。
cp  xcache.ini  /etc/php .d
# 接下来编辑/etc/php.d/xcache.ini 修改为如下:
extension =  /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache .so

4. php拓展memcache安装(172.16.43.2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# i) 安装memcache
tar  xf memcache-2.2.7.tgz
cd  memcache-2.2.7
/usr/local/php/bin/phpize
. /configure  -- enable -memcache --with-php-config= /usr/local/php/bin/php-config
make  &&  make  install
# 安装结束时,会出现类似如下行, 将后半句复制
Installing shared extensions:      /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache .so
.
# ii) 编辑/etc/php.ini,在“dynamically loaded extension”相关的位置添加如下一行来载入memcache扩展:
extension= /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache .so
.
# iii) 重启php-fpm服务
service php-fpm restart

wKiom1Nbac3D_lXnAATQIGowUJA112.jpg

wKioL1NbaaSyNdlxAAUDfUN3sX0149.jpg

5. MariaDB安装与配置(172.16.43.3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# i) 创建mysql的数据目录
mkdir  /data
groupadd -r mysql
useradd  -g mysql -r -s  /sbin/nologin  -M -d  /data  mysql
chown  -R mysql:mysql  /data
.
# ii) 安装二进制mysql
tar  xf mysql-5.5.33-linux2.6-x86_64. tar .gz -C  /usr/local
cd  /usr/local
ln  -sv mysql-5.5.33-linux2.6-x86_64 mysql
cd  mysql
chown  -R mysql:mysql  .
mysql /scripts/mysql_install_db  --user=mysql --datadir= /data
chown  -R root  .
# 提供mysql的配置文件
cp  support-files /my-large .cnf   /etc/my .cnf
# 需要添加如下行指定mysql数据文件的存放位置:
datadir =  /data
.
# iii) 为mysql提供sysv服务脚本:
cd  /usr/local/mysql
cp  support-files /mysql .server   /etc/rc .d /init .d /mysqld
chmod  +x  /etc/rc .d /init .d /mysqld
添加至服务列表:
chkconfig --add mysqld
chkconfig mysqld on
echo  "export PATH=/usr/local/mysql/bin:$PATH"  /etc/profile .d /mysql .sh
/etc/profile .d /mysql .sh
.
# iv) 启动服务并授权php服务器账号访问
service mysqld restart
mysql
grant all on *.* to  'wordpress' @ '172.16.%.%'  identified by  '123456' ;
flush privileges;

6. 配置测试wordpress
   将wordpress的源代码分别拷贝到172.16.43.1与172.16.43.2对应目录
   (为什么是双份这里我们就可以理解了 :)
   unzip wordpress-3.3.1-zh_CN.zip

wKiom1NbbcDBreDMAAj1eNVSfl8660.jpg

wKioL1NbamWhZqXmAALsQ9l6eXk111.jpg






     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1403422,如需转载请自行联系原作者



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 分布式计算 并行计算
计算存储分离架构
计算存储分离架构
|
2月前
|
存储 数据挖掘 BI
2-5 倍性能提升,30% 成本降低,阿里云 SelectDB 存算分离架构助力波司登集团实现降本增效
波司登集团升级大数据架构,采用阿里云数据库 SelectDB 版,实现资源隔离与弹性扩缩容,查询性能提升 2-5 倍,总体成本降低 30% 以上,效率提升 30%,助力销售旺季高效运营。
199 9
|
6月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
570 69
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
543 3
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
存储 关系型数据库 分布式数据库
【PolarDB开源】深入PolarDB内核:探究存储计算分离架构的设计哲学
【5月更文挑战第20天】PolarDB是阿里巴巴的云原生分布式数据库,以其存储计算分离架构为核心,解决了传统数据库的扩展性和资源灵活性问题。该架构将数据存储和计算处理分开,实现高性能(通过RDMA加速数据传输)、高可用性(多副本冗余保证数据可靠性)和灵活扩展(计算资源独立扩展)。通过动态添加计算节点以应对业务流量变化,PolarDB展示了其在云时代应对复杂业务场景的能力。随着开源项目的进展,PolarDB将持续推动数据库技术发展。
449 6
|
存储 Cloud Native 数据处理
Flink 2.0 状态管理存算分离架构演进
本文整理自阿里云智能 Flink 存储引擎团队负责人梅源在 Flink Forward Asia 2023 的分享,梅源结合阿里内部的实践,分享了状态管理的演进和 Flink 2.0 存算分离架构的选型。
1534 1
Flink 2.0 状态管理存算分离架构演进
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
630 0
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
边缘计算 5G SDN
控制与用户平面分离 (CUPS): 5G 网络架构的革命性变革
控制与用户平面分离 (CUPS): 5G 网络架构的革命性变革
672 2
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
567 2