通常我们所说的LNMP是指一个网站基本的组织框架,即Linux系统支持,Nginx静态服务,Mysql数据库支持以及PHP动态编程语言支持。目前Mysql数据库被Oracle数据库分析公司收购,其创始人以自己女儿的名字命名并同时开发了一个数据库,名为MariaDB数据库,数据库操作语法和语句基本与Mysql一致,对我们的操作丝毫没有影响,所以我们以MariaDB为例,搭建一个个人博客网站。

1.建站前准备:

因为我们的Linux系统自带的防火墙功能十分强大,为减少因防火墙而导致数据库或PHP启动失败和连接失败,我们先将防火墙临时关闭和永久关闭,在企业实际的生产当中,一般防火墙是开启状态,此时我们虚拟环境中不稳定因素太多,所以我们采取这样的作法。

1.1关闭selinux:

#临时关闭:setenforce 0, #并且查看临时关闭状态:getenforce

永久关闭,我们通过修改文件:sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config,将SELINUX=enforcing替换为SELINUX=disabled,这个过程需要重新启动操作系统。

1.2关闭firewalld

#临时关闭:systemctl stop firewalld #永久关闭:systemctl disable firewalld

以上就是我们将防火墙全部关闭。

2.从官方源安装Nginx

因为我们的yum源里面可能不是从Nginx官方下载Nginx服务,导致后面配置服务时出现各种问题,所以我们在配置文件修改Nginx获取源的优先顺序,优先从Nginx官方仓库下载;

2.1调整yum源的优先级

1 [root@local ~]# rpm -qa yum-plugin-priorities
2 [root@local ~]# yum install yum-plugin-priorities -y

2.2配置yum源

[root@local ~]# vim /etc/yum.repos.d/nginx.repo

如果我们不进行以上配置,系统默认从CentOS官方下载

2.3安装Nginx

[root@local ~]# yum install nginx -y

查看Nginx版本

Nginx静态服务组件安装完成!

2.4配置Nginx运行进程的用户,这里我们创建test用户

1 [root@local ~]# useradd -u 1111 test -s /sbin/nologin -M
2 [root@local ~]# id test

默认的Nginx配置中,用户是本身nginx,我们将其修改为我们创建的进程账户

1 [root@local ~]# egrep "^user" /etc/nginx/nginx.conf
2 user nginx;
3
4 [root@local ~]# sed -i '/^user/c user test;' /etc/nginx/nginx.conf
5
6 [root@local ~]# egrep "^user" /etc/nginx/nginx.conf
7 user test;

配置好之后我们来检查以下Nginx的语法

为保证我们Nginx组件和命令语法确实无误,我们递归创建一个临时文件夹,并且检查一下语法

1 [root@local ~]# mkdir -p /var/lib/nginx/tmp/
2 [root@local ~]# nginx -t

下面就是开启Nginx服务,并且设置开机自启动

1 [root@local ~]# systemctl start nginx
2 [root@local ~]# systemctl enable nginx ##开机自启动

可以看到自启动已经创建,并且提供给web浏览器访问的80端口已经开放,现在我们可以从浏览器访问nginx静态服务

在这里需要注意的是,我们访问的地址就是我们所利用的Linux系统的ip地址,因为Nginx是运行在Linux系统之上的,此时Linux本身就是一台服务器

此时Linux系统的IP地址为:10.0.0.132,我们在web浏览器中输入10.0.0.132,访问Nginx:

访问成功,说明Nginx服务启动成功,ip通信连接成功,至此,Nginx安装告一段落。

3.安装PHP动态服务,从第三方仓库安装PHP

3.1配置PHP安装源:安装三方仓库

1 [root@local tools]# yum install epel-release -y
2 [root@local tools]# rpm -ql epel-release
3 /etc/yum.repos.d/epel.repo

下面我们配置/etc/yum.repos.d/webtatic.repo仓库

现在webtatic.repo扩展源已经可用,一切准备就绪,就可以安装PHP了,其实我们还可以检查一下,系统当中是否含有旧版本的PHP,如果有,将其卸载,避免旧的组件和新版本冲突

以上结果显示,系统中没有PHP存在,我们直接下载

