LNMP环境搭建,博客搭建(实现伪静态),数据库迁移,nfs迁移

LNMP(即为Linux,Nginx,Mysql以及PHP)
lnmp的作用,它是用来干什么的?
在这里插入图片描述

Mysql

一、Mysql安装

1、创建用户,指定用户登入后使用的shell(-s),-M不建家目录

[root@web01 ~]# useradd mysql -s /sbin/nologin -M
[root@web01 ~]# id mysql
uid=1112(mysql) gid=1112(mysql)=1112(mysql)

2、上传软件到指定的目录

[root@web01 ~]# cd /server/tools/

3、解压并移动Mysql二进制软件包到指定的安装路径

[root@web01 tools]# tar -xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
[root@web01 tools]# mv mysql-5.7.32-linux-glibc2.12-x86_64 /application/mysql-5.7.32  

4、创建软链接,生成去掉版本号的访问路径

[root@web01 tools]# ln -s /application/mysql-5.7.32/ /application/mysql
[root@web01 tools]# ls -l /application/
总用量 0
lrwxrwxrwx 1 root root  26 420 13:39 mysql -> /application/mysql-5.7.32/    #mysql软链接
drwxr-xr-x 9 root root 129 420 13:34 mysql-5.7.32  #mysql安装路径
[root@web01 tools]# ls /application/mysql
bin  docs  include  lib  LICENSE  man  README  share  support-files

二、配置配置文件

1、这是yum安装的mariadb的配置文件,并没有找到mysql的my.cnf相关模板,所以要卸载系统自动安装的mariadb库,防止冲突(不可以yum remove mariadb这样会卸载依赖包,以后会出现错误)

[root@web01 tools]# ls -l /etc/my.cnf
-rw-r--r--. 1 root root 570 816 2018 /etc/my.cnf
[root@web01 tools]# find ./ -type f -name "*.cnf*"
[root@web01 tools]#
[root@web01 tools]# rpm -e --nodeps mariadb-libs
[root@web01 tools]# ls -l /etc/my.cnf
ls: 无法访问/etc/my.cnf: 没有那个文件或目录

2、手工编辑my.cnf文件

[root@web01 tools]# vim /etc/my.cnf
[mysqld]
basedir = /application/mysql/
datadir = /application/mysql/data
socket = /tmp/mysql.sock
server_id = 1
port = 3306
log_error = /application/mysql/data/oldboy_mysql.err

[mysql]
socket = /tmp/mysql.sock

3、初始化数据库文件。
卸载系统自动安装的mariadb-libs,并安装依赖包

[root@web01 tools]# rpm -qa mariadb-libs   #检查mariadb-libs,看是否被卸载
[root@web01 tools]# yum install libaio-devel -y
  #安装Mysql依赖包

创建数据目录并授权

[root@web01 tools]# mkdir -p /application/mysql/data   #建立mysql数据文件目录
[root@web01 tools]# chown -R mysql:mysql /application/mysql/  #授权mysql用户,管理mysql安装目录
[root@web01 tools]# ls -ld /application/mysql/  
drwxr-xr-x 10 mysql mysql 141 420 14:28 /application/mysql/ 

初始化数据库

/application/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql/ --datadir=/application/mysql/data

三、配置并启动Mysql数据库

设置mysql启动脚本,Centos7使用systemctl来管理服务。

[root@web01 ~]# vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server by oldboy
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

启动mysql

[root@web01 ~]# systemctl start mysqld
[root@web01 ~]# netstat -anp|grep mysql
tcp6       0      0 :::3306                 :::*                    LISTEN      7605/mysqld

设置环境变量,配置mysql命令的全局使用路径,并登录。(如果不配置mysql的全局路径,则无法直接敲mysql命令管理数据库,就只能采用/application/mysql/bin/mysql这样的全路径敲命令)

