0.说明


    内容会有点多,但是下面的内容都是自己在学习LNMP环境搭建过程中的完整再现,所以非常具有参考价值!

    下面用一个以最小化方式(Minimal)安装的CentOS 6.5操作系统为例,演示LNMP环境完整搭建过程,并且最后部署了一个WordPress博客,最后完成的效果如下:

从零开始完整搭建LNMP环境+WordPress部署




1.关于实验环境的说明


    本次实验的测试环境使用的宿主机操作系统为Windows 7,在Vmware虚拟机安装CentOS 6.5,说明如下:

  • 宿主机操作系统Windows 7

  • 虚拟机安装的操作系统CentOS 6.5

  • 虚拟机操作系统上网方式NAT

    而当使用NAT的方式进行上网时虚拟机、宿主机之间的网络连接关系可如下所示:

从零开始完整搭建LNMP环境+WordPress部署

    关于为什么网络拓扑结构是这样的,这里不展开说明,可以参考博主的另一篇博文《在实践中深入理解VMware虚拟机的上网模式NAT模式》,这篇文章深入地分析了VMware虚拟机使用NAT模式上网时的网络结构细节,相信看完这篇文章后,这里搭建Nginx的实验环境也就很容易理解了。

    所以首先,应该是自己先配置好网络环境,让宿主机跟我们的虚拟机可以通信,实际上,如果理解了VMware虚拟机上网方式的原理,同时对CentOS的网络配置也很熟悉,这一步是可以很轻松完成的,这里就不给出过程了,这里所用的IP地址跟上面的图示是一样的。

    最后,我们是在宿主机上访问我们搭建的WordPress博客的,非常不错,可以体验一下!




2.LNMP环境搭建:Nginx安装、测试与域名配置


    事实上,在另一篇博文中有非常详细的介绍《在CentOS上编译安装Nginx+实验环境搭建+测试》,不过这里为了完整性,依然会给出所有步骤,只是过程会简化很多。


(1)Nginx安装


  • 1.安装Nginx依赖函数库pcre、openssl-devel

[root@leaf ~]# yum install -y pcre pcre-devel openssl openssl-devel 
...... 
[root@leaf ~]# rpm -q pcre pcre-devel openssl openssl-devel 
pcre-7.8-7.el6.x86_64 
pcre-devel-7.8-7.el6.x86_64 
openssl-1.0.1e-48.el6_8.4.x86_64 
openssl-devel-1.0.1e-48.el6_8.4.x86_64
  • 2.下载安装Nginx

    这里使用Nginx1.6.3,如下:

# 下载Nginx 
[root@leaf ~]# yum install -y wget 
[root@leaf ~]# mkdir tools 
[root@leaf ~]# cd tools/ 
[root@leaf tools]# wget http://nginx.org/download/nginx-1.6.3.tar.gz 
[root@leaf tools]# ll 
总用量 788 
-rw-r--r--. 1 root root 805253 4月   8 2015 nginx-1.6.3.tar.gz  
 
# 解压缩 
[root@leaf tools]# tar zxf nginx-1.6.3.tar.gz  
[root@leaf tools]# ll 
总用量 792 
drwxr-xr-x. 8 1001 1001   4096 4月   7 2015 nginx-1.6.3 
-rw-r--r--. 1 root root 805253 4月   8 2015 nginx-1.6.3.tar.gz 
 
# 指定编译参数 
[root@leaf tools]# yum install -y gcc    # 需要先安装gcc 
[root@leaf tools]# mkdir /application    # 作为Nginx的安装目录 
[root@leaf tools]# useradd nginx -s /sbin/nologin -M 
[root@leaf tools]# tail -1 /etc/passwd 
nginx:x:500:500::/home/nginx:/sbin/nologin 
[root@leaf tools]# cd nginx-1.6.3 
[root@leaf nginx-1.6.3]# ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3/ --with-http_stub_status_module --with-http_ssl_module 
[root@leaf nginx-1.6.3]# echo $?    # 结果输出0则说明命令执行成功 
0 
 
# 编译 
[root@leaf nginx-1.6.3]# make 
[root@leaf nginx-1.6.3]# echo $? 
0 
 
