基於LAMP的架構實現


LAMP介紹

  L:Linux
  A:Apache(Httpd)
  M:Mysql、Mariadb
  M:Memcached
  P:PHP、Perl、Python

LAMP工作原理

基於LAMP的架構實現

  1. 當客戶端請求的是靜態資源時,web服務器會直接把靜態資源返回客戶端;
  2. 當客戶端請求的是動態資源時,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基礎搭建

  1. 安裝相關軟件包

    [root@http ~]#yum install -y httpd php php-fpm php-mysql
    [root@mariadb ~]#yum install -y mariadb-server
  2. 啓動httpd服務並設置開機自啓動

    [root@http ~]#systemctl restart httpd
    [root@http ~]#systemctl enable httpd
    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
  3. httpd測試頁面

    [root@http ~]#echo "HTTPD TEST Darius's" >/var/www/html/index.html
    [root@http ~]#curl http://192.168.36.104
    HTTPD TEST Darius's
  4. 修改http配置文件,使其運行PHP程序

    [root@http ~]#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>
  5. 修改php-fpm模塊文件

    關於php-fpm:PHP FastCGI 進程管理器,用於管理PHP 進程池的軟件,用於接受web服務器的請求。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置。
    [root@http ~]#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 
  6. 修改php.ini中的時區

    [root@http ~]#vim /etc/php.ini
    879 date.timezone = Asia/Shanghai
  7. 啓動httpd、php-fpm服務

    [root@http ~]#systemctl restart httpd php-fpm
  8. 測試頁測試

    [root@http ~]#mkdir /data/test
    [root@http ~]#cat /data/test/index.php
    <?php
    phpinfo();
    ?>

    基於LAMP的架構實現

  9. 數據庫配置

    [root@mariadb ~]#mkdir /data/bin -p
    [root@mariadb ~]#chown -R mysql.mysql /data/bin/
    [root@mariadb ~]#vim /etc/my.cnf
    [mysqld]
    log-bin=/data/bin/mysql-bin
    binlog-format=row
    ....
  10. 啓動數據庫服務

    [root@mariadb ~]#systemctl start mariadb
    [root@mariadb ~]#systemctl enable mariadb
    Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
  11. 創建遠程連接訪問的用戶

    MariaDB [(none)]> grant all on test.* to test@'192.168.36.%' identified by 'centos';
    Query OK, 0 rows affected (0.00 sec)
  12. PHP連接數據庫測試

    [root@http ~]#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();
    ?>
  13. PHP測試頁
    基於LAMP的架構實現