[root@web01 ~]# echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
[root@web01 ~]# tail -1 /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@web01 ~]# . /etc/profile
[root@web01 ~]# echo $PATH
/application/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/                                                     bin
[root@web01 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
......

修改密码

[root@web01 ~]# mysqladmin -u root password 'liyu123456'
重新登录:
交互式登录:
	[root@web02 ~]# mysql -uroot -p
	Enter password:

如果出错就看错误日志

[root@web ~]# cat /application/mysql/data/oldboy_mysql.err

PHP

一、PHP安装

首先讲一下fastcgi

fastcgi的重要特点:
1、http服务器和动态脚本语言间通信的接口或者工具
2、可把动态语言解析和http服务器分离开来
3、fastcgi接口方式采用c/s结构,分为客户端(http服务器)和服务端(动态语言解析服务器)
4、php动态语言服务端可以启动多个fastcgi的守护进程
5、http服务器(例如nginx fastcgi_pass)通过fastcgi客户端和动态语言fastcgi服务端通信(例如php-frm)

1、安装PHP调用的库

yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y

遇到的问题:

curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; 未知的错误"
当dns配置没问题时,可以换yum源试试。
我本来是网络源,一直不行,最后换成了本地源,就好了,心情一下就好了,小小的记录一下,嘻嘻。

2、因为里面有一个软件yum无法安装,所以得用包来安装,再编译安装。

[root@web01~ ]# mv libiconv-1.16.tar.gz /server/tools/
[root@web01~ ]# cd /server/tools/
[root@web01 libiconv-1.16]# tar zxf libiconv-1.16.tar.gz
[root@web01 libiconv-1.16]# cd libiconv-1.16
[root@web01 libiconv-1.16]# yum install gcc gcc-c++ -y   #编译之前要先安装gcc哦
[root@web01 libiconv-1.16]# ./configure --prefix=/application/libiconv
[root@web01 libiconv-1.16]# make
[root@web01 libiconv-1.16]# make install
[root@web01 libiconv-1.16]# cd ../
[root@web01 libiconv-1.16]# yum -y install epel-release   #先安装epel源,以下都需要epel源的支持
[root@web01 libiconv-1.16]# yum install libmcrypt-devel -y 
[root@web01 libiconv-1.16]# yum install mhash -y
[root@web01 libiconv-1.16]# yum install mcrypt -y

3、安装PHP

[root@web01 ~]# mv php-7.2.4.tar.gz /server/tools/
[root@web01 ~]# cd -
/server/tools
[root@web01 tools]# ls
libiconv-1.16         mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
libiconv-1.16.tar.gz  php-7.2.4.tar.gz
[root@web01 tools]# tar zxf php-7.2.4.tar.gz
[root@web01 tools]# cd php-7.2.4
[root@web01 php-7.2.4]# ./configure \
--prefix=/application/php-7.2.4 \
--enable-mysqlnd  \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/application/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \   这一块的用户应该使用nginx的用户nginx
--with-fpm-group=nginx \
--enable-ftp \
--enable-opcache=no
...
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
#这样则表示安装成功
[root@web01 tools]# make && make install
[root@web01 php-7.2.4]# echo $?
0

遇到的问题,在编译时会出现

configure: error: Cannot find OpenSSL's <evp.h>

我是这样解决的:可能是没有安装openssl, openssl-devel导致的,果然!安装完就好了

[root@web01 php-7.2.4]# yum install openssl openssl-devel -y

二、配置PHP引擎配置文件php.ini

[root@web01 php-7.2.4]# cd
[root@web01 ~]# ln -s /application/php-7.2.4/ /application/php
[root@web01 ~]# ls /application/php
bin  etc  include  lib  php  sbin  var

配置php.ini(PHP解析器配置文件)

[root@web01 ~]# cd /server/tools/php-7.2.4/
[root@web01 php-7.2.4]# ls php.ini*
php.ini-development  php.ini-production
[root@web01 php-7.2.4]# cp php.ini-development /application/php/lib/php.ini
[root@web01 php-7.2.4]# ls -l /application/php/lib/php.ini
-rw-r--r-- 1 root root 70218 420 22:16 /application/php/lib/php.ini

配置PHP FPM

[root@web01 php-7.2.4]# cd /application/php/etc/
[root@web01 etc]# ls
pear.conf  php-fpm.conf.default  php-fpm.d
[root@web01 etc]# cp php-fpm.conf.default php-fpm.conf
[root@web01 etc]# cd php-fpm.d/
[root@web01 php-fpm.d]# ls
www.conf.default
[root@web01 php-fpm.d]# cp www.conf.default www.conf
[root@web01 php-fpm.d]# ls
www.conf  www.conf.default

三、启动PHP服务

[root@web01 php-fpm.d]# /application/php/sbin/php-fpm
[root@web01 php-fpm.d]# netstat -lutnp|grep php
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      35367/php-fpm: mast

将php放到开机自启动里

vim /etc/rc.local
/application/php/sbin/php-fpm

四、测试PHP是否成功

配置nginx转发PHP请求

[root@web01 conf.d]# /etc/nginx/conf.d/03_blog.conf
    server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
            root   html/blog;
            index  index.html index.htm;
        }
        location ~ .*\.(php|php5)?$ {
            root html/blog;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
    }