# 安装 
[root@leaf nginx-1.6.3]# make install 
[root@leaf nginx-1.6.3]# echo $? 
0 
 
# 建立安装目录的软链接 
[root@leaf nginx-1.6.3]# ln -s /application/nginx-1.6.3/ /application/nginx 
[root@leaf nginx-1.6.3]# ls -l /application/ 
总用量 4 
lrwxrwxrwx. 1 root root   25 3月   4 04:28 nginx -> /application/nginx-1.6.3/ 
drwxr-xr-x. 6 root root 4096 3月   4 04:27 nginx-1.6.3


(2)Nginx测试


  • 1.启动Nginx

[root@leaf ~]# /application/nginx/sbin/nginx -t    # 检查配置文件 
nginx: the configuration file /application/nginx-1.6.3//conf/nginx.conf syntax is ok 
nginx: configuration file /application/nginx-1.6.3//conf/nginx.conf test is successful 
[root@leaf ~]# /application/nginx/sbin/nginx    # 启动Nginx服务
  • 2.CentOS上验证Nginx服务

[root@leaf ~]# netstat -lntup | grep 80 
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      3929/nginx   
[root@leaf ~]# curl localhost 
<!DOCTYPE html> 
<html> 
<head> 
<title>Welcome to nginx!</title> 
<style> 
    body { 
        width: 35em; 
        margin: 0 auto; 
        font-family: Tahoma, Verdana, Arial, sans-serif; 
    } 
</style> 
</head> 
<body> 
<h2>Welcome to nginx!</h2> 
<p>If you see this page, the nginx web server is successfully installed and 
working. Further configuration is required.</p> 
 
<p>For online documentation and support please refer to 
<a href="http://nginx.org/">nginx.org</a>.<br/> 
Commercial support is available at 
<a href="http://nginx.com/">nginx.com</a>.</p> 
 
<p><em>Thank you for using nginx.</em></p> 
</body> 
</html>
  • 3.宿主机上验证Nginx服务

    在宿主机浏览器上输入CentOS主机的IP地址10.0.0.101,如下:

从零开始完整搭建LNMP环境+WordPress部署


(3)域名配置


    这一部分的内容在另一篇博文也有很详细的介绍《Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试》,可以参考一下,所以这里不会给出非常详细的说明。

    因为要搭建一个博客服务,所以这里配置的域名为blog.xpleaf.org,操作过程如下:

  • 1.最小化配置文件

[root@leaf ~]# cd /application/nginx/conf/ 
[root@leaf conf]# wc -l nginx.conf 
117 nginx.conf 
[root@leaf conf]# wc -l nginx.conf.default  
117 nginx.conf.default 
[root@leaf conf]# egrep -v "#|^$" nginx.conf.default >nginx.conf 
[root@leaf conf]# wc -l nginx.conf 
22 nginx.conf 
[root@leaf conf]# cat nginx.conf 
worker_processes  1; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { 
        listen       80; 
        server_name  localhost; 
        location / { 
            root   html; 
            index  index.html index.htm; 
        } 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
    } 
}
  • 2.修改配置文件

    修改nginx.conf,并且增加配置文件extra/blog.conf,如下:

[root@leaf conf]# cat nginx.conf 
worker_processes  1; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    include extra/blog.conf; 
} 
[root@leaf conf]# cat extra/blog.conf  
server { 
        listen       80; 
        server_name  blog.xpleaf.org; 
        location / { 
            root   html/blog; 
            index  index.html index.htm; 
        } 
    }
  • 3.创建域名对应的站点目录及文件

[root@leaf conf]# cd ../html/ 
[root@leaf html]# mkdir blog 
[root@leaf html]# echo "This page is: blog.xpleaf.org">blog/index.html 
[root@leaf html]# cat blog/index.html  
This page is: blog.xpleaf.org
  • 4.重启Nginx服务

[root@leaf html]# /application/nginx/sbin/nginx -t 
nginx: the configuration file /application/nginx-1.6.3//conf/nginx.conf syntax is ok 
[root@leaf html]# /application/nginx/sbin/nginx -s reload    # 平滑重启
  • 5.CentOS 6.5上进行测试

    先修改/etc/hosts文件:

[root@leaf html]# echo "127.0.0.1 blog.xpleaf.org" >>/etc/hosts 
[root@leaf html]# tail -1 /etc/hosts 
127.0.0.1 blog.xpleaf.org

    再使用命令测试:

[root@leaf html]# curl blog.xpleaf.org 
This page is: blog.xpleaf.org 
[root@leaf html]# wget blog.xpleaf.org 
--2017-03-04 04:58:42--  http://blog.xpleaf.org/ 
正在解析主机 blog.xpleaf.org... 127.0.0.1 
正在连接 blog.xpleaf.org|127.0.0.1|:80... 已连接。 
已发出 HTTP 请求,正在等待回应... 200 OK 
长度:30 [text/html] 
正在保存至: “index.html.1” 
 
100%[====================================>] 30          --.-K/s   in 0s       
 
2017-03-04 04:58:42 (2.14 MB/s) - 已保存 “index.html.1” [30/30])
  • 6.宿主机Windows 7上进行测试

    同样是先修改hosts文件,Windows 7的hosts文件在C:\Windows\System32\drivers\etc,同样添加下面一行:

10.0.0.101 blog.xpleaf.org

    使用浏览器访问blog.xpleaf.org,如下:

从零开始完整搭建LNMP环境+WordPress部署


    那么到这里,LNMP的环境中,Nginx的安装已经完成了,你是否安装成功了呢?




3.LNMP环境搭建:MySQL安装与基本安全优化


    这里采用二进制安装的方式来安装MySQL,安装的版本为:MySQL Server 5.5.54,可以在https://dev.mysql.com/downloads/mysql/5.5.html#downloads中下载。

    MySQL安装完成后会做一些基本的安全优化。


(1)MySQL安装


  • 1.创建MySQL用户的账号

[root@leaf ~]# groupadd mysql 
[root@leaf ~]# useradd -s /sbin/nologin -g mysql -M mysql 
[root@leaf ~]# tail -1 /etc/passwd 
mysql:x:501:501::/home/mysql:/sbin/nologin
  • 2.下载MySQL

    可以使用wget来进行安装,也可以先下载到Windows 7上,然后使用SecureCRT,在CentOS上使用rz命令(需要使用yum install -y lrzsz命令安装)上传到我们的CentOS上,其实不管哪一种方式,只要有方式获取到该安装包就可以了,下面使用的是wget获取安装包的方式:

[root@leaf tools]# wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.54-linux2.6-x86_64.tar.gz 
[root@leaf tools]# ls -l mysql-5.5.54-linux2.6-x86_64.tar.gz  
-rw-r--r--. 1 root root 185911232 3月   3 13:34 mysql-5.5.54-linux2.6-x86_64.tar.gz
  • 3.解压并移到指定目录

[root@leaf tools]# tar xf mysql-5.5.54-linux2.6-x86_64.tar.gz  
[root@leaf tools]# mv mysql-5.5.54-linux2.6-x86_64 /application/mysql-5.5.54 
[root@leaf tools]# ln -s /application/mysql-5.5.54/ /application/mysql 
[root@leaf tools]# ls -l /application/ 
总用量 8 
lrwxrwxrwx.  1 root root   26 3月   4 06:43 mysql -> /application/mysql-5.5.54/ 
drwxr-xr-x. 13 root root 4096 3月   4 06:42 mysql-5.5.54 
lrwxrwxrwx.  1 root root   25 3月   4 04:28 nginx -> /application/nginx-1.6.3/ 
drwxr-xr-x. 11 root root 4096 3月   4 04:30 nginx-1.6.3
  • 4.初始化MySQL配置文件

[root@leaf mysql]# cp support-files/my-small.cnf /etc/my.cnf 
cp:是否覆盖"/etc/my.cnf"? y
  • 5.初始化MySQL数据库文件

[root@leaf mysql]# mkdir -p /application/mysql/data/ 
[root@leaf mysql]# chown -R mysql.mysql /application/mysql 
[root@leaf mysql]# yum install -y libaio    # 安装MySQL依赖函数库,否则下面的初始化会失败 
[root@leaf mysql]# /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql 
...... 
# 输出结果可以看到两个OK,即说明初始化成功 
[root@leaf mysql]# echo $?    # 或者通过该命令,输出为0,即说明上一个步骤的命令执行成功 
0 
 
