lnmp编译安装:centos7+nginx-1.12+mariadb10.2+php7.2

最近在捣鼓公司项目的服务器,每次都要搜索一次命令很费时间,为了方便以后安装,写了这篇文章

1.准备基础工具

  由于采用编译安装,必须下载编译工具

  安装依赖:yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

 

  下载PCRE并安装:

          下载地址:http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

          解压:tar zxvf pcre-8.35.tar.gz

          进入安装包目录编辑并安装:

                      ./configure

                      make && make install

 

2.安装nginx(编译安装)

  官网下载nginx安装包:wget  http://nginx.org/download/nginx-1.12.2.tar.gz

  解压:tar -zxf  nginx-1.12.2.tar.gz

  进入安装包:cd nginx-1.12.2

  设置编译参数:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35

  参数说明: 

      --prefix=/usr/local/nginx           文件安装位置

      --with-http_stub_status_module     统计页面相关并发数 

         --with-http_ssl_module         支持https

       --with-pcre=/usr/local/src/pcre-8.35    定义一下pcre的安装路径

  安装:make && make install

 

  创建nginx运行的用户组和用户

  groupadd nginx

  useradd -M -g nginx -s /sbin/nologin nginx

  配置nginx操作的用户(没有该文件的复制nginx.conf.default)

  vim /usr/local/nginx/conf/nginx.conf

  第一行:user nginx nginx  

 

  设置nginx为系统服务

  vim /lib/systemd/system/nginx.service

  文件内容:

  [Unit]

  Description=nginx

  After=network.target

  [Service]

  Type=forking

  ExecStart=/usr/local/nginx/sbin/nginx

  ExecReload=/usr/local/nginx/sbin/nginx -s reload

  ExecStop=/usr/local/nginx/sbin/nginx -s stop

  PrivateTmp=true

  [Install]

  WantedBy=multi-user.target

  设置为开机自动启动

  systemctl enable nginx.service

  启动:systemctl start nginx.service

 

  可能遇到错误:Failed to reload nginx.service: Unit is not loaded properly: Invalid argument.
See system logs and 'systemctl status nginx.service' for details.

  查看报错日志,如果是这种错误:[/usr/lib/systemd/system/nginx.service:9] Unknown lvalue '  Type' in section 'Service'

  解决办法:

  升级stystemctl

  sudo yum install systemd-*

  重载系统服务文件

  systemctl daemon-reload

  用之前的命令启动nginx

  访问服务器ip地址,如果出现欢迎界面,nginx安装成功

 

  如果外网不能访问欢迎界面:设置80端口为开放,阿里云设置:‘控制台-云服务器ECS-网络和安全-安全组-创建安全组’   设置;