测试NGINX连接PHP
编写测试文件

[root@web01 /application/nginx/conf]# echo "<?php phpinfo(); ?>" > ../html/blog/test_info.php
[root@web01 /application/nginx/conf]# cat ../html/blog/test_info.php
<?php phpinfo(); ?>
[root@web01 conf.d]# /application/php/bin/php /application/nginx/html/blog/test_info.php
...
If you did not receive a copy of the PHP license, or have any
questions about PHP licensing, please contact license@php.net.
出现上述这段话就算成功了

出现以下画面就算成功了
在这里插入图片描述

配置Mysql测试PHP

[root@web01 ~]#  cd /application/nginx/html/blog/
[root@web01 blog]# vim test_mysql.php
<?php
//$link_id=mysqli_connect('主机名','用户','密码');
        $link_id=mysqli_connect('localhost','root','liyu123456') or mysql_error();
        if($link_id){
                echo "mysql successful by oldboy.\n";
        }else{
                echo mysql_error();
        }
?>
[root@web01 blog]# /application/php/bin/php /application/nginx/html/blog/test_mysql.php
mysql successful by oldboy.

也可以浏览器测试,出现的是一样的结果
Mysql测试php成功!
LNMP环境搭建成功!耶!

博客搭建

1、搭建过程

1、首先对环境进行确认

[root@web blog]# netstat -tupln|egrep "80|3306|9000"
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      10115/php-fpm: mast
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7143/nginx: master
tcp6       0      0 :::3306                 :::*                    LISTEN      7045/mysqld

2、下载上传开源的BLOG
第一步:首先在浏览器上输入www.wordpress.org这个网址,然后点击下面的红框
在这里插入图片描述
第二步:点击下载,然后把它传到虚拟主机上
在这里插入图片描述
第三步:在虚拟机上做如下操作

[root@web ~]# cd /server/tools/
[root@web tools]# tar zxf wordpress-5.2.1.tar.gz
[root@web tools]# ls
libiconv-1.16                               php-7.2.4
libiconv-1.16.tar.gz                        php-7.2.4.tar.gz
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz  wordpress
nginx-1.16.1                                wordpress-5.2.1.tar.gz
nginx-1.16.1.tar.gz
[root@web tools]# mv wordpress/* /application/nginx/html/blog/
把wordpress下的内容拷贝到blog里面,不是目录
[root@web tools]# chown -R nginx:nginx /application/nginx/html/blog/
[root@web tools]# ls -ld /application/nginx/html/blog/
drwxr-xr-x 5 nginx nginx 4096 6月  13 17:49 /application/nginx/html/blog/

还要在blog的配置文件里修改网页文件

[root@web tools]# vim /application/nginx/conf/extra/03_blog.conf
    server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
            root   html/blog;
            index  index.php index.html index.htm;
增加index.php这一选项

第四步:打开网页安装
在这里插入图片描述
点击lets go之后进入到这一步,填入用户名密码等,然后提交
在这一步之前要先进入到mysql里创建数据库

mysql> create database wordpress;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+

再点击提交
在这里插入图片描述
出现这一步就算成功了,点击运行
在这里插入图片描述
然后输入信息
在这里插入图片描述
然后在虚拟机的数据库里查看就能看到很多表

mysql> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.00 sec)

然后登录就行了
在这里插入图片描述
然后就可以看到页面了
然后点击文章,编写文章,给里面加图片
这是图片的url,没有实现动静分离,还是相对路径,还是blog.etiantian.org,可是我想要img1.etiantian.org的效果
在这里插入图片描述

2、实现伪静态

首先在页面上进行调整,步骤如下
在这里插入图片描述
第二步:在配置文件上做修改

    server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
            root   html/blog;
            index  index.php index.html index.htm;
            if (-f $request_filename/index.html){
                rewrite (.*) $1/index.html break;
            }
            if (-f $request_filename/index.php){
                rewrite (.*) $1/index.php;
            }
            if (!-f $request_filename){
                rewrite (.*) /index.php;
            }
        }
        location ~ .*\.(php|php5)?$ {
            root html/blog;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
    }