# 上面之后可以看到/application/mysql/data/目录下生成的数据库文件
  • 6.配置并启动MySQL数据库

#(1)设置MySQL启动脚本 
[root@leaf mysql]# cp support-files/mysql.server /etc/init.d/mysqld 
[root@leaf mysql]# chmod +x /etc/init.d/mysqld  
[root@leaf mysql]# ls -l /etc/init.d/mysqld  
-rwxr-xr-x. 1 root root 10875 3月   4 06:56 /etc/init.d/mysqld 
 
#(2)替换启动脚本中MySQL默认的安装路径/usr/local/mysql 
[root@leaf mysql]# sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld  
 
#(3)启动MySQL数据库 
[root@leaf mysql]# /etc/init.d/mysqld start 
Starting MySQL.Logging to '/application/mysql/data/leaf.err'. 
... SUCCESS!  
 
#(4)检查MySQL数据库是否启动 
[root@leaf mysql]# netstat -lntup | grep mysql 
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4400/mysqld   
 
#(5)查看日志 
[root@leaf mysql]# tail -10 /application/mysql/data/leaf.err  
InnoDB: Creating foreign key constraint system tables 
InnoDB: Foreign key constraint system tables created 
170304  7:00:28  InnoDB: Waiting for the background threads to start 
170304  7:00:29 InnoDB: 5.5.54 started; log sequence number 0 
170304  7:00:29 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306 
170304  7:00:29 [Note]   - '0.0.0.0' resolves to '0.0.0.0'; 
170304  7:00:29 [Note] Server socket created on IP: '0.0.0.0'. 
170304  7:00:29 [Note] Event Scheduler: Loaded 0 events 
170304  7:00:29 [Note] /application/mysql/bin/mysqld: ready for connections. 
Version: '5.5.54'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL) 
 
#(6)设置MySQL开机启动 
[root@leaf mysql]# chkconfig --add mysqld 
[root@leaf mysql]# chkconfig mysqld on 
[root@leaf mysql]# chkconfig --list mysqld 
mysqld          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭 
 
#(7)配置mysql命令的全局使用路径(注意这里配置的是命令,前面配置的只是启动脚本) 
[root@leaf mysql]# echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile 
[root@leaf mysql]# source /etc/profile 
[root@leaf mysql]# echo $PATH 
/application/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 
 
#(8)登陆MySQL测试 
[root@leaf mysql]# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 1 
Server version: 5.5.54 MySQL Community Server (GPL) 
 
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 
 
Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 
mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| test               | 
+--------------------+ 
4 rows in set (0.05 sec) 
 
mysql> select user();    # 查看当前登陆的用户 
+----------------+ 
| user()         | 
+----------------+ 
| root@localhost | 
+----------------+ 
1 row in set (0.00 sec) 
 
mysql> select host, user from mysql.user; 
+-----------+------+ 
| host      | user | 
+-----------+------+ 
| 127.0.0.1 | root | 
| ::1       | root | 
| leaf      |      | 
| leaf      | root | 
| localhost |      | 
| localhost | root | 
+-----------+------+ 
6 rows in set (0.00 sec) 
 
mysql> quit 
Bye


(2)MySQL基本安全优化


  • 1.为root用户设置密码

[root@leaf mysql]# mysqladmin -u root password '123456'
  • 2.清理无用的MySQL用户及数据库

[root@leaf mysql]# mysql -u root -p 
Enter password:  
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 3 
Server version: 5.5.54 MySQL Community Server (GPL) 
 
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 
 
Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 
mysql> select user, host from mysql.user; 
+------+-----------+ 
| user | host      | 
+------+-----------+ 
| root | 127.0.0.1 | 
| root | ::1       | 
|      | leaf      | 
| root | leaf      | 
|      | localhost | 
| root | localhost | 
+------+-----------+ 
6 rows in set (0.00 sec) 
 
mysql> drop user "root"@"::1"; 
Query OK, 0 rows affected (0.00 sec) 
 
mysql> drop user ""@"leaf"; 
Query OK, 0 rows affected (0.00 sec) 
 
mysql> drop user "root"@"leaf"; 
Query OK, 0 rows affected (0.01 sec) 
 
