CentOS7.2配置LNMP环境记录

PHP 5.6+ Nginx 1.10+ MysqL 5.5+

LNMP是Linux、Nginx、MysqL(MariaDB)和PHP的缩写,这个组合是最常见的WEB服务器的运行环境之一。本文将带领大家在CentOS 7操作系统上搭建一套LNMP环境。

本教程适用于CentOS 7.x版本。
准备工作

更新 yum 源,自带的源没有 PHP5.6 :

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装 epel:

yum install epel-release

然后更新下系统:

yum update

准备工作完成,开始安装!

安装Nginx

CentOS系统模板中配置了内网源,下载速度较快,推荐使用yum安装Nginx:

sudo yum install Nginx

按照提示,输入yes后开始安装。安装完毕后,Nginx的配置文件在/etc/Nginx目录下。使用以下命令启动Nginx:

sudo systemctl start Nginx

检查系统中firewalld防火墙服务是否开启,如果已开启,我们需要修改防火墙配置,开启Nginx外网端口访问。

sudo systemctl status firewalld

如果显示active (running),则需要调整防火墙规则的配置。

修改/etc/firewalld/zones/public.xml文件,在zone一节中增加:

<zone>
    ...
    <service name="Nginx"/>
<zone>

保存后重新加载firewalld服务:

sudo systemctl reload firewalld

您可以通过浏览器访问 http://<外网IP地址> 来确定Nginx是否已经启动。

最后将Nginx设置为开机启动:

sudo systemctl enable Nginx.service

这么Nginx就安装成功了!

安装MysqL(MariaDB)

MariaDB是MysqL的一个分支,主要由开源社区进行维护和升级,而MysqL被Oracle收购以后,发展较慢。在CentOS 7的软件仓库中,将MysqL更替为了MariaDB。

我们可以使用yum直接安装MariaDB:

sudo yum install mariadb-server

安装完成之后,执行以下命令重启MariaDB服务:

sudo systemctl start mariadb

MariaDB默认root密码为空,我们需要设置一下,执行脚本:

sudo /usr/bin/MysqL_secure_installation

这个脚本会经过一些列的交互问答来进行MariaDB的安全设置。

首先提示输入当前的root密码:

  • Enter current password for root (enter for none):
    初始root密码为空,我们直接敲回车进行下一步。

  • Set root password? [Y/n]
    设置root密码,默认选项为Yes,我们直接回车,提示输入密码,在这里设置您的MariaDB的root账户密码。

  • Remove anonymous users? [Y/n] 是否移除匿名用户,默认选项为Yes,建议按默认设置,回车继续。

  • disallow root login remotely? [Y/n]
    是否禁止root用户远程登录?如果您只在本机内访问MariaDB,建议按默认设置,回车继续。 如果您还有其他云主机需要使用root账号访问该数据库,则需要选择n。

  • Remove test database and access to it? [Y/n] 是否删除测试用的数据库和权限?
    建议按照默认设置,回车继续。

  • Reload privilege tables Now? [Y/n]
    是否重新加载权限表?因为我们上面更新了root的密码,这里需要重新加载,回车。

完成后你会看到Success!的提示,MariaDB的安全设置已经完成。我们可以使用以下命令登录MariaDB:

MysqL -uroot -p

按提示输入root密码,就会进入MariaDB的交互界面,说明已经安装成功。

最后我们将MariaDB设置为开机启动。

sudo systemctl enable mariadb

安装PHP

我们可以直接使用yum安装PHP:

sudo yum install PHP56w-fpm PHP56w-MysqL PHP56w-MysqLi PHP56w PHP56w-opcache PHP56w-gd PHP56w-intl PHP56w-mbstring PHP56w-exif PHP56w-mcrypt PHP56w-openssl

//把该安装的一次性装到位

安装完成后我们将PHP-fpm启动:

sudo systemctl start PHP-fpm

将PHP-fpm设置为开机启动:

sudo systemctl enable PHP-fpm

接下来需要注意了!~配置Nginx--多个站点

我给大家提供一个范本作为参考:

Nginx.conf

里面我会详细的给予中文注释

vi /etc/Nginx/Nginx.conf

//编辑Nginx.conf的命令
# For more information on configuration,see:
#   * Official English Documentation: http://Nginx.org/en/docs/
#   * Official Russian Documentation: http://Nginx.org/ru/docs/