然后要删除/application/nginx/html/blog里面的Index.html,再次在浏览器里访问blog.etiantian,org然后点进去就是我们设置的伪静态url
在这里插入图片描述
这个5是啥意思?这个5是这篇文章的id,在数据库里也可以查看,就是把数据库里的这个值给取出来了
在这里插入图片描述

数据库迁移

从单机LNMP迁移到DB01独立的Mysql
首先得在bd01上装数据库,步骤在上面这里就不赘述了
然后针对LNMP的机子在命令行操作,将本机上的数据库打包备份。然后拷贝到db01上

[root@web ~]# mysqldump -uroot -pliyu123456 -A -B|gzip > /tmp/web_db.sql.gz
mysqldump: [Warning] Using a password on the command line interface can be insecure.
-A 所有的库
[root@web ~]# scp /tmp/web_db.sql.gz 192.168.119.175:/tmp
web_db.tar.gz                                100%  384KB  54.8MB/s   00:00
[root@web ~]# systemctl stop mysqld
[root@web ~]# systemctl disable mysqld
Removed symlink /etc/systemd/system/multi-user.target.wants/mysqld.service.
然后再将LNMP的mysql服务关掉

然后在db01上执行

[root@db01 tmp]# ls
mysql.sock  mysql.sock.lock  vmware-root_6419-1949705016  web_db.sql.gz
[root@db01 tmp]# gzip -d web_db.sql.gz
[root@db01 tmp]# mysql -uroot -p..... < /tmp/web_db.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@db01 tmp]# mysql -uroot -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
进去就能看到之前的wordpress库
mysql> grant all privileges on wordpress.* to wordpress@'192.168.119.%' identified by 'liyu123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
授权刷新
mysql> select user,authentication_string,host from mysql.user;
+---------------+-------------------------------------------+---------------+
| user          | authentication_string                     | host          |
+---------------+-------------------------------------------+---------------+
| root          | *A404BDD51588714975A801B7AB341A6C79126E74 | localhost     |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost     |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost     |
| wordpress     | *A404BDD51588714975A801B7AB341A6C79126E74 | 192.168.119.% |
+---------------+-------------------------------------------+---------------+
可以看到最后一行

然后再在LNMP单机上操作,修改配置文件
vim /application/nginx/html/blog/wp-config.php
在这里插入图片描述
然后再访问页面就能看到页面了
在这里插入图片描述

NFS迁移

web数据迁移到nfs存储
所有的web和nfs都要统一一个uuid用户,上次lnmp的用户是nginx 1111,所以在Nfs上也要创同一个用户

[root@localhost ~]# useradd nginx -u 1111 -s /sbin/nologin -M
[root@nfs ~]# grep 1111 /etc/passwd
nginx:x:1111:1111::/home/nginx:/sbin/nologin
[root@nfs ~]# vim /etc/exports
/data 192.168.119.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)

然后在lnmp主机上进行下列操作,证明nfs挂载成功

[root@web uploads]# ls
2021
[root@web uploads]# pwd
/application/nginx/html/blog/wp-content/uploads
[root@web uploads]# scp 2021 -rp 192.168.119.176:/data/blog_nfs/

[root@nfs ~]# chown -R nginx:nginx /data/
在nfs上做授权
[root@web uploads]# mv 2021/ /opt/
[root@web uploads]# mount -t nfs 192.168.119.176:/data/blog_nfs /application/nginx/html/blog/wp-content/uploads/
[root@web uploads]# df -h
文件系统                        容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root          10G  5.9G  4.2G   59% /
devtmpfs                        475M     0  475M    0% /dev
tmpfs                           487M     0  487M    0% /dev/shm
tmpfs                           487M  7.7M  479M    2% /run
tmpfs                           487M     0  487M    0% /sys/fs/cgroup
/dev/sr0                         11G   11G     0  100% /media
/dev/sda1                       197M  111M   87M   57% /boot
tmpfs                            98M     0   98M    0% /run/user/0
192.168.119.176:/data/blog_nfs   10G  1.7G  8.4G   17% /application/nginx-1.16.1/html/blog/wp-content/uploads
[root@web uploads]# ls /application/nginx-1.16.1/html/blog/wp-content/uploads
2021
在做mount之前必须要安装nfs工具 yum -y install nfs-utils

把本地的卸载掉然后就访问不了图片了,证明是访问nfs的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值