实现LAMP架构常用应用部署
实现LAMP架构常用应用部署
1、编译安装httpd2.4和php7.3环境
环境:主服务器:192.168.37.10 php+httpd服务
从服务器:192.168.37.20 mariadb服务器
软件版本: httpd-2.4.39.tar.bz2
php-7.3.7.tar.xz
apr-util-1.6.1.tar.bz2
apr-1.7.0.tar.bz2
mariadb-10.2.25-linux-x86_64.tar.gz
从服务器:
安装依赖包:
yum install libaio -y
1、解压mariadb指定文件夹
[root@node1 ~]# tar -xvf mariadb-10.2.25-linux-x86_64.tar.gz -C /usr/local/
2、建立软链接
[root@node1 ~]# cd /usr/local/
[root@node1 local]# ln -sv mariadb-10.2.25-linux-x86_64/ mysql
3、建立mysql用户并设置文件属主权限
[root@node1 local]# chown -R mysql.mysql mysql/
4、准备配置文件
# mkdir /etc/mysql/
# cp support-files/my-large.cnf /etc/my.cnf #support-files在mysql目录下
# vim /etc/my.cnf
[mysqld]中添加三个选项:
28 datadir = /data/mysql
29 innodb_file_per_table = on #默认存储引擎innodb
30 skip_name_resolve = on # 禁止主机名解析,建议使用
5、创建数据库文件
# cd /usr/local/mysql/
# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
6、准备服务脚本,并启动服务
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
# service mysqld start
7、PATH路径
# echo PATH=/usr/local/mysql/bin:$PATH> /etc/profile.d/mysql.sh
# . /etc/profile.d/mysql.sh # 环境变量加入到启动脚本中
8、启动服务
service mysql start
8、安全初始化
/user/local/mysql/bin/mysql_secure_installation # mysql安全加固 设置数据库管理员root口令
禁止root远程登录
删除anonymous用户帐号
删除test数
主服务器
编译安装httpd2.4
事前:安装依赖包
yum -y install gcc pcre-devel openssl-devel expat-devel cc
8、解压软件
[root@master data]# tar -xvf apr-util-1.6.1.tar.bz2
[root@master data]# tar -xvf apr-1.7.0.tar.bz2
[root@master data]# tar xvf httpd-2.4.39.tar.bz2
9、移动加压文件到http目录下
[root@master data]# mv apr-1.7.0 httpd-2.4.39/srclib/apr
[root@master data]# mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util
10、http目录下编译安装
[root@master httpd-2.4.39]#./configure --prefix=/app/httpd24 \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork \
--with-included-apr \
--with-included-apr-util
[root@master data]# make -j 4 && make install
11、设置环境环境变量
[root@master data]# echo PATH=/app/httpd24/bin/:$PATH > /etc/profile.d/httpd.sh
[root@master data]# . /etc/profile.d/httpd.sh
12、设置服务脚本
[root@master data]# cp /app/httpd24/bin/apachectl /etc/init.d/httpd
13、启动服务
service httpd start
安装php
12、安装相关依赖包
[root@master data]# yum install libxml2-devel bzip2-devel libmcrypt-devel -y
13、解压文件
[root@master data]# tar -xvf php-7.3.7.tar.xz
14、编译安装
[root@master data]# cd php-7.3.7
[root@master php-7.3.7]#
./configure --prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-mbstring \
--enable-xml \
--enable-sockets \
--enable-fpm \
--enable-maintainer-zts \
--disable-fileinfo
可能出现问题:
Sorry, I cannot run apxs. Possible reasons follow:
1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)
The output of /usr/local/apache/bin/apxs follows:
./configure: line 6669: /usr/local/apache/bin/apxs: No such file or directory
configure: error: Aborting
解决方式:找到apxs存在路径,后修改apxs2编译路径即可
[root@master php-7.3.7]# find / -name apxs
/data/httpd-2.4.39/support/apxs
/usr/bin/apxs
/app/httpd24/bin/apxs
15、安装
make && make install
二、配置fastcgi和httpd支持php
1、复制fpm到配置文件
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
service php-fpm start
[root@master etc]# vim /etc/httpd24/httpd.conf
1、启动proxy_fcgi、proxy
取消下面两行的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2、修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
3、修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html >>>>>>>>>>普通支持php (lamp普通模式添加下列三个即可)
</IfModule>
加下面四行
AddType application/x-httpd-php .php >>>>>>>>>>>普通支持php
AddType application/x-httpd-php-source .phps>>>>>>>>>>>>>普通支持php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1 index.php存放目录
4、验证、
rm -rf /app/http24/htdocs/index.html
cat /app/httpd24/htdocs/index.php
<?php
$mysqli=new mysqli("127.0.0.1", "root", "");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>
<?php
phpinfo();
?>
验证截图
2、部署phpMyadmin
实验环境:服务器:192.168.37.10
httpd.x86_64 0:2.4.6-89.el7.centos
mariadb-server.x86_64 1:5.5.60-1.el7_5 php.x86_64 0:5.4.16-46.el7
php-mysql.x86_64 0:5.4.16-46.el7
phpMyAdmin-4.4.15.10-all-languages.tar.xz
1、部署LAMP系统并启动服务
[root@localhost ~]# yum -y install httpd mariadb-server php php-mysql
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl start mariadb
2、初始化Mariadb数据库
[root@localhost pma]# mysql_secure_installation
3、解压phpMyadmin并建立软链接
[root@localhost pma]# tar -xvf phpMyAdmin-4.4.15.10-all-languages.tar.xz -C /var/www/html/
[root@localhost pma]# cd /var/www/html/
[root@localhost pma]# ln -sv phpMyAdmin-4.4.15.10-all-languages/ pma
[root@localhost pma]# cp config.sample.inc.php config.inc.php
4、此时登录会提示缺少mbstring软件
[root@localhost pma]# yum -y install php-mbstring
systemctl reload httpd
5、测试
192.168.37.10/pma
3、搭建WordPress
环境:服务器1:apache+php 192.168.37.10
服务器2:mariadb-server 192.168.37.20
1、安装lamp架构
yum install php php-mysql httpd -y
2、测试php
vim /var/www/html/index.php
<?
echo date("Y/m/d H:i:s");
phpinfo();
?>
3、修改错误时区
vim /etc/php.ini
date.tomezone=Asia/shanghai
服务器2:
4、启动服务
systemctl start mariadb
5设置建立库和建立账号
crteate database wordpree
grant all on wordpree.* to wrpuer@'192.168.37.%' identified by 'centos';
flush grant
客户端连接数据库
6、mysql -uwruser -pcentos
7、解压WordPress(建议放到var/www/html)
tar wordpree-5.0.4-zh_CN.tar.gz -C /data/WordPress
8、设置word配置文件
![title](.local/static/2019/6/4/1564017791824.1564017791912.png)
或者
也可复制
cp /wordpress/config.simple.ico.conf /var/www/html (可直接在页面配置数据库)
setfacl -m u:apache:rwx /var/wwww/html/wordpress
9、cp /data/wordpress /var/www/html
10、测试
192.168.37.10/wordress
4、搭建DISCUZ
lamp搭建同上WordPress步骤一张
unzip discuz_x3.c.zip
cd dicuz/upload
cp upload /var/www/html/forum
setfacl -mR u:apache:xrw /var/www/html/forum
服务器2:
greate database ultrax
grant all on ultax.* to wrpuer@'192.168.37.%' identified by 'centos';
5、PowerDNS搭建
部署环境:服务器1:apache+php 192.168.37.10
服务器2:mariadb-server 192.168.37.20
1、安装包:基于EPEL源
yum install -y pdns pdns-backend-mysql
2、查看相关信息
rpm -ql pdsn pdns-
3、数据建库、授权、建表
CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'powerdns'@'192.168.37.%' IDENTIFIED BY 'magedu';
CREATE TABLE domains (
id INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (
id BIGINT AUTO_INCREMENT,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(10) DEFAULT NULL,
content VARCHAR(64000) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
disabled TINYINT(1) DEFAULT 0,
ordername VARCHAR(255) BINARY DEFAULT NULL,
auth TINYINT(1) DEFAULT 1,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);
CREATE TABLE supermasters (
ip VARCHAR(64) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) NOT NULL,
PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;
CREATE TABLE comments (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
type VARCHAR(10) NOT NULL,
modified_at INT NOT NULL,
account VARCHAR(40) NOT NULL,
comment VARCHAR(64000) NOT NULL,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
CREATE TABLE domainmetadata (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
kind VARCHAR(32),
content TEXT,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
CREATE TABLE cryptokeys (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
flags INT NOT NULL,
active BOOL,
content TEXT,
PRIMARY KEY(id)
) Engine=InnoDB;
CREATE INDEX domainidindex ON cryptokeys(domain_id);
CREATE TABLE tsigkeys (
id INT AUTO_INCREMENT,
name VARCHAR(255),
algorithm VARCHAR(50),
secret VARCHAR(255),
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
4、配置Powersna主文件
vim /etc/pdn/pdns.conf
launch=gmysql
gmysql-host=192.168.37.17
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=magedu
5、启动服务
systemctl start pdns
systemctl enable pdns
6、安装服务
安装httpd和php相关包
yum -y install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
7、启动服务
systemctl start httpd
systemctl enable httpd
8、下载poweradmin程序,并解压缩到相应目录
cd /var/www/html
wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
9、解压到/var/www/html
tar xvf poweradmin-2.1.7.tgz -C /var/www/html/poweradmin
1、实现mariadb
编译安装mariadb
chown -R rootroot mysql/
craeate data base wordress
grant all on wordpress.* to wordpress@'192.168.37.%' identifit by 'centos'
6、部署xcache模块-加速访问
1、安装方法:
(1)yum源直接安装:来自epel源
(2)编译安装
实例:
环境:主服务器:192.168.37.10 centos7.6
客户端:192.168.37.20 centos7.6
主服务节点:
1、安装xcache依赖工具
[root@master ~]# yum install php-devel gcc cc
2、解压
[root@master data]# tar -xvf xcache-3.2.0.tar.gz
3、生成编译环境
[root@master data]# cd xcache-3.2.0
[root@master xcache-3.2.0]# phpize --clean && phpize
4、编译
[root@master xcache-3.2.0]# ./configure --enable-xcache
[root@master xcache-3.2.0]# make && make install
5.复制配置文件到php配置目录下
[root@master xcache-3.2.0]# cp xcache.ini /etc/php.d/
[root@master xcache-3.2.0]# systemctl start httpd
客户端节点:
6、测试
[root@localhost ~]# ab -c 120 -n 1000 192.168.37.10/messages
[root@localhost ~]# ab -c 120 -n 1000 192.168.37.10/messages.php
7、fastcgi
FastCGI全称 快速通用网关接口(FastCommonGatewayInterface)。
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等
(1)原理
1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
(2)fastcgi配置
fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
官方文档:http://php.net/manual/zh/install.fpm.configuration.php
连接池: pm = static|dynamic
static:固定数量的子进程;pm.max_children
dynamic:子进程数量以动态模式管理,默认值
pm.max_children = 50
pm.start_servers =5
pm.min_spare_servers =5
pm.max_spare_servers =35
pm.max_requests = 500 每个进程可以处理的请求数
确保运行php-fpm进程的用户对session目录有读写权限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session
(1) 配置httpd
添加/etc/httpd/conf.d/fcgi.conf配置文件,内容类似
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
UDS(unix domain socket)方式
ProxyPassMatch ^/(.*\.php)$ unix:/var/run/php.sock|fcgi://localhost/app/httpd24/htdocs/$1
参看:http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html
注意:在HTTPD服务器上必须启用proxy_fcgi_module模块,充当PHP客户端
httpd –M |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
2) 虚拟主机配置
vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot /apps/vhosts/b.net
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
<Directory "/apps/vhosts/b.net">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>