小型LAMP架構搭建
阿新 • • 發佈:2019-05-17
loaded soc 賬號 ica 修改 inux 修改配置 9.png named LAMP架構實現
構建上圖所示lamp架構
主機類型 | 主機名 | 系統 | IP |
---|---|---|---|
Client | Clinet | Fedora30 | 192.168.73.153 |
DNS | DNS | CentOS7.6 | 192.168.73.101 |
HTTPD+PHP | HTTPD | CentOS7.6 | 192.168.73.110 |
HTTPD+PHP | HTTPD2 | CentOS7.6 | 192.168.73.111 |
NFS | nfs | CentOS7.6 | 192.168.73.120 |
MySQL | Master | CentOS7.6 | 192.168.73.130 |
MySQL | Slave1 | CentOS7.6 | 192.168.73.131 |
MySQL | Slave2 | CentOS7.6 | 192.168.73.132 |
一、搭建MySQL主從
在所有MySQL服務器安裝MySQL服務
yum install mariadb-server -y
Master節點操作
1.配置主節點服務器
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=/data/bin/mysql-bin
binlog-format=row
2.創建二進制日誌目錄
[mysqld] server-id=1 log-bin=/data/bin/mysql-bin binlog-format=row
3.啟動MySQL服務
[[email protected] ~]# systemctl start mariadb
4.創建一個用來主從復制的賬號
[[email protected] ~]# mysql -e "GRANT REPLICATION SLAVE ON *.* TO ‘repluser‘@‘192.168.73.%‘ IDENTIFIED BY ‘111111‘;"
5.查看二進制日誌,記錄日誌大小
[[email protected] ~]# mysql -e "SHOW MASTER LOGS;" +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 26753 | | mysql-bin.000002 | 921736 | | mysql-bin.000003 | 402 | +------------------+-----------+
Slave1節點操作
1.修改配置文件
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server-id=2
read-only
2.啟動服務
[[email protected] ~]# systemctl start mariadb
3.CHANGE MASTER TO
[[email protected] ~]# mysql
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘192.168.73.130‘, MASTER_USER=‘repluser‘, MASTER_PASSWORD=‘111111‘, MASTER_PORT=3306, MASTER_LOG_FILE=‘mysql-bin.000003‘, MASTER_LOG_POS=402;
Query OK, 0 rows affected (0.01 sec)
4.查看slave狀態
MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.73.130
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 402
Relay_Log_File: mariadb-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 402
Relay_Log_Space: 245
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
1 row in set (0.00 sec)
ERROR: No query specified
5.啟動復制線程
MariaDB [(none)]> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
6.查看slave狀態
MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.73.130
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 402
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 529
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 402
Relay_Log_Space: 825
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR: No query specified
7.測試
主節點導入測試表
[[email protected] ~]# mysql < hellodb_innodb.sql
8.slave1節點查看
[[email protected] ~]# mysql -e "SHOW DATABASES;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| test |
+--------------------+
Slave1節點搭建完畢
Slave2節點操作
1.修改配置文件
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server-id=3
read-only
2.啟動MySQL服務
[[email protected] ~]# systemctl restart mariadb
3.CHANGE MASTER TO
[[email protected] ~]# mysql
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘192.168.73.130‘, MASTER_USER=‘repluser‘, MASTER_PASSWORD=‘111111‘, MASTER_PORT=3306, MASTER_LOG_FILE=‘mysql-bin.000003‘, MASTER_LOG_POS=402;
Query OK, 0 rows affected (0.01 sec)
4.查看slave狀態
MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.73.130
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 402
Relay_Log_File: mariadb-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 402
Relay_Log_Space: 245
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
1 row in set (0.00 sec)
ERROR: No query specified
5.啟動復制線程
MariaDB [(none)]> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
6.查看數據庫是否同步
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
數據庫主從搭建完畢
二、搭建HTTPD+PHP
分別在兩臺httpd主機上安裝httpd和php-fpm
yum install httpd php-fpm php-mysql -y
配置httpd服務器
1.查看fcgi相關模塊是否啟用
[[email protected] ~]# httpd -M | grep proxy
proxy_module (shared) #已經啟用
proxy_ajp_module (shared)
proxy_balancer_module (shared)
proxy_connect_module (shared)
proxy_express_module (shared)
proxy_fcgi_module (shared) #已經啟用
proxy_fdpass_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_scgi_module (shared)
proxy_wstunnel_module (shared)
2.修改httpd配置文件
[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.php index.html
addtype application/x-httpd-php .php
addtype applictaion/x-httpd-php-source .phps
proxyrequests off
proxyPassMatch ^/(.*\.php)$ unix:/var/run/php.sock|fcgi://localhost/data/test/$1
<Virtualhost *:80>
servername blog.mylinuxops.com
Documentroot /data/test
<directory /data/test>
require all granted
</directory>
</Virtualhost>
3.修改php-fpm配置文件
[[email protected] ~]# vim /etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000
listen = /var/run/php.sock
listen.mode = 0666
;listen.allowed_clients = 127.0.0.1
4.修改php.ini中時區
[[email protected] ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai
5.啟動httpd、php-fpm
[[email protected] ~]# systemctl start httpd php-fpm
6.創建測試頁
[[email protected] ~]# mkdir /data/test
[[email protected] ~]# vim /data/test/index.php
<?php
$dsn=‘mysql:host=192.168.73.130;dbname=test‘;
$username=‘repluser‘; $passwd=‘111111‘;
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
phpinfo();
?>
7.測試
配置httpd2服務器
1.從httpd服務器將httpd配置文件及php-fpm配置文件復制至httpd2
[[email protected] ~]# scp /etc/httpd/conf/httpd.conf 192.168.73.111:/etc/httpd/conf/httpd.conf
[[email protected] ~]# scp /etc/php-fpm.d/www.conf 192.168.73.111:/etc/php-fpm.d/www.conf
2.啟動服務
[[email protected] ~]# systemctl start httpd php-fpm
3.創建測試頁
[[email protected] ~]# mkdir /data/test
[[email protected] ~]# vim /data/test/index.php
<?php
$dsn=‘mysql:host=192.168.73.130;dbname=test‘;
$username=‘repluser‘; $passwd=‘111111‘;
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
phpinfo();
?>
4.測試
配置dns服務器
1.安裝bind服務
[[email protected] ~]# yum install bind -y
2.修改主配置文件
[[email protected] ~]# vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
// allow-query { localhost; };
3.添加區域記錄
[[email protected] ~]# vim /etc/named.rfc1912.zones
zone "mylinuxops.com" IN {
type master;
file "mylinuxops.com.zone";
};
4.創建區域數據庫文件
[[email protected] etc]# cp -p /var/named/named.localhost /var/named/mylinuxops.com.zone
[[email protected] etc]# vim /var/named/mylinuxops.com.zone
$TTL 1D
@ IN SOA master admin.mylinuxops.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.73.101
www A 192.168.73.110
www A 192.168.73.111
5.檢查語法錯誤
[[email protected] etc]# named-checkconf
[[email protected] etc]# named-checkzone mylinuxops.com /var/named/mylinuxops.com.zone
zone mylinuxops.com/IN: loaded serial 0
OK
6.啟動服務
[[email protected] etc]# systemctl start named
7.測試
[[email protected] etc]# dig www.mylinuxops.com @192.168.73.101
; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.mylinuxops.com @192.168.73.101
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10093
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.mylinuxops.com. IN A
;; ANSWER SECTION:
www.mylinuxops.com. 86400 IN A 192.168.73.111
www.mylinuxops.com. 86400 IN A 192.168.73.110
;; AUTHORITY SECTION:
mylinuxops.com. 86400 IN NS master.mylinuxops.com.
;; ADDITIONAL SECTION:
master.mylinuxops.com. 86400 IN A 192.168.73.101
;; Query time: 0 msec
;; SERVER: 192.168.73.101#53(192.168.73.101)
;; WHEN: Fri May 17 06:00:35 CST 2019
;; MSG SIZE rcvd: 116
配置NFS服務
1.創建出需要共享的目錄,修改權限
[[email protected] ~]# mkdir /data/test/
[[email protected] ~]# setfacl -R -m u:nfsnobody:rwx /data/test
2.修改配置文件
[[email protected] ~]# vim /etc/exports
/data/test *(rw)
3.在httpd掛載nfs
[[email protected] ~]# showmount -e 192.168.73.120
Export list for 192.168.73.120:
/data/test *
[[email protected] ~]# mount 192.168.73.120:/data/test /data/test
4.在httpd2上掛載nfs
[[email protected] ~]# showmount -e 192.168.73.120
Export list for 192.168.73.120:
/data/test *
[[email protected] ~]# mount 192.168.73.120:/data/test /data/test
5.在/data/test中創建測試頁
<?php
$dsn=‘mysql:host=192.168.73.130;dbname=test‘;
$username=‘repluser‘; $passwd=‘111111‘;
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
phpinfo();
?>
客戶端測試
1.測試DNS
[[email protected] ~]# dig www.mylinuxops.com
; <<>> DiG 9.11.5-P4-RedHat-9.11.5-13.P4.fc30 <<>> www.mylinuxops.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37179
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.mylinuxops.com. IN A
;; ANSWER SECTION:
www.mylinuxops.com. 86400 IN A 192.168.73.111
www.mylinuxops.com. 86400 IN A 192.168.73.110
;; AUTHORITY SECTION:
mylinuxops.com. 86400 IN NS master.mylinuxops.com.
;; ADDITIONAL SECTION:
master.mylinuxops.com. 86400 IN A 192.168.73.101
;; Query time: 0 msec
;; SERVER: 192.168.73.101#53(192.168.73.101)
;; WHEN: Thu May 16 22:54:46 CST 2019
;; MSG SIZE rcvd: 116
[[email protected] ~]# dig www.mylinuxops.com
; <<>> DiG 9.11.5-P4-RedHat-9.11.5-13.P4.fc30 <<>> www.mylinuxops.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63256
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.mylinuxops.com. IN A
;; ANSWER SECTION:
www.mylinuxops.com. 86400 IN A 192.168.73.110
www.mylinuxops.com. 86400 IN A 192.168.73.111
;; AUTHORITY SECTION:
mylinuxops.com. 86400 IN NS master.mylinuxops.com.
;; ADDITIONAL SECTION:
master.mylinuxops.com. 86400 IN A 192.168.73.101
;; Query time: 0 msec
;; SERVER: 192.168.73.101#53(192.168.73.101)
;; WHEN: Thu May 16 22:54:47 CST 2019
;; MSG SIZE rcvd: 116
2.測試站點訪問
測試安裝wordpress
1.解壓wordpress到/data/test
[[email protected] ~]# tar wordpress-5.0.3-zh_CN.tar.gz -C /data/test/
2.創建wordpress所需數據庫及賬戶
[[email protected] ~]# mysql -e "CREATE DATABASE wordpress"
[[email protected] ~]# mysql -e "GRANT ALL ON wordpress.* TO ‘wpuser‘@‘192.168.73.%‘ IDENTIFIED BY ‘111111‘;"
3.修改wordpress配置文件
[[email protected] ~]# cp /data/test/wordpress/wp-config-sample.php /data/test/wordpress/wp-config.php
[[email protected] ~]# vim /data/test/wordpress/wp-config.php
// ** MySQL 設置 - 具體信息來自您正在使用的主機 ** //
/** WordPress數據庫的名稱 */
define(‘DB_NAME‘, ‘wordpress‘);
/** MySQL數據庫用戶名 */
define(‘DB_USER‘, ‘wpuser‘);
/** MySQL數據庫密碼 */
define(‘DB_PASSWORD‘, ‘111111‘);
/** MySQL主機 */
define(‘DB_HOST‘, ‘192.168.73.130‘);
4.在客戶端測試訪問
小型LAMP架構搭建