CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

时间:2024-01-16 22:11:26

本次实验要进行的是在CentOS7.2,内核版本3.10.0-327.el7.x86_64的环境下搭建LAMP和LNMP,并在此之上做一个WordPress博客网站。

[root@Shining ~]# uname -a
Linux Shining.ACG 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@Shining ~]# cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)

首先介绍一下LAMP和LNMP

LAMP

LMAP即Linux+Apache+Mysql/MariaDB+Perl/PHP/Python的首字母缩写。这是一组常用来搭建动态网站或者服务器的开源软件。它们本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。

Linux

Linux是一套免费使用和*传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

本次使用的CentOS为Linux的一个发行版。

Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apache的主程序名叫httpd,这也是我们实验的时候需要安装的程序之一。

MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

本次实验使用的数据库软件为MySQL的一个分支软件,叫做MariaDB。

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。

php

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

LNMP

LNMP和LAMP的区别就在于使用Nginx而不是Apache。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

Nginx和Apache的优缺点对比

nginx 相对 apache 的优点:

轻量级,同样起web 服务,比apache 占用更少的内存及资源。

抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能。

高度模块化的设计,编写模块相对简单。

社区活跃,各种高性能模块出品迅速啊。

apache 相对nginx 的优点:

rewrite ,比nginx 的rewrite 强大。

模块超多,基本想到的都可以找到。

少bug ,nginx 的bug 相对较多。

超稳定。

WordPress

WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的。用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。

下面正式进入实验阶段

Linux,即CentOS的安装在这里不再赘述。

Apache安装

Apache的软件包名字为httpd,使用yum安装httpd:

[root@Shining ~]# yum install httpd

httpd安装好之后需要将其启动,启动之前,我们来看一下网络情况:

[root@Shining ~]# ss -tl
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port                
LISTEN     0      5      192.168.122.1:domain                   *:*                    
LISTEN     0      128        *:ssh                      *:*                    
LISTEN     0      128    127.0.0.1:ipp                      *:*                    
LISTEN     0      100    127.0.0.1:smtp                     *:*                    
LISTEN     0      32        :::ftp                     :::*                    
LISTEN     0      128       :::ssh                     :::*                    
LISTEN     0      128      ::1:ipp                     :::*                    
LISTEN     0      100      ::1:smtp                    :::* 
[root@Shining ~]# ss -tnl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      5      192.168.122.1:53                       *:*                  
LISTEN     0      128          *:22                       *:*                  
LISTEN     0      128    127.0.0.1:631                      *:*                  
LISTEN     0      100    127.0.0.1:25                       *:*                  
LISTEN     0      32          :::21                      :::*                  
LISTEN     0      128         :::22                      :::*                  
LISTEN     0      128        ::1:631                     :::*                  
LISTEN     0      100        ::1:25                      :::*

可以看到http服务的80端口是没有处于监听状态的。

接下来,我们启动httpd服务:

[root@Shining ~]# systemctl start httpd

此时,在浏览器中输入localhost会出现Apache的欢迎页面(此处使用CentOS 6.8演示,Cent OS 7效果相同):

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

MySQL

CentOS 7默认安装了MariaDB,如果机子上没有安装数据库软件的话,可以使用下面的方式安装:

[root@Shining ~]# yum install mysql

安装完之后开启MySQL服务:

[root@Shining ~]# systemctl start mariadb
[root@Shining ~]# ss -tl
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port                
LISTEN     0      50         *:mysql                    *:*                    
LISTEN     0      5      192.168.122.1:domain                   *:*                    
LISTEN     0      128        *:ssh                      *:*                    
LISTEN     0      128    127.0.0.1:ipp                      *:*                    
LISTEN     0      100    127.0.0.1:smtp                     *:*                    
LISTEN     0      128       :::http                    :::*                    
LISTEN     0      32        :::ftp                     :::*                    
LISTEN     0      128       :::ssh                     :::*                    
LISTEN     0      128      ::1:ipp                     :::*                    
LISTEN     0      100      ::1:smtp                    :::*                    
[root@Shining ~]# ss -tnl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      50           *:3306                     *:*                  
LISTEN     0      5      192.168.122.1:53                       *:*                  
LISTEN     0      128          *:22                       *:*                  
LISTEN     0      128    127.0.0.1:631                      *:*                  
LISTEN     0      100    127.0.0.1:25                       *:*                  
LISTEN     0      128         :::80                      :::*                  
LISTEN     0      32          :::21                      :::*                  
LISTEN     0      128         :::22                      :::*                  
LISTEN     0      128        ::1:631                     :::*                  
LISTEN     0      100        ::1:25                      :::*

可以看到,MySQL服务已经开启,监听3306端口。

进入MariaDB