mysql> drop user ""@"localhost"; 
Query OK, 0 rows affected (0.01 sec) 
 
mysql> select user, host from mysql.user; 
+------+-----------+ 
| user | host      | 
+------+-----------+ 
| root | 127.0.0.1 | 
| root | localhost | 
+------+-----------+ 
2 rows in set (0.00 sec) 
 
mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec) 
 
# 删除无用的数据库 
mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| test               | 
+--------------------+ 
4 rows in set (0.00 sec) 
 
mysql> drop database test; 
Query OK, 0 rows affected (0.01 sec) 
 
mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
+--------------------+ 
3 rows in set (0.00 sec)


    到此为此,MySQL也安装完成了!




4.LNMP环境搭建:PHP(FastCGI方式)安装、配置与启动


(1)安装PHP依赖函数库


  • 1.安装lib库

    需要安装的lib库如下:

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

    其中除了libiconv库外,其他都可以通过yum的方式进行安装,安装如下:

# 使用yum安装除libiconv-devel之外的其它lib库 
[root@leaf mysql]# yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel 
 
# 编译安装libiconv-devel 
[root@leaf tools]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz 
[root@leaf tools]# tar zxf libiconv-1.14.tar.gz  
[root@leaf tools]# cd libiconv-1.14 
[root@leaf libiconv-1.14]# ./configure --prefix=/usr/local/libiconv 
[root@leaf libiconv-1.14]# make 
[root@leaf libiconv-1.14]# make install
  • 2.安装libmcrypt库

