基于LAMP的架构实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于LAMP的架构实现相关的知识,希望对你有一定的参考价值。
LAMP介绍
??L:Linux
??A:Apache(Httpd)
??M:mysql、Mariadb
??M:Memcached
??P:php、Perl、Python
LAMP工作原理
- 当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端;
- 当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算的结果转为静态资源有web服务器返回客户端;
PHP常见参数
??max_execution_time= 30 最长执行时间30s
??memory_limit=128M 生产不够,可调大
??display_errors=off 调试使用,不要打开,否则可能暴露重要信息
??display_startup_errors=off 建议关闭
??post_max_size=8M 最大上传数据大小,生产可能调大,比下面项大
??upload_max_filesize =2M 最大上传文件,生产可能要调大
??max_file_uploads = 20 同时上传最多文件数
??date.timezone =Asia/Shanghai 指定时区
??short_open_tag=on 开启短标签,如<? phpinfo();?>
常见LAMP应用
??PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
??WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用
??PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为包含BBS、CMS、博客、 SNS等一系列程序的通用型建站软件, 于2008年加入阿里巴巴集团
??Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议
??ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。 2006年6月,ECShop推出第一个版本1.0
LAMP应用搭建
- phpMyAdmin管理mysql数据库
- WordPress博客网站
- Discuz论坛部署
- PowerDNS:跨平台的开源DNS服务组件
- 实现web管理powerdns
基础环境
系统版本 | 主机名 | IP地址 | 角色 |
---|---|---|---|
CentOS7 | http | 192.168.36.104 | Apache、PHP |
CentOS7 | mariadb | 192.168.36.103 | Mariadb |
LAMP基础搭建
-
安装相关软件包
[[email protected] ~]#yum install -y httpd php php-fpm php-mysql [[email protected] ~]#yum install -y mariadb-server
-
启动httpd服务并设置开机自启动
[[email protected] ~]#systemctl restart httpd [[email protected] ~]#systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
-
httpd测试页面
[[email protected] ~]#echo "HTTPD TEST Darius‘s" >/var/www/html/index.html [[email protected] ~]#curl http://192.168.36.104 HTTPD TEST Darius‘s
-
修改http配置文件,使其运行PHP程序
[[email protected] ~]#vim /etc/httpd/conf/httpd.conf .... 164 DirectoryIndex index.php index.html .... 354 addtype application/x-httpd-php .php 355 addtype applictaion/x-httpd-php-source .phps 356 proxyrequests off 357 proxyPassMatch ^/(.*\.php)$ unix:/var/run/php.sock|fcgi://localhost/data/test/$1 358 359 <Virtualhost *:80> 360 Documentroot /data/test 361 <directory /data/test> 362 require all granted 363 </directory> 364 </Virtualhost>
-
修改php-fpm模块文件
关于php-fpm:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
[[email protected] ~]#vim /etc/php-fpm.d/www.conf 12 ;listen = 127.0.0.1:9000 13 listen = /var/run/php.sock 25 ;listen.allowed_clients = 127.0.0.1 34 ;listen.mode = 0666 35 listen.mode = 0666
-
修改php.ini中的时区
[[email protected] ~]#vim /etc/php.ini 879 date.timezone = Asia/Shanghai
-
启动httpd、php-fpm服务
[[email protected] ~]#systemctl restart httpd php-fpm
-
测试页测试
[[email protected] ~]#mkdir /data/test [[email protected] ~]#cat /data/test/index.php <?php phpinfo(); ?>
-
数据库配置
[[email protected] ~]#mkdir /data/bin -p [[email protected] ~]#chown -R mysql.mysql /data/bin/ [[email protected] ~]#vim /etc/my.cnf [mysqld] log-bin=/data/bin/mysql-bin binlog-format=row ....
-
启动数据库服务
[[email protected] ~]#systemctl start mariadb [[email protected] ~]#systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
-
创建远程连接访问的用户
MariaDB [(none)]> grant all on test.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘; Query OK, 0 rows affected (0.00 sec)
-
PHP连接数据库测试
[[email protected] ~]#vim /data/test/index.php <?php $dsn=‘mysql:host=192.168.36.103;dbname=test‘; $username=‘test‘; $passwd=‘centos‘; $dbh=new PDO($dsn,$username,$passwd); var_dump($dbh); phpinfo(); ?>
- PHP测试页
部署phpMyadmin(管理工具)
-
下载phpMyadmin包(王老师说过,要玩就玩最新版,所以这里下载最新版)
下载地址:https://www.phpmyadmin.net/downloads/
-
解压
[[email protected] ~]#tar xf phpMyAdmin-4.0.10.20-all-languages.tar.xz
-
将文件全部移动到php网站目录下
[[email protected] ~]#mkdir /data/test/pam [[email protected] ~]#mv phpMyAdmin-4.0.10.20-all-languages/* /data/test/pam
-
修改phpMyadmin配置文件名称
[[email protected] ~]#cd /data/test/pam/ [[email protected] pam]#cp config.sample.inc.php config.inc.php
-
修改phpMyadmin配置文件
[[email protected] pam]#grep ‘^\$cfg‘ config.inc.php $cfg[‘blowfish_secret‘] = ‘centos‘; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg[‘Servers‘][$i][‘host‘] = ‘192.168.36.103‘;
-
网页访问
-
安装缺少的扩展工具包:php-mbstring
[[email protected] pam]#yum install -y php-mbstring
-
登录界面
- 管理界面
部署wordpress博客网站
-
创建wordpress数据库,用于添加数据
MariaDB [(none)]> create database wordpress; Query OK, 1 row affected (0.00 sec)
-
创建用户并进行授权
MariaDB [(none)]> grant all on wordpress.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘; Query OK, 0 rows affected (0.00 sec)
-
安装wordpress包
[[email protected] ~]#unzip wordpress-5.0-zh_CN.zip [[email protected] ~]#mv wordpress/* /data/test/wordpress/
-
修改wordpress配置文件
[[email protected] ~]#cd /data/test/wordpress/ [[email protected] wordpress]#mv wp-config-sample.php wp-config.php [[email protected] wordpress]#vim wp-config.php # WordPress数据库的名称 define(‘DB_NAME‘, ‘wordpress‘); # MySQL数据库用户名 define(‘DB_USER‘, ‘wpuser‘); # MySQL数据库密码 define(‘DB_PASSWORD‘, ‘centos‘); # MySQL主机 define(‘DB_HOST‘, ‘192.168.36.103‘);
- 安装测试
5.1 安装成功
5.2 登录界面
5.3 登陆管理界面
部署Discuz论坛
-
安装包解压并归档至网页目录
[[email protected] ~]#unzip Discuz_X3.3_SC_UTF8.zip [[email protected] ~]#mv upload/ /data/test/forum
-
网页目录添加acl权限
[[email protected] ~]#setfacl -R -m u:apache:rwx /data/test/forum
-
创建数据库
MariaDB [(none)]> create database ultrax; Query OK, 1 row affected (0.00 sec)
-
创建论坛用户并进行授权
MariaDB [(none)]> grant all on ultrax.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘; Query OK, 0 rows affected (0.00 sec)
- 修改网页配置文件
[[email protected] ~]#vim /data/test/forum/config/config_global_default.php
$_config[‘db‘][1][‘dbhost‘] = ‘192.168.36.103‘;
$_config[‘db‘][1][‘dbuser‘] = ‘root‘;
$_config[‘db‘][1][‘dbpw‘] = ‘123456‘;
$_config[‘db‘][1][‘dbcharset‘] = ‘utf8‘;
$_config[‘db‘][1][‘pconnect‘] = 0;
$_config[‘db‘][1][‘dbname‘] = ‘ultrax‘;
$_config[‘db‘][1][‘tablepre‘] = ‘pre_‘;
[[email protected] ~]#vim /data/test/forum/config/config_ucenter_default.php
define(‘UC_DBHOST‘, ‘192.168.36.103‘); // UCenter 数据库主机
define(‘UC_DBUSER‘, ‘root‘); // UCenter 数据库用户名
define(‘UC_DBPW‘, ‘123456‘); // UCenter 数据库密码
define(‘UC_DBNAME‘, ‘ultrax‘); // UCenter 数据库名称
define(‘UC_DBCHARSET‘, ‘utf8‘); // UCenter 数据库字符集
define(‘UC_DBTABLEPRE‘, ‘`ucenter`.uc_‘); // UCenter 数据库表前缀
- 安装向导
6.1 同意安装
6.2 无特殊情况,检查通过,进行下一步
6.3 全新安装
6.4 连接数据库进行安装
6.5 安装成功,并成功登陆
部署PowerDNS:跨平台的开源DNS服务组件
-
启用EPEL源安装PowerDNS相关软件包
[[email protected] ~]#yum install -y pdns pdns-backend-mysql
-
数据库服务器中创建库
MariaDB [(none)]> create database powerdns; Query OK, 1 row affected (0.00 sec)
-
创建用户并对其进行授权
MariaDB [(none)]> grant all on powerdns.* to [email protected]‘192.168.36.%‘ identified by ‘centos‘; Query OK, 0 rows affected (0.00 sec)
- 编写pdns.sql数据库脚本并导入数据库中
[[email protected] ~]#vim pdns.sql
CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO ‘powerdns‘@‘localhost‘ IDENTIFIED BY ‘magedu‘;
use powerdns
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);
-
修改配置文件,配置PowerDNS使用mariadb作为后台数据库存储
[[email protected] ~]#vim /etc/pdns/pdns.conf #launch=bind launch=gmysql gmysql-host=192.168.36.103 gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=centos
- 启动服务
[[email protected] ~]#systemctl start pdns
实现WEB管理的PowerDNS
-
安装相关包
[[email protected] ~]#yum -y install httpd php php-devel php-gd php-mcrypt php-imap phpldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring phpmcrypt php-mhash gettext
-
重新启动httpd服务
[[email protected] ~]#systemctl restart httpd
-
下载poweradmin程序,并解压缩到相应目录
[[email protected] ~]#mkdir /data/test/poweradmin [[email protected] ~]#tar xf poweradmin-2.1.7.tgz -C /data/test/poweradmin [[email protected] ~]#mv /data/test/poweradmin/poweradmin-2.1.7/* /data/test/poweradmin/
- 访问下面地址,启动PowerAdmin的网页安装向导
http://powerdns服务器IP/poweradmin/install/
4.1 启动admin安装
4.2 引导1
4.3 引导2
4.4 引导3
4.5 数据库中进行用户授权
4.6 修改poweradmin根目录下的/inc/config.inc.php文件
4.7 从Poweradmin根目录中删除目录“install/”
删除目录后,可以使用用户名“admin”和密码“centos”登录到Poweradmin。
4.8 成功!!!
以上是关于基于LAMP的架构实现的主要内容,如果未能解决你的问题,请参考以下文章
实战案例:编译安装基于 FastCGI 模式LAMP架构多虚拟主机WEB应用(WordPress 和Discuz)
编译安装基于FASTCGI模式LAMP架构多虚拟主机WEB应用及loganalyzer图形化日志