部署phpMyadmin(管理工具)

  1. 下載phpMyadmin包(王老師說過,要玩就玩最新版,所以這裏下載最新版)

    下載地址:https://www.phpmyadmin.net/downloads/
  2. 解壓

    [root@http ~]#tar xf phpMyAdmin-4.0.10.20-all-languages.tar.xz
  3. 將文件全部移動到php網站目錄下

    [root@http ~]#mkdir /data/test/pam
    [root@http ~]#mv phpMyAdmin-4.0.10.20-all-languages/* /data/test/pam
  4. 修改phpMyadmin配置文件名稱

    [root@http ~]#cd /data/test/pam/
    [root@http pam]#cp config.sample.inc.php config.inc.php
  5. 修改phpMyadmin配置文件

    [root@http 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';
  6. 網頁訪問
    基於LAMP的架構實現

  7. 安裝缺少的擴展工具包:php-mbstring

    [root@http pam]#yum install -y php-mbstring
  8. 登錄界面
    基於LAMP的架構實現

  9. 管理界面
    基於LAMP的架構實現

部署wordpress博客網站

  1. 創建wordpress數據庫,用於添加數據

    MariaDB [(none)]> create database wordpress;
    Query OK, 1 row affected (0.00 sec)
  2. 創建用戶並進行授權

    MariaDB [(none)]> grant all on wordpress.* to wpuser@'192.168.36.%' identified by 'centos';
    Query OK, 0 rows affected (0.00 sec)
  3. 安裝wordpress包

    [root@http ~]#unzip wordpress-5.0-zh_CN.zip
    [root@http ~]#mv wordpress/* /data/test/wordpress/
  4. 修改wordpress配置文件

    [root@http ~]#cd /data/test/wordpress/
    [root@http wordpress]#mv wp-config-sample.php wp-config.php
    [root@http 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. 安裝測試
    基於LAMP的架構實現

5.1 安裝成功
基於LAMP的架構實現

5.2 登錄界面
基於LAMP的架構實現

5.3 登陸管理界面
基於LAMP的架構實現

部署Discuz論壇

  1. 安裝包解壓並歸檔至網頁目錄

    [root@http ~]#unzip Discuz_X3.3_SC_UTF8.zip
    [root@http ~]#mv upload/ /data/test/forum
  2. 網頁目錄添加acl權限

    [root@http ~]#setfacl -R -m u:apache:rwx /data/test/forum
  3. 創建數據庫

    MariaDB [(none)]> create database ultrax;
    Query OK, 1 row affected (0.00 sec)
  4. 創建論壇用戶並進行授權

    MariaDB [(none)]> grant all on ultrax.* to dis@'192.168.36.%' identified by 'centos';
    Query OK, 0 rows affected (0.00 sec)
  5. 修改網頁配置文件
[root@http ~]#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_';

[root@http ~]#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 數據庫表前綴
  1. 安裝嚮導
    6.1 同意安裝
    基於LAMP的架構實現

6.2 無特殊情況,檢查通過,進行下一步
基於LAMP的架構實現

6.3 全新安裝
基於LAMP的架構實現

6.4 連接數據庫進行安裝
基於LAMP的架構實現

6.5 安裝成功,併成功登陸
基於LAMP的架構實現

部署PowerDNS:跨平臺的開源DNS服務組件

  1. 啓用EPEL源安裝PowerDNS相關軟件包

    [root@http ~]#yum install -y pdns pdns-backend-mysql
  2. 數據庫服務器中創建庫

    MariaDB [(none)]> create database powerdns;
    Query OK, 1 row affected (0.00 sec)
  3. 創建用戶並對其進行授權

    MariaDB [(none)]> grant all on powerdns.* to powerdns@'192.168.36.%' identified by 'centos';
    Query OK, 0 rows affected (0.00 sec)
  4. 編寫pdns.sql數據庫腳本並導入數據庫中
[root@mariadb ~]#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);
  1. 修改配置文件,配置PowerDNS使用mariadb作爲後臺數據庫存儲

    [root@http ~]#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
  2. 啓動服務
    [root@http ~]#systemctl start pdns

實現WEB管理的PowerDNS

  1. 安裝相關包

    [root@http ~]#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
  2. 重新啓動httpd服務

    [root@http ~]#systemctl restart httpd
  3. 下載poweradmin程序,並解壓縮到相應目錄

    [root@http ~]#mkdir /data/test/poweradmin
    [root@http ~]#tar xf poweradmin-2.1.7.tgz -C /data/test/poweradmin
    [root@http ~]#mv /data/test/poweradmin/poweradmin-2.1.7/* /data/test/poweradmin/
  4. 訪問下面地址,啓動PowerAdmin的網頁安裝嚮導
    http://powerdns服務器IP/poweradmin/install/
    4.1 啓動admin安裝
    基於LAMP的架構實現

4.2 引導1
基於LAMP的架構實現

4.3 引導2
基於LAMP的架構實現

4.4 引導3
基於LAMP的架構實現

4.5 數據庫中進行用戶授權
基於LAMP的架構實現
基於LAMP的架構實現

4.6 修改poweradmin根目錄下的/inc/config.inc.php文件
基於LAMP的架構實現
基於LAMP的架構實現

4.7 從Poweradmin根目錄中刪除目錄“install/”
基於LAMP的架構實現

刪除目錄後,可以使用用戶名“admin”和密碼“centos”登錄到Poweradmin。

基於LAMP的架構實現

4.8 成功!!!
基於LAMP的架構實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章