[root@Shining ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.44-MariaDB MariaDB Server Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

显示数据库

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db_name            |
| mysql              |
| performance_schema |
| test               |
| testdb             |
+--------------------+
6 rows in set (0.00 sec) MariaDB [(none)]>

创建数据库:

MariaDB [(none)]> create database db_name;

切换数据库:

MariaDB [(none)]> use db_name
Database changed
MariaDB [db_name]>

创建用户:格式为create user '用户名'@'允许用户使用哪个主机登陆' identified by '密码'

%意思是不限制登陆主机。

MariaDB [db_name]> create user 'username'@'%' identified by '123456';

为用户赋予权限:

MariaDB [db_name]> grant all privileges to 'username'@'%';

显示用户权限:

MariaDB [(none)]> show grants for 'username'@'%';
+---------------------------------------------------------------------------------------------------------+
| Grants for username@%                                                                                   |
+---------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `db_name`.`db_name` TO 'username'@'%'                                           |
+---------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

退出数据库:

MariaDB [db_name]> exit
Bye

数据库的准备工作完成。

接下来进行php的安装:

[root@Shining ~]# yum install php php-mysql

安装完成之后来到httpd服务的主目录

[root@Shining ~]# cd /var/www/html/

编辑文件phpinfo.php

[root@localhost html]# vim phpinfo.php

内容为:

<?php
echo phpinfo();

保存并退出。然后,打开浏览器,输入主机ip/phpinfo.php就可以看到PHP的信息:

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

接下来,下载WordPress:

网址为https://cn.wordpress.org/wordpress-4.5.3-zh_CN.tar.gz

[root@localhost html]# wget https://cn.wordpress.org/wordpress-4.5.3-zh_CN.tar.gz

解压,

[root@localhost html]# tar xvf wordpress-4.5.3-zh_CN.tar.gz

得到wordpress文件夹,将文件夹里的内容复制到/var/www/html下,其中有一个wp-config-sample.php,该文件为wordpress的配置文件。复制为wp-config.php即可生效。

编辑wp-config.php :

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'database_name_here'); /** MySQL数据库用户名 */
define('DB_USER', 'username_here'); /** MySQL数据库密码 */
define('DB_PASSWORD', 'password_here'); /** MySQL主机 */
define('DB_HOST', 'localhost'); /** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8'); /** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

将文件里的database_name_here,username_here,password_here,localhost,分别改成数据库名称,数据库用户名,数据库密码,数据库主机。保存退出便会生效。

接下来,在浏览器中输入wordpress主机地址,即可访问wordpress:

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

这是提示用户输入数据库信息的页面,如果用户没有配置过wp-config.php文件,便会出现此页面。

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

在这里输入数据库信息,提交;

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

欢迎页面,输入标题,用户名,密码等信息。点击安装WordPress。

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站
CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

接下来进行Nginx的安装与配置。

首先,php需要安装一个php-fpm软件:

[root@localhost wordpress]# yum install php-fpm

启动php-fpm:

[root@localhost wordpress]# service php-fpm start

安装Nginx:

[root@localhost yum.repos.d]# yum install nginx

配置Nginx配置文件/etc/nginx/nginx.conf

[root@Shining /var/www/html]# vim /etc/nginx/nginx.conf

添加或修改以下内容:

server {
        listen       80; 
        server_name  172.16.253.159;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / { 
            root   /var/www/html;
            index  index.html index.htm index.php;
        }   
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           /var/www/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
     }

重启Nginx,重启php-fpm

[root@localhost yum.repos.d]# service nginx restart
Stopping nginx:                                            [FAILED]
Starting nginx:                                            [  OK  ]
[root@localhost yum.repos.d]# service php-fpm restart
Stopping php-fpm:                                          [  OK  ]
Starting php-fpm:                                          [  OK  ]

注意,在启动Nginx之前要关闭httpd服务,因为两者都使用80端口,会造成冲突。

访问网站:

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

注意,如果未启动php-fpm服务,则会出现以下错误:

CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

总结:

本次实验采用yum安装,所有技术水平较低。实验过程中多次出现问题,好在都解决了。

下面是出现的一些问题。

1、yum源问题。CentOS自带的yum里没有Nginx,自己添加了repo文件。但是执行了一次yum clean all,yum makecache。问题便出现了,原因是有一个源指向cdrom,但是找不到,我挂载cdrom,仍然出问题。然后检查了autofs服务,正常。后来才发现是镜像文件坏掉了……

2、Apache和Nginx区别。开始实验时,我在Apache和Nginx之间摇摆,也不知道这两个的区别,于是就都试了一遍。Apache很简单,安装好启动服务就可以用了。但是Nginx还需要配置,我在这里卡住好久。因为是yum安装,所有配置文件的路径跟网上的教程讲的有所不同,又花了很长时间找配置文件。然后又花了很长时间去配置。最后由于没有启动php-fpm,导致出错。结果有花了好长时间才找到这个让人抓狂的错误原因。

3、MySQL的问题。一开始忘了命令。又回去看视频学习。结果第一次添加用户没有添加成功。导致wordpress一直报错。第二次,wordpress由报错,重启后不再报错。原因现在仍然不知道。

4、编写博客时电脑出了问题,重启之后丢了一半的内容(哭瞎了)。以后一定边写边保存!

原创文章,作者:wangshuai,如若转载,请注明出处:http://www.178linux.com/60558