3.安装mariadb

  安装(写这篇文章时,mariadb更新到10.3,这里使用10.2):

  centos 自带的repos已经有mariadb,版本一般是5.5,比较老,我们升级一下

  vim /etc/yum.repos.d/mariadb.repo

  粘贴下面内容
  [mariadb]

  name = MariaDB

  baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64

  gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

  gpgcheck=1

  保存,运行命令安装:sudo yum install MariaDB-server MariaDB-client

  根据提示,一路按y,至此,mariadb安装完成

  mariadb服务已经默认加入系统服务了,我们只需要设置为开机启动:systemctl enable mariadb

  然后启动mariadb:systemctl start mariadb

  如果要进行相关配置,这篇文章介绍的很nice了:https://blog.csdn.net/zhezhebie/article/details/73549741

  

 4.安装php 

  安装php7需要的依赖(都是前辈们总结的经验,我们就不用再去踩坑了)

  yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel   openldap   openldap-devel  libxslt  libxslt-devel pcre pcre-devel bzip2 bzip2-devel systemd-devel libacl-devel gmp-devel libicu-devel readline-devel libtidy-devel

  

  下载php7.2,下载地址:http://www.php.net/downloads.php,由于外网太慢,我是手动下载然后通过ftp上传到服务器

  解压 tar -zxvf php-7.2.3.tar.gz

  编译 cd php-7.2.3

    ./configure --prefix=/usr/local/php7 --disable-fileinfo --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc --with-jpeg-dir --with-png-dir --with-freetype-dir  --enable-mbstring --with-mcrypt=/usr/lib64  --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --without-pear  --enable-bcmath 

  遇到错误:configure: error: Cannot find ldap libraries in /usr/lib

  解决办法:cp -frp /usr/lib64/libldap* /usr/lib/   继续编译

 

  遇到错误: error: Please reinstall the libzip distribution

  解决办法:下载libzip,继续编译

       

    wget https://nih.at/libzip/libzip-1.2.0.tar.gz

    tar -zxvf libzip-1.2.0.tar.gz

    cd libzip-1.2.0

    ./configure

    make

 

  遇到错误:configure: error: off_t undefined; check your library configuration

  解决办法:vim /etc/ld.so.conf 追加如下内容

        /usr/local/lib64
        /usr/local/lib
        /usr/lib
        /usr/lib64
        /usr/local/libzip/libzip-1.2.0    #这个以你安装的实际路径为准

  保存,运行命令:ldconfig -v

  继续编辑,安装:make && make install

  如果make出现内存不足的错误,加上参数 --disable-fileinfo 重新编译 再进行make && make install 即可

 

  可能出现的错误:/usr/local/include/zip.h:59:21: error: zipconf.h: No such file or directory

  解决办法:cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

 

  同样我们需要给php设置用户权限

  groupadd wwwroot

  useradd -M -g wwwroot -s /sbin/nologin wwwroot

  由于php项目需要读写操作,我们需要给php指定一个文件

  mkdir /home/wwroot

  设置专属文件夹

  chown -R wwwroot:wwwroot /home/wwwroot

  

  配置php用户

  php的配置文件位置:/usr/local/php7/etc/php-fpm.conf.default

  这个后缀名为defaul是读取不到的,我们需要复制一份为conf后缀名的文件

  cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

  cd /usr/local/php7/etc/

  vim php-fpm.conf

  打开配置文件没有发现配置用户的行,但看见最后一行include /usr/local/php7/etc/php-fpm.d/*.conf

  cd php-fpm.d

  同样复制defaul文件

  cp www.conf.default www.conf

  vim www.conf

  找到user 行,设置用户和用户组为wwwroot

  

  复制php.ini 文件

  cp /usr/local/php7/php-7.2.3/php.ini-production /etc/php.ini   -对应你编译时的配置--with-config-file-path

 

  把php设置为系统服务

  vim /etc/systemd/system/php-fpm.service

  复制以下代码粘贴

  [Unit]

  Description=php-fpm

  After=network.target

  [Service]

  Type=forking

  ExecStart=/usr/local/php7/sbin/php-fpm

  PrivateTmp=True

  [Install]

  设置为开机启动

  systemctl enable php-fpm.service

  打开php服务

  systemctl start php-fpm.service

  查看是否开启成功

  ps aux|grep php-fpm

  至此,lnmp已经搭建完成

5.lnmp简单配置

  接下来简单配置一下,实现域名访问(其实就是配置nginx):

  进入nginx配置目录

  cd /usr/local/nginx/conf/

  打开配置文件

  vim nginx.conf

  配置server组

  lnmp编译安装:centos7+nginx-1.12+mariadb10.2+php7.2_第1张图片

lnmp编译安装:centos7+nginx-1.12+mariadb10.2+php7.2_第2张图片

  

  可以看到我配置了www.liuwins.com这个域名服务,项目地址是/home/wwwroot/www.liuwins.com

  所以,创建目录

  mkdir /home/wwwroot/www.liuwins.com

  vim /home/wwwroot/www.liuwins.com/index.php

  输入

  

  ehco phpinfo();

  保存,重启nginx

  systemctl restart nginx.service

  浏览器输入www.liuwins.com 访问,至此,服务器已经实现域名访问

  

  ps:为了便于管理,我们一般在/usr/local/nginx/conf 目录下创建vhost文件,把每个server组放进不同的.conf文件,然后在nginx.conf include

    现在还不支持pathinfo模式(比如tp),需要单独配置

  

转载于:https://www.cnblogs.com/milkone/p/8603558.html

你可能感兴趣的:(lnmp编译安装:centos7+nginx-1.12+mariadb10.2+php7.2)