3.2下载安装PHP组件

1 [root@local ~]#yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd -y
2 [root@local ~]#yum install php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd -y
3 [root@local ~]#yum install php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb -y

PHP全部安装完成之后,我们要将PHP运行时的进程用户修改成和Nginx运行时的进程用户一样,保持一致,我们前面创建的是test用户,因为他们之间是相互交换数据的,当一个用户发送一个动态请求后Nginx就会把这个请求抛给具有动态处理能力的PHP。

[root@local ~]# sed -i '/^user/c user = test' /etc/php-fpm.d/www.conf
[root@local ~]# sed -i '/^group/c group = test' /etc/php-fpm.d/www.conf
[root@local blog]# egrep "^user|^group" /etc/php-fpm.d/www.conf
user = test
group = test

同样的,和Nginx一样,我们给他开启服务,查看PHP:9000端口,并加入开机自启动:

1 [root@local ~]# systemctl start php-fpm
2 [root@local ~]# systemctl enable php-fpm
3 [root@local ~]# netstat -lntup|grep php-fpm

可以看到开机自启动已经创建,默认9000端口已经开放,如果现在要在web浏览器中测试PHP会报错误,因为我们还没有配置自己博客的站点目录和虚拟主机,这往往和数据库是一起的,所以我们先要来搭建数据库。

4.安装MariaDB数据库

1 [root@local ~]# yum install mariadb-server mariadb -y
2 [root@local ~]# systemctl start mariadb
3 [root@local ~]# systemctl enable mariadb
4 [root@local ~]# netstat -lntup|grep mysql

安装完成后,和Nginx以及PHP一样,我们启动它的服务,并检查数据库开放端口,以及设置开机自启动

可以看到服务已启动,开机自启动已经创建,默认端口3306已经响应开放,这时可以键入mysql命令查看它的一些info,退出时我们用quit命令。

和前面两者相比,数据库因其在一个网站中充当的角色,涉及数据管理,数据安全,数据备份,创建用户,管理用户等等,因而显得要复杂很多,我们还要进行很多配置操作,先给它配置数据库登录密码,并且这个时候创建的用户和密码就是以后在浏览器或者命令行登录数据库时要用到的用户和密码。

1 [root@local ~]# mysqladmin password 'test123'
2 [root@local ~]# mysql -u root -p test123

密码已经创建,直到现在我们搭建网站所要的LNMP环境基本配置完成,下面将要进行整体测试搭建环境。

5.LNMP架构配置及整体测试实践

5.1 配置Nginx主配置文件:nginx.conf

在最早安装Nginx时我们已经配置好从Nginx官方仓下载,原则上这里我们不用配置这个文件,但因每个人机型不同,可能测试有不同程度的问题,所以在这里,将要配置的文件写出来:

 1 [root@local ~]# vim /etc/nginx/nginx.conf