[root@leaf ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo 
[root@leaf ~]# yum install -y libmcrypt-devel
  • 3.安装mhash加密扩展库

[root@leaf ~]# yum install -y mhash
  • 4.安装mcrypt加密扩展库

[root@leaf ~]# yum install -y mcrypt


(2)安装PHP


    使用的PHP版本号为5.3.27,如下:

  • 1.下载PHP安装包

[root@leaf tools]# wget http://cn2.php.net/get/php-5.3.27.tar.gz/from/this/mirror 
[root@leaf tools]# mv mirror php-5.3.27.tar.gz 
[root@leaf tools]# ls -l php-5.3.27.tar.gz  
-rw-r--r--. 1 root root 15008639 1月  21 2015 php-5.3.27.tar.gz
  • 2.解压缩

[root@leaf tools]# tar zxf php-5.3.27.tar.gz 
[root@leaf tools]# cd php-5.3.27 
[root@leaf php-5.3.27]# pwd 
/root/tools/php-5.3.27
  • 3.配置PHP的安装参数

    配置项非常多,如下:

./configure \ 
--prefix=/application/php5.3.27 \ 
--with-mysql=/application/mysql \ 
--with-iconv-dir=/usr/local/libiconv \ 
--with-freetype-dir \ 
--with-jpeg-dir \ 
--with-png-dir \ 
--with-zlib \ 
--with-libxml-dir=/usr \ 
--enable-xml \ 
--disable-rpath \ 
--enable-safe-mode \ 
--enable-bcmath \ 
--enable-shmop \ 
--enable-sysvsem \ 
--enable-inline-optimization \ 
--with-curl \ 
--with-curlwrappers \ 
--enable-mbregex \ 
--enable-fpm \ 
--enable-mbstring \ 
--with-mcrypt \ 
--with-gd \ 
--enable-gd-native-ttf \ 
--with-openssl \ 
--with-mhash \ 
--enable-pcntl \ 
--enable-sockets \ 
--with-xmlrpc \ 
--enable-zip \ 
--enable-soap \ 
--enable-short-tags \ 
--enable-zend-multibyte \ 
--enable-static \ 
--with-xsl \ 
--with-fpm-user=nginx \ 
--with-fpm-group=nginx \ 
--enable-ftp

    可以将其直接复制到命令行进行配置,这样就可以减少出错的概率:

[root@leaf php-5.3.27]# ./configure \ 
> --prefix=/application/php5.3.27 \ 
> --with-mysql=/application/mysql \ 
> --with-iconv-dir=/usr/local/libiconv \ 
> --with-freetype-dir \ 
> --with-jpeg-dir \ 
> --with-png-dir \ 
> --with-zlib \ 
> --with-libxml-dir=/usr \ 
> --enable-xml \ 
> --disable-rpath \ 
> --enable-safe-mode \ 
> --enable-bcmath \ 
> --enable-shmop \ 
> --enable-sysvsem \ 
> --enable-inline-optimization \ 
> --with-curl \ 
> --with-curlwrappers \ 
> --enable-mbregex \ 
> --enable-fpm \ 
> --enable-mbstring \ 
> --with-mcrypt \ 
> --with-gd \ 
> --enable-gd-native-ttf \ 
> --with-openssl \ 
> --with-mhash \ 
> --enable-pcntl \ 
> --enable-sockets \ 
> --with-xmlrpc \ 
> --enable-zip \ 
> --enable-soap \ 
> --enable-short-tags \ 
> --enable-zend-multibyte \ 
> --enable-static \ 
> --with-xsl \ 
> --with-fpm-user=nginx \ 
> --with-fpm-group=nginx \ 
> --enable-ftp 
...... 
+--------------------------------------------------------------------+ 
| License:                                                           | 
| This software is subject to the PHP License, available in this     | 
| distribution in the file LICENSE.  By continuing this installation | 
| process, you are bound by the terms of this license agreement.     | 
| If you do not agree with the terms of this license, you must abort | 
| the installation process at this point.                            | 
+--------------------------------------------------------------------+ 
 
Thank you for using PHP.
  • 4.编译PHP

[root@leaf php-5.3.27]# ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/ 
[root@leaf php-5.3.27]# touch ext/phar/phar.phar 
[root@leaf php-5.3.27]# make 
...... 
[root@leaf php-5.3.27]# echo $? 
0
  • 5.安装PHP

[root@leaf php-5.3.27]# make install 
/root/tools/php-5.3.27/build/shtool install -c ext/phar/phar.phar /application/php5.3.27/bin 
ln -s -f /application/php5.3.27/bin/phar.phar /application/php5.3.27/bin/phar 
Installing PDO headers:          /application/php5.3.27/include/php/ext/pdo/ 
...... 
[root@leaf php-5.3.27]# echo $? 
0


(3)配置与启动PHP


  • 1.设置PHP安装目录软链接

[root@leaf php-5.3.27]# ln -s /application/php5.3.27/ /application/php 
[root@leaf php-5.3.27]# ls -l /application/php 
lrwxrwxrwx. 1 root root 23 3月   4 08:59 /application/php -> /application/php5.3.27/
  • 2.拷贝PHP配置文件到PHP默认目录

[root@leaf php-5.3.27]# cp php.ini-production /application/php/lib/php.ini 
[root@leaf php-5.3.27]# ls -l /application/php/lib/php.ini  
-rw-r--r--. 1 root root 69627 3月   4 09:00 /application/php/lib/php.ini
  • 3.配置php-fpm.conf文件

[root@leaf php-5.3.27]# cd /application/php/etc/ 
[root@leaf etc]# ls 
pear.conf  php-fpm.conf.default 
[root@leaf etc]# cp php-fpm.conf.default php-fpm.conf
  • 4.启动PHP服务php-fpm

[root@leaf etc]# /application/php/sbin/php-fpm
  • 5.检查启动进程与侦听端口号

[root@leaf etc]# ps -ef | grep php-fpm 
root     129256      1  0 09:05 ?        00:00:00 php-fpm: master process (/application/php5.3.27/etc/php-fpm.conf) 
nginx    129257 129256  0 09:05 ?        00:00:00 php-fpm: pool www             
nginx    129258 129256  0 09:05 ?        00:00:00 php-fpm: pool www             
root     129260  13743  0 09:06 pts/1    00:00:00 grep php-fpm 
[root@leaf etc]# netstat -lntup | grep 9000 
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      129256/php-fpm


    至此,PHP也安装完成了!LNMP的各个组件都安装好了,下面就要对LNMP环境进行测试了。




5.LNMP环境测试


(1)配置Nginx支持PHP程序请求访问


  • 1.查看当前Nginx配置

[root@leaf etc]# cd /application/nginx/conf/ 
[root@leaf conf]# cat nginx.conf 
worker_processes  1; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    include extra/blog.conf; 
} 
[root@leaf conf]# cat extra/blog.conf  
server { 
        listen       80; 
        server_name  blog.xpleaf.org; 
        location / { 
            root   html/blog; 
            index  index.html index.htm; 
        } 
    }
  • 2.修改extra/blog.conf配置文件

