通常我们所说的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. 机器人路径规划其一 Dijkstra Algorithm【附动态图源码】

    首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...

  2. 『心善渊』Selenium3.0基础 — 8、使用CSS选择器定位元素

    目录 1.CSS选择器介绍 2.CSS选择器定位语法 3.Selenium中使用CSS选择器定位元素 (1)通过属性定位元素 (2)通过标签定位元素 (3)通过层级关系定位元素 (4)通过索引定位元素 ...

  3. (Element UI 组件 Table)去除单元格底部的横线

    Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...

  4. Nginx跨域了解及模拟和解决

    Nginx跨域 同源策略 何为同源: 1.协议(http/https)相同 2.域名(IP)相同 3.端口相同 详解请看我另一篇文章 https://www.cnblogs.com/you-men/p ...

  5. GPU 高性能计算

    背景 近日忽然想到,在CPU类型的服务器即使给到足够的运算资源,与GPU类型的服务器做运算来讲仍然是相差甚远,而本人有一台闲置的AMD vega8集显的电脑.想要用来做计算,来探究其与CPU运算的差别 ...

  6. Centos6.7 minimal安装GitLab8.3.4配置LDAP、发邮件以及升级到GitLab8.5.4

    建议使用非root账户安装,先同步系统时间: ntpdate cn.pool.ntp.org 1.创建用户gitlab 注意:centos下,adduser和useradd的命令效果是一样的,但ubu ...

  7. ExtJs4学习(四):Extjs 中id与itemId的区别

       为了方便表示或是指定一个组件的名称,我们通常会使用id或者itemId进行标识命名.(推荐尽量使用itemId,这样可以减少页面唯一标识而产生的冲突) id:   id是作为整个页面的Compo ...

  8. 结构型模式 -- 代理模式(静态代理&动态代理)

    静态代理: 真实角色和代理角色实现相同的接口,代理角色拥有真实角色的引用.代理角色去执行方法,对于某些"真正"需要真实角色自己执行的方法时,在代理角色内部就调用真实角色的方法,其他 ...

  9. Louvain 论文笔记

    Louvain Introduce Louvain算法是社区发现领域中经典的基于模块度最优化的方法,且是目前市场上最常用的社区发现算法.社区发现旨在发现图结构中存在的类簇(而非传统的向量空间). Al ...

  10. STM32笔记三

    1.单片机有两种存储器,程序存储器用来存储编写的程序,数据存储器用来存储单片机工作时的临时数据.内部存储器分为工作寄存器区.位寻址区.数据缓存区和特殊功能寄存器区. 2.位:数据存储的最小单位.在计算 ...