user Nginx;
worker_processes auto;
error_log /var/log/Nginx/error.log; #错误日志记录的位置
pid /run/Nginx.pid; #Nginx.pid为记录Nginx主进程pid文件;切勿修改、移动
# Load dynamic modules. See /usr/share/Nginx/README.dynamic.
include /usr/share/Nginx/modules/*.conf;
#引入/usr/share/Nginx/modules/ 目录下的所有以.conf结尾的文件

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/Nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/Nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/Nginx/conf.d directory.
    # See http://Nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/Nginx/conf.d/*.conf;
    #这句很重要,引入所有etc/Nginx/conf.d/目录下的.conf文件
    
    #***etc/Nginx/conf.d/目录存放的就是分站点的文件(下面会给出实例代码)***
    
    server {
        #由于我们的Nginx需要配置多站点,所以在此就需要注释一些东西
        
         listen       80 default_server;
         listen       [::]:80 default_server;
        #保留监听的端口  
        # server_name  _;
        # root         /usr/share/Nginx/PHP;

        # Load configuration files for the default server block.
        # include /etc/Nginx/default.d/*.conf;

        # location / {
        # }

        # error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
        # location ~ \.PHP$ {
        # root           /usr/share/PHP;
        # fastcgi_pass   127.0.0.1:9000;
        # fastcgi_index  index.PHP;
        # fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        # include        fastcgi_params;
        # }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/Nginx/html;
#
#        ssl_certificate "/etc/pki/Nginx/server.crt";
#        ssl_certificate_key "/etc/pki/Nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/Nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

#注意:此份Nginx.conf可以直接复制了去使用!~好用了就给博主打个赏钱!谢谢!

配置完Nginx之后我们该干啥、?当然是重启Nginx呗

service Nginx start      #启动Nginx

service Nginx stop       #停止Nginx

service Nginx restart    #重启Nginx

sudo systemctl reload Nginx     #或者执行这条

重启完毕,继续打开 http://<外网IP地址> 来确定Nginx是否已经启动
此时,服务器启动的是Nginx和apache
而且PHP-fpm默认发送到apache
所以咱们还得继续修改一下PHP-fpm

配置 PHP-fpm :

vi /etc/PHP-fpm.d/www.conf    

#编辑PHP-fpm配置文件

修改user和group (源代码为:user = apache group = apache)

user = Nginx    
group = Nginx

修改完了之后,还是老样子,重启PHP-fpm服务

service PHP-fpm start      #启动PHP-fpm

service PHP-fpm stop       #停止PHP-fpm

service PHP-fpm restart    #重启PHP-fpm

最后,咱们需要为Nginx添加站点了

添加站点这我先给大家一个截图,以帮助大家迅速的了解是怎么回事


大家应该看的很清楚了,猜都可以猜到,博主这一共配置了三个站点,这三个站点是怎么被Nginx引入的呢?

我给大家贴出Nginx的配置文件的里面应该有这么一句(注意图中的红框,上面的是地址)

include /etc/Nginx/conf.d/*.conf;
#这句很重要,引入所有etc/Nginx/conf.d/目录下的.conf文件
#***etc/Nginx/conf.d/目录存放的就是分站点的文件(下面会给出实例代码)***

好的,大家应该能准确理解了,如果还是理解不了的话只能缺你回去喝点三鹿了!

下面我给大家贴出Nginx站点配置文件的代码,修改修改就可以用

看代码的时候请注意看里面的路径,当然我也还是会给一定的中文注释
#这个文件是上面的qopmall.com.conf
server {

    server_name  qopmall.com www.qopmall.com;#这里就是你要绑定的域名了,空格分开
    location / {
            root   /usr/share/PHP/weixin; #这里是你站点存放的文件夹名称(也就是说,你当前这个站点的文件全部都丢在这个路径的weixin文件夹里面)
            index  index.PHP index.html index.htm; #这里照抄即可
        }
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.PHP$ {
        root           /usr/share/PHP/weixin; #这里的配置等同于上面的那个root配置
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.PHP;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/PHP/weixin/$fastcgi_script_name; #这里的配置也是和上面的root配置一样
        include        fastcgi_params;
    }
}

代码非常简单,我没注释到的不用修改就行;

上面的路径,比如/usr/share/PHP/weixin 这就是你站点的根目录,我给大家截图参考:

  • 各位童鞋,创建好站点了,先写个简单的PHP程序测试一下是否正常,比如info;

由于博主是个菜鸡,也就顺带给大家分享一下经验,老司机请绕道行驶!如果你觉得博主写得帮到了你,或者对你来说还算有用了,麻烦点个赞,土豪直接打赏就行,我不反对!see you!~

记录:CentOS7.2配置LNMP环境记录的更多相关文章

  1. ios – didUpdateLocations从未调用过

    我正在尝试获取用户的位置.为此,我在info.plist中设置了以下属性:我还在viewDidLoad方法中添加了以下代码以及下面的函数.问题是locationManager(manager,didUpdate…

  2. ios – 重命名并重写为Swift后对象解码崩溃

    由于我们已经重命名了(Bestemming–>Place)类并将其从Objective-c重写为Swift,因此一些用户会遇到崩溃.我们正在尝试使用NSCoding原则从NSUserDefaults加载对象.碰撞:班级:从NSUserDefaults阅读:崩溃日志说它在第0行崩溃,这是注释所以我认为它在init方法中崩溃,我认为它与一个null为空但不能为null的对象有关.我尝试过的:>尝试在S

  3. 适用于iOS的Google Maps SDK不断增加内存使用量

    我已经构建了一个在地图上显示标记的简单应用程序,我从服务器的JSON文件加载其x,y,标记是可点击的,所以一旦你在任何标记上它将你带到另一个UIViewController(我们将它命名为BViewController).我已经监视了内存使用情况,所以每次我从BViewController返回到MapViewController(里面的地图)时,它只是内存使用量的两倍我尝试将其设置为nill或从s

  4. ios – 未提示在应用程序中启用位置服务

    更新:这不是重复.我已经在info.plist中添加了所需的密钥,如我原始问题中所述,问题仍然存在.我已经尝试了各种组合的所有三个键.在任何人感到不安之前,我已阅读了许多AppleDev论坛帖子和堆栈溢出帖子,无法弄清楚为什么我的应用程序拒绝提示用户允许使用时授权.我已将以下密钥添加到我的Info.plist文件中,并附带一个String值:然后我写了(在Swift和Obj-C中)应该提示用户的代

  5. ios – 在UIViewController显示为3DTouch预览时检测UITouches

    是否有可能从UIViewController检测触摸并获取触摸的位置,UIViewController当前用作3DTouch的previewingContext视图控制器?

  6. ios – Google地图折线不完美呈现

    我正在使用最新的GoogleMapsAPIforiOS绘制折线.我正在逐点构造折线,但是当我缩小折线从地图中消失(不是字面上的术语)时,它不能正常渲染,当我放大时,它只会显示线条.这是放大时折线的显示方式这是缩小时的显示方式这里是我绘制折线的功能我有覆盖init:为RCpolyline是这样的东西和drawpolylineFromPoint:toPoint:这样做解决方法我发现这个故障,我正在制作

  7. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  8. ios – CLGeocoder错误. GEOErrorDomain代码= -3

    有没有关于apple的地理编码请求的文档?谢谢你提前.更新这是我的整个代码请求解决方法在搜索到答案后,它在Apples文档中!

  9. ios – Sprite Kit – 确定滑动精灵的滑动手势向量

    我有一个游戏,圆形物体从屏幕底部向上射击,我希望能够滑动它们以向我的滑动方向轻弹它们.我的问题是,我不知道如何计算滑动的矢量/方向,以便使圆形物体以适当的速度在正确的方向上被轻弹.我正在使用的静态矢量“(5,5)”需要通过滑动的滑动速度和方向来计算.此外,我需要确保一旦我第一次接触到对象,就不再发生这种情况,以避免双重击中对象.这是我目前正在做的事情:解决方法以下是如何检测滑动手势的示例:首先,定

  10. ios – 如何使用Swift使用Core Data更新/保存和保留非标准(可转换)属性?

    我已经构建了一个非常基本的示例来演示我尝试更新可转换类型并在应用程序重新启动之间保持更改的问题.我有一个Destination类型的实体……解决方法核心数据无法跟踪该对象的脏状态,因为它不了解其内部.而不是改变对象,创建一个副本,改变它,然后设置新对象.它可能会变异,然后重新设置相同的对象,不确定,没有测试它.您可以检查,只是改变地址,然后询问托管对象是否有更改,如果没有则则不会保存.

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部