[root@leaf conf]# cat extra/blog.conf  
server { 
        listen       80; 
        server_name  blog.xpleaf.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; 
        } 
    }
  • 3.检查并启动Nginx

[root@leaf conf]# /application/nginx/sbin/nginx -t 
nginx: the configuration file /application/nginx-1.6.3//conf/nginx.conf syntax is ok 
nginx: configuration file /application/nginx-1.6.3//conf/nginx.conf test is successful 
[root@leaf conf]# /application/nginx/sbin/nginx -s reload


(2)测试LNMP环境是否生效


  • 1.配置域名站点目录

[root@leaf conf]# cd /application/nginx/html/blog/ 
[root@leaf blog]# echo "<?php phpinfo(); ?>" >test_info.php 
[root@leaf blog]# cat test_info.php  
<?php phpinfo(); ?>
  • 2.宿主机上在浏览器中输入地址http://blog.xpleaf.org/test_info.php进行访问

从零开始完整搭建LNMP环境+WordPress部署


(3)测试PHP连接MySQL是否正常


  • 1.编辑text_mysql.php

[root@leaf blog]# cat test_mysql.php  
<?php 
        $link_id=mysql_connect('localhost', 'root', '123456'); 
        if($link_id){ 
                echo "mysql succesful by xpleaf !"; 
        }else{ 
                echo mysql_error(); 
        } 
?>
  • 2.宿主机上在浏览器中输入地址http://blog.xpleaf.org/test_mysql.php进行访问

从零开始完整搭建LNMP环境+WordPress部署

    至此,LNMP环境搭建与测试完成了,下面就可以开始部署WordPress了!




6.部署WordPress


(1)MySQL数据库准备


  • 1.登陆mysql

[root@leaf blog]# mysql -u root -p 
Enter password:  
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 5 
Server version: 5.5.54 MySQL Community Server (GPL) 
 
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 
 
Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 
mysql>
  • 2.创建数据库wordpress

mysql> create database wordpress; 
Query OK, 1 row affected (0.32 sec) 
 
mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| wordpress          | 
+--------------------+ 
4 rows in set (0.00 sec)
  • 3.创建wordpress blog管理用户

mysql> grant all on wordpress.* to wordpress@'localhost' identified by '123456'; 
Query OK, 0 rows affected (0.08 sec) 
mysql> show grants for wordpress@'localhost'; 
+------------------------------------------------------------------------------------------------------------------+ 
| Grants for wordpress@localhost                                                                                   | 
+------------------------------------------------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'wordpress'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' | 
| GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpress'@'localhost'                                                 | 
+------------------------------------------------------------------------------------------------------------------+ 
2 rows in set (0.00 sec)
  • 4.刷新MySQL用户权限

mysql> flush privileges; 
Query OK, 0 rows affected (0.31 sec)
  • 5.检查MySQL登录用户

mysql> select user,host from mysql.user; 
+-----------+-----------+ 
| user      | host      | 
+-----------+-----------+ 
| root      | 127.0.0.1 | 
| root      | localhost | 
| wordpress | localhost | 
+-----------+-----------+ 
3 rows in set (0.00 sec)


(2)Nginx配置准备


  • 1.修改blog.conf配置文件

[root@leaf conf]# cat extra/blog.conf  
server { 
        listen       80; 
        server_name  blog.xpleaf.org; 
        location / { 
            root   html/blog; 
            index index.php index.html index.htm; 
        } 
        location ~ .*\.(php|php5)?$ { 
            root   html/blog; 
            fastcgi_pass 127.0.0.1:9000; 
            fastcgi_index index.php; 
            include fastcgi.conf; 
        } 
    } 
    # 相比前面的配置文件,只是在/下添加了index.php 
    # 不过需要注意的是,index.php一定要放在index关键字之后, 
    # 这样访问blog.xpleaf.org时,才会打开我们的WordPress页面
  • 2.重启Nginx服务