2 user nginx;
3 worker_processes auto;
4 error_log /var/log/nginx/error.log notice;
5 pid /var/run/nginx.pid;
6 events {
7 worker_connections 1024;
8 }
9
10 http {
11 include /etc/nginx/mime.types;
12 default_type application/octet-stream;
13
14 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
15 '$status $body_bytes_sent "$http_referer" '
16 '"$http_user_agent" "$http_x_forwarded_for"';
17
18 access_log /var/log/nginx/access.log main;
19 include /etc/nginx/conf.d/*.conf;
20 }

5.2配置虚拟主机配置文件

我们模拟配置一个网站的首页,域名,访问端口,静态服务端口,数据库服务端口等等,配置完成后,我们检查Nginx的语法

1 [root@local conf.d]# cd /etc/nginx/conf.d
2 [root@local conf.d]# gzip default.conf
3 [root@local conf.d]# vim 01_blog.mylive.org.conf

配置好之后,我们重新加载Nginx服务,这里,我们不采用restart重启,我们采用的是平滑加载的方式启动

5.3 创建站点目录,并且将站点目录的拥有者和群组的使用者设为test

1 [root@local~]# mkdir -p /data/blog
2 [root@local~]# chown -R www.www /data/blog

5.4 测试PHP服务

此test.php是PHP的内置函数调用,展示一些PHP的信息,我们在浏览器中输入ip地址,并且跟文件test.php

测试成功,PHP服务运行正常

5.5 测试PHP连接MariaDB数据库,创建文件为test_mysql.php

[root@local ~]# vim /data/blog/test_mysql.php

此时在浏览器中输入10.0.0.132/test_mysql.php

5.6 测试静态l虚拟主机是否成功,创建名为index.html文件

我们用浏览器打开10.0.0.132/index.html

如果不带域名访问Nginx,默认会找第一个虚拟主机,是我们配置过的第一个虚拟主机

但是一个网站不止一个虚拟主机,比如再创建一个虚拟主机zhihu

在02_zhihu.mylive.org里面修改虚拟主机的根目录,在Nginx中,一个server标签就是一个虚拟主机

再次检查Nginx的语法nginx -t,显示正常,并且重新七档Nginx服务

如果拿IP地址来访问,现在有两个主机,就很难访问到第二个,所以我们要在本地带域名访问,现在我们配置windows本地的DNS解析文件hosts.

这里有两个问题:

1).部分windows 10 家庭中文版,没有这个hosts文件,建议在百度或bing站上搜索关于此问题的解析,或者手动创建一个hosts文件;

2).部分windows 10系统修改hosts文件保存需要管理员权限,这个时候右击文件,找到属性,里面安全一栏找到高级选项,添加当前用户并分配绝对控制的权限,方可解决。

将10.0.0.132解析到本地,就可以用域名来访问到虚拟主机

[root@local conf.d]# curl -H "host:blog.mylive.org" 10.0.0.132/test_mysql.php

截止目前,我们网站的搭建环境安装和整站环境测试圆满结束,下面就是我们将wordpress博客后台管理软件安装到系统,真正开启我们的博客管理

6.安装wordpress软件

安装之后,目录里面存在一个压缩包

将wordpress下的所有文件移动到当前目录,并且改变/data/blog的所有使用权限为test用户和组

现在我们在web浏览器中用域名直接可以访问wordpress的wp-admin/setup-config.php文件

页面提示我们登录数据库,因为我们还没有在数据库中创建库和表,所以我们要先在系统命令行登录配置数据库

创建名为blog的数据库

查看创建的数据库

可以看到,除了我们自己创建的blog数据库,还有其他三个数据库,为MariaDB数据库的内置库,在删除的时候,切记不要删除,它是用来管理系统用户的,

以上命令用来设置root用户来管理数据库,但权限太大,意思是授予root用户管理blog下的所有表,并且只能在本地localhost来访问

以上命令,是让配置的数据库生效,现在我们一个简单的数据库的创建就完成了,现在我们来到浏览器页面

我们在页面所填的提交信息就是我们前几步在linux系统对MariaDB数据库的配置,值得注意的是最后一项,表前缀,特变关键,加一个表前缀,起到了对数据库的保护作用,攻击者就很难知道我们的表结构,是为了安全而生。

出现此页面,就表明我们连接上MariaDB数据库,但是现在进入数据库查表,提示没有数据表,

所以我们在web页面创建表

现在我们在系统里面查blog数据库的数据表,可以看到,他已经根据我们在web页面设置的生成

经过上一步骤的登录后,我们就来到了非常漂亮的博客管理页面,在这里,我们就可以开心的写文章,发表文章,管理文章。

总结以上,就是我们整个博客网站从LNMP环境搭建,配置调试,博客建站模板下载解压,创建数据库,到最后登录出现页面。还是顺利,此过程可能因部分真实物理机参数配置而有所变化,会出现问题,但是不要怕,总的过程就是如此这般,遇到问题我们可以咨询身边的技术大牛,或者去cnblog、百度、CSDN、脚本之家、知乎,吾爱破解论坛、菜鸟教程等等网站去搜集资料,最重要的还是要yum源配置正确,希望此篇文章能对想搭建网站的各位小伙伴有所帮助。

---《墨云流香》---

QQ:1757468585

Linux下-LNMP环境搭建博客网站(全过程)的更多相关文章

  1. Linux 下LNMP环境搭建_【all】

    LNMP = Linux + Nginx + Mysql + PHP 1.0 Linux环境搭建 Linux 系统安装[Redhat] 1.1. FastCGI介绍 1.什么是CGI(common g ...

  2. Hexo系列(一) 搭建博客网站

    写在前面的话:本系列文章主要参考 Hexo官方说明文档,同时结合自己在使用过程中的一些心得体会,撷取下来,和大家分享分享.好,下面闲话不多说,马上开始我们的 Hexo 之旅吧 温馨提醒:博主使用的操作 ...

  3. Django搭建博客网站(四)

    Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...

  4. Django搭建博客网站(三)

    Django搭建博客网站(三) 第三篇主要记录view层的逻辑和template. Django搭建博客网站(一) Django搭建博客网站(二) 结构 网站结构决定我要实现什么view. 我主要要用 ...

  5. Django搭建博客网站(二)

    Django搭建自己的博客网站(二) 这里主要讲构建系统数据库Model. Django搭建博客网站(一) model 目前就只提供一个文章model和一个文章分类标签model,在post/mode ...

  6. linux下LAMP环境搭建

    ++++++++++++++++++++++++++++++++++++++++++++++ linux下LAMP环境搭建 ++++++++++++++++++++++++++++++++++++++ ...

  7. 部署项目到服务器 & 搭建博客网站

    搭建博客网站 作为名程序员,或者是网络编程爱好者,拥有一个自己的博客网站再好不过,本篇文章手把手教你部署自己的网站

  8. django学习笔记——搭建博客网站

    1. 配置环境,创建django工程 虚拟环境下建立Django工程,即创建一个包含python脚本文件和django配置文件的目录或者文件夹,其中manage.py是django的工程管理助手.(可 ...

  9. Django搭建博客网站(一)

    Django搭建自己的博客网站(一) 简介 这个系列主要是通过使用Django这个python web框架实现一个简单的个人博客网站.对Django有疑问可以上Django官网查文档. 功能 后台管理 ...

随机推荐

  1. Java-Lambda相关使用介绍

    频繁使用的语句   Lambda又涉及到comparator和comparable区别(Comparable是实现comparable接口,实现后可以使用Collections.sort或Arrays ...

  2. 【TCP/IP】TCP服务器并发处理&源码

    前言 本笔记记录的是 单个服务端并发式处理多个客户端. 下次有空在发个 单线程多个服务端并发式处理多种客户端.其实就是本笔记的一个改良版,用到select() / poll() / epoll(). ...

  3. .net core Redis消息队列中间件【InitQ】

    前言 这是一篇拖更很久的博客,不知不觉InitQ在nuget下载量已经过15K了,奈何胸无点墨也不晓得怎么写(懒),随便在github上挂了个md,现在好好唠唠如何在redis里使用队列 队列缓存分布 ...

  4. Centos7搭建内网DNS服务器

      一.配置阿里云yum源 执行脚本配置阿里云的yum源,已配置yum源的可以忽略 #!/bin/bash # ******************************************** ...

  5. vue 快速入门 系列 —— vue loader 下

    其他章节请看: vue 快速入门 系列 vue loader 下 CSS Modules CSS Modules 是一个流行的,用于模块化和组合 CSS 的系统.vue-loader 提供了与 CSS ...

  6. 易车网实战+【保姆级】:Feapder爬虫框架入门教程

    今天辰哥带大家来看看一个爬虫框架:Feapder,看完本文之后,别再说你不会Feapder了.本文辰哥将带你了解什么是Feapder?.如何去创建一个Feapder入门项目(实战:采集易车网轿车数据) ...

  7. 7.8、如何制作openstack镜像

    1.创建openstack-linux镜像: 下载已经做好的的镜像:https://docs.openstack.org/image-guide/obtain-images.html#centos ( ...

  8. SQL 小知识笔记

    1.自动生成序列号 select row_number() over(order by field1) as row_number,* from t_table

  9. POJ 1572 Automatic Editing 字符串替换,replace就够了

    题意不难理解,但是一开始还是没有看清楚题目.Replace the first occurrence of the find string within the text by the replace ...

  10. Mybatis学习(8)动态sql语句

    Mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...