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, 설정 워드 프레스
环境:服务器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)에 직접 장착 얌 자료 : 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)를 의미합니다.
CGI의 영구적 인 (긴 - 라이브) 유형과 같은 FastCGI를, 그것은 항상 항상 가장 비판 CGI 포크 - 및 - 실행 모드 (한 번 포크로 시간이 걸릴 필요가 없습니다, 활성화 한,로 수행 할 수있는 ). 또한, 즉 FastCGI를 프로그램이 호스트 서버와 다른 사이트 서버에서 요청을 수락하는 것보다 다른 사이트에서 실행할 수 있습니다 분산 컴퓨팅을 지원합니다.
FastCGI를이 언어에 의존, 확장 성, 개방형 확장 프레임 워크 CGI이며, 주요 동작은 메모리에 CGI 인터프리터 과정을 유지하고, 따라서 더 높은 성능을 달성하는 것입니다. 우리 모두가 알다시피 메모리에 저장 및 일정 FastCGI 프로세스 관리자를 받아 들인다면, CGI 인터프리터 반복 하중 성능 저하의 CGI, CGI 인터프리터의 주된 이유는 좋은 성능, 확장 성, 페일 특성 이상 등을 제공 할 수있다
(1) 원리
웹 서버 시작 FastCGI 프로세스 관리자 (IIS ISAPI 모듈이나 아파치)로드 할 때 1,
2, FastCGI 프로세스 관리자가 여러 CGI 인터프리터 프로세스를 시작 자체를 초기화 (여러 PHP를 CGI 표시) 및 웹 서버에서 연결을 기다립니다 .
3, 클라이언트 요청이 선택하고 CGI 인터프리터에 연결하기 위해 웹 서버, FastCGI 프로세스 관리자를 도착했을 때. 웹 서버는 아동 된 FastCGI PHP를 CGI CGI 환경 변수와 표준 입력으로 전송합니다.
4, 동일한 연결에서 처리 표준 출력 및 오류 메시지의 완료 후 FastCGI를 자식 프로세스가 웹 서버를 반환합니다. 자식 FastCGI 프로세스가 종료되면 연결 요청 프로세스를 완료하기 위해 올 것이다. FastCGI를 하위 프로세스 다음 (웹 서버에 실행) FastCGI 프로세스 관리자 아래에서 치료 대기는 연결입니다. 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 = 정적 | 동적
정적 : 자식 프로세스의 고정 된 수, pm.max_children
동적 : 아이의 수는 동적 모드 관리 프로세스, 디폴트 값
pm.max_children은 = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
PM 요청의 수를 처리 할 수있는 각 프로세스에 대한 .max_requests = 500
프로세스가 PHP-FPM 사용자가 실행되고 있는지 확인하기 위해 읽기 및 쓰기 권한 세션 디렉토리있다
MKDIR은 / var / lib 디렉토리 / PHP / 세션에
대한 Chown apache.apache은 / var / lib 디렉토리 / PHP / 세션
(1) 구성 아파치
/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>