[root@leaf conf]# /application/nginx/sbin/nginx -s reload


(3)配置WordPress


  • 1.获取WordPress安装包

[root@leaf tools]# wget https://cn.wordpress.org/wordpress-4.7.3-zh_CN.tar.gz 
 [root@leaf tools]# ls -lh wordpress-4.7.2-zh_CN.tar.gz  
-rw-r--r--. 1 root root 8.1M 1月  28 08:53 wordpress-4.7.2-zh_CN.tar.gz
  • 2.解压缩与配置站点目录

[root@leaf tools]# cp wordpress-4.7.2-zh_CN.tar.gz /application/nginx/html/blog/ 
[root@leaf tools]# cd /application/nginx/html/blog/ 
[root@leaf blog]# tar zxf wordpress-4.7.2-zh_CN.tar.gz  
[root@leaf blog]# ls 
index.html     test_mysql.php  wordpress-4.7.2-zh_CN.tar.gz 
test_info.php  wordpress 
[root@leaf blog]# rm -rf test_* wordpress-4.7.2-zh_CN.tar.gz    # 删除无用的文件 
[root@leaf blog]# ls 
index.html  wordpress 
[root@leaf blog]# mv wordpress/* ./    # 将wordpress程序移到当前blog目录下 
[root@leaf blog]# ls 
index.html       wp-admin              wp-includes        wp-signup.php 
index.php        wp-blog-header.php    wp-links-opml.php  wp-trackback.php 
license.txt      wp-comments-post.php  wp-load.php        xmlrpc.php 
readme.html      wp-config-sample.php  wp-login.php 
wordpress        wp-content            wp-mail.php 
wp-activate.php  wp-cron.php           wp-settings.php 
[root@leaf blog]# ls -l 
总用量 196 
-rw-r--r--.  1 root   root     30 3月   4 04:54 index.html 
-rw-r--r--.  1 nobody 65534   418 9月  25 2013 index.php 
-rw-r--r--.  1 nobody 65534 19935 1月   3 02:51 license.txt 
-rw-r--r--.  1 nobody 65534  6956 1月  28 08:53 readme.html 
drwxr-xr-x.  2 nobody 65534  4096 3月   4 09:50 wordpress 
......
  • 3.对blog下所有文件授予nginx用户和组的权限

[root@leaf blog]# chown -R nginx.nginx ../blog/ 
[root@leaf blog]# ls -l 
总用量 196 
-rw-r--r--.  1 nginx nginx    30 3月   4 04:54 index.html 
-rw-r--r--.  1 nginx nginx   418 9月  25 2013 index.php 
-rw-r--r--.  1 nginx nginx 19935 1月   3 02:51 license.txt 
-rw-r--r--.  1 nginx nginx  6956 1月  28 08:53 readme.html 
drwxr-xr-x.  2 nginx nginx  4096 3月   4 09:50 wordpress 
......


(4)安装WordPress


    在宿主机浏览器上输入地址:http://blog.xpleaf.org,如下:

从零开始完整搭建LNMP环境+WordPress部署


    接下来的安装都是非常人性化的,点击“现在就开始”,出现下面的页面:

从零开始完整搭建LNMP环境+WordPress部署


    填好信息后,点击“提交”,如下:

从零开始完整搭建LNMP环境+WordPress部署


    点击“进行安装”,接下来就会让我们填写一些信息,如下:

从零开始完整搭建LNMP环境+WordPress部署


    点击“安装WordPress”,之后就会显示如下页面:

从零开始完整搭建LNMP环境+WordPress部署


    显示上面的页面,就说明我们的WordPress安装成功了!接下来就可以好好管理自己的个人WordPress博客站点了!




7.下一步要做什么


    可以在云主机上,如腾讯云或者阿里云上搭建LNMP环境,再部署一个WordPress博客程序,为了达到域名访问的效果,可以购买一个域名,然后自己搭建DNS服务器,这会是非常不错的体验!

    接下来就可以考虑对LNMP进行优化了。




8.参考资料


《跟老男孩学Linux运维:Web集群实战》

MySQL官方站点:https://www.mysql.com/downloads/





本文参考链接:https://www.yisu.com/zixun/2386.html
评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Leetcode 2. 两数相加(高精度加法模板)