一、介绍LNMP架构
- LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
- LNMP工作原理
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
}
location ~ \.(jpg|png|gif)$ {
root /code/images;
}
二、安装LNMP架构环境
# 解决yum安装软件冲突问题
[root@web01 ~]#yum remove php-mysql php php-fpm php-common
# 准备yum安装软件扩展源信息
[root@web01 ~]#rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@web01 ~]#rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 利用yum安装PHP相关软件信息
[root@web01 ~]#yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
#开启php-fpm
[root@web01 ~]# systemctl enable php-fpm
[root@web01 ~]# systemctl start php-fpm
#安装mariadb
[root@web01 php]# yum install mariadb mariadb-server -y
[root@web01 php]# systemctl start mariadb
[root@web01 php]# systemctl enable mariadb
nginx集成php
1.启动php-fpm
2.配置nginx
[root@web01 php]# cat /etc/nginx/conf.d/php.oldxu.com.conf
server {
listen 80;
server_name php.oldxu.com;
root /code;
#当用户请求php.oldxu.com --> php.oldxu.com/index.php
location / {
index index.php;
}
#将请求转给php-fpm程序,同时携带我们需要被解析的文件路径 SCRIPT_FILENAME = /code/index.php
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
3.编写php代码
[root@web01 php]# rm -rf /code && mkdir /code
[root@web01 php]# cat /code/index.php
<?php
phpinfo();
?>
php集成mysql
1.mariadb要启动
[root@web01 php]# systemctl start mariadb
[root@web01 php]# systemctl enable mariadb
2.mysql要配置对应的用户和密码
#给mysql的root用户设定的密码
[root@web01 php]# mysqladmin password oldxu.com
#验证 密码
[root@web01 php]# mysql -uroot -poldxu.com
3.编写php连接 mysql的 代码,访问测试
[root@web01 php]# cat /code/mysql.php
<?php
//设定变量
$servername = "localhost";
$username = "root";
$password = "oldxu.com";
// 创建连接
$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "php连接MySQL数据库成功";
?>
三、LNMP架构部署
1.准备wordpress的代码?放到某个指定的位置
[root@web01 ~]# rm -rf /code
[root@web01 ~]# mkdir /code
[root@web01 ~]# tar xf wordpress-5.2.3-zh_CN.tar.gz -C /code/
[root@web01 ~]# ll /code/
drwxr-xr-x 5 oldman oldman 4096 9月 5 2019 wordpress
2.修改权限:
1.将 nginx php 的用户 身份 统一修改 为 www?
[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u666 -g666 www
修改nginx运行身份
[root@web01 ~]# sed -i '/^user/c user www;' /etc/nginx/nginx.conf
修改php-fpm的运行身份
[root@web01 ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
[root@web01 ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf
重启nginx和php
[root@web01 ~]# systemctl restart nginx php-fpm
2.授权代码的权限为www
[root@web01 ~]# chown -R www.www /code/wordpress/
3.配置下mariadb,创建一个库
[root@web01 ~]# mysql -uroot -pxu.com
MariaDB [(none)]>
MariaDB [(none)]> create database wordpress; #创建一个 wordpress的 库
MariaDB [(none)]> show databases; #查看所有的库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress | <----
+--------------------+
5 rows in set (0.00 sec)
4.配置nginx,添加一个wordpress的网站
[root@web01 ~]# cat /etc/nginx/conf.d/blog.xu.com.conf
server {
listen 80;
server_name blog.xu.com;
root /code/wordpress;
client_max_body_size 100m;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@web01 ~]# nginx -t
[root@web01 ~]# systemctl restart nginx
5.使用 浏览器访问,然后 有问题解决问题。
hosts劫持
四、拆分数据库
主机名称 |
应用环境 |
外网地址 |
内网地址 |
---|
web01 |
nginx+php |
10.0.0.7 |
172.16.1.7 |
db01 |
mysql |
10.0.0.51 |
172.16.1.51 |
- 1.备份10.0.0.7 上的数据库,然后将备份的数据,推送到 10.0.0.51
1) 备份数据库
[root@web01 ~]# mysqldump -uroot -poldxu.com -A > /opt/data.sql
2)推送到10.0.0.51上
[root@web01 ~]# scp /opt/data.sql root@10.0.0.51:~
- 2.在10.0.0.51上恢复10.0.0.7推过来的数据
1) 安装相同版本的mysql数据库
[root@db01 ~]# yum install mariadb mariadb-server -y
2) 启动mysql数据库
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb
3)执行恢复命令 #输入重定向
[root@db01 ~]# mysql < ~/data.sql
[root@db01 ~]# systemctl restart mariadb #所有的配置生效了
[root@db01 ~]# mysql -uroot -poldxu.com #测试是否能正常登录
- 3.在10.0.0.51上,创建一个允许远程链接数据库的用户
1)登陆mysql
[root@db01 ~]# mysql -uroot -poldxu.com
2)创建远程能连接的用户,以及密码。并进行授权
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'oldxu.com';
3)验证远程用户是否可用(10.0.0.7,测试一下) 如果 通过远程方式没有问题,说明配置ok
[root@web01 ~]# mysql -h 172.16.1.51 -uall -poldxu.com
MariaDB [(none)]>
[root@web01 ~]# systemctl stop mariadb
[root@web01 ~]# systemctl disable mariadb
- 5.将10.0.0.7上应用程序连接的数据库地址指向 172.16.1.51
wordpress如何配置:
[root@web01 ~]# vim /code/wordpress/wp-config.php
/** WordPress数据库的名称 */
define( 'DB_NAME', 'wordpress' );
/** MySQL数据库用户名 */
define( 'DB_USER', 'all' );
/** MySQL数据库密码 */
define( 'DB_PASSWORD', 'oldxu.com' );
/** MySQL主机 */
define( 'DB_HOST', '172.16.1.51' );