- A+
通常我们所说的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