本次实验要进行的是在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效果相同):
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的信息:
接下来,下载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:
这是提示用户输入数据库信息的页面,如果用户没有配置过wp-config.php文件,便会出现此页面。
在这里输入数据库信息,提交;
欢迎页面,输入标题,用户名,密码等信息。点击安装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端口,会造成冲突。
访问网站:
注意,如果未启动php-fpm服务,则会出现以下错误:
总结:
本次实验采用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