本文记录了从源码,在Centos 7上手动部署LNMP环境的过程,为了方便以后对nginx和mariadb进行升级,这里采用yum的方式进行安装。

1.建立运行网站和数据库的用户和组

groupadd www

useradd -g www admin

passwd admin #然后输入你想设置的密码

更多用户操作请参考【这里】,然后将新建用户添加到sudo列表中,编辑/etc/sudoers,内容如下:

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
admin ALL=(ALL) ALL

至此,用户和用户组创建完毕,然后接下来所有的操作都是在用户admin情况下操作的,如果涉及超级用户权限的时候使用sudo进行操作。

2.添加依赖包

以下依赖包是整个Lnmp搭建过程中所需的基本依赖包,如果在安装过程中出现错误,提示缺少某依赖包,可以自己安装

#执行下面这条命令,各参数之间以空格分开
sudo yum -y install zlib-devel pcre-devel openssl-devel gcc gcc-c++ ncurses-devel perl libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel curl-devel libxslt-devel

以上各依赖包之间以空格隔开即可。

3.下载安装文件

需要下载的源文件包括:libiconv-1.14.tar.gz、libmcrypt-2.5.8.tar.gz、php-7.0.4.tar.gz,操作如下:

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

wget http://php.net/distributions/php-7.0.4.tar.gz

4.编译libiconv

tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv-1.14 #安装目录
cd srclib
sed -i -e '/gets is a security/d' ./stdio.in.h
cd ..
sudo make -j2
sudo make install

5.编译libmcrypt

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt-2.5.8
sudo make -j2
sudo make install

6.编译nginx

安装

具体源码编译安装步骤参照[centos7通过编译源码的方式安装nginx]。

进入nginx的安装目录/usr/local/nginx目录下,执行以下命令

./sbin/nginx

测试

在浏览器地址栏输入IP进行访问,如果出现“Welcome to nginx!”字样,说明安装成功!

补充

如果通过Ip出现无法访问的情况,请参考这里一下情形进行分析:

  • ssh登录你的vps,执行curl localhost,看是否能返回带有“Welcome to nginx!”字样的信息,如果返回说明Nginx安装没问题,再查看其他原因,否则就是你nginx安装有问题;
  • 如果执行curl localhost没问题,那么远程执行一下telnet你的vps的80端口看时候能连接,如果不能,说明80端口没开放呢,参考这里进行开放80端口,然后重启防火墙;

7.编译MariaDb

欲练此功,必先自宫!

因为现在mysql不再开源,所以centos7自带的是mariadb,而且版本为5.5系列,编译安装mariadb之前,请先将自带的mariadb卸载掉,具体完全卸载方法,请谷歌一下!或者参考这里

mariadb需要cmake进行安装,所以我们需要先安装一下cmake:

sudo yum -y install cmake

解压

tar -xzvf mariadb-10.1.13.tar.gz

创建mariadb数据文件目录并更改属主及用户组

sudo mkdir -p /home/userdata/mariadb
sudo chown -R admin:www /home/userdata/
sudo chown -R admin:www /home/userdata/mariadb

cmake编译

#切换目录
cd mariadb-10.1.13/
#下面是一整行,请直接复制后,更改成对应你的环境后再执行,有不明白的地方请留言
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.1.13 -DMYSQL_DATADIR=/home/userdata/mariadb -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mariadb-10.1.13.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=admin

注意:以上各参数是以空格隔开的。

安装

sudo make -j2  #-j2 表示双线程编译,一般取cpu核心数+1
sudo make install

更改目录权限

sudo chown -R admin:www /usr/local/mariadb-10.1.13/

复制配置文件

#切换目录
cd /usr/local/mariadb-10.1.13/
cp ./support-files/my-huge.cnf ./support-files/my.cnf # 复制配置文件

打开配置文件:/usr/local/mariadb-10.1.13/support-files/my.cnf,查找关键字thread_concurrency,将该值修改为你的vps cpu*2之后的值,然后保存。

初始化安装数据库

#切换目录
cd /usr/local/mariadb-10.1.13/
#执行脚本
./scripts/mysql_install_db --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf --datadir=/home/userdata/mariadb --user=admin

注意:上面个参数之间以空格隔开

接下来制作mariadb的启动脚本,在/usr/lib/systemd/system/目录下新建mariadb.service文件,内容参考如下(具体内容还需要根据自己的实际情况进行修改):

[Unit]
Description=MariaDB Server
After=network.target [Service]
User=mariadb
Group=mariadb
PIDFile=/tmp/mariadb-10.1.13.pid
ExecStart=/usr/local/mariadb-10.1.13/bin/mysqld_safe --defaults-file=/usr/local/mariadb-10.1.13/support-files/my.cnf --user=mariadb --datadir=/home/userdata/mariadb-10.1.13 --pid-file=/tmp/mariadb-10.1.13.pid [Install]
WantedBy=multi-user.target

上面ExecStart的各个参数之间也是以空格隔开的,具体的参数需要自己指定,具体使用方法如下:

systemctl enable mariadb #开机启动
systemctl start mariadb #立刻启动
systemctl status mariadb #查看服务状态

设置root密码

/usr/local/mariadb-10.1.13/bin/mysqladmin -u root password '1234567890'

注:通过上述方式设置密码会出现无法进行登陆或者远程连接(实现远程连接的方法参考这里)的情况,请使用其他方式(命令行或者执行修改mysql.user表)更改密码,具体可参考这里。还是在下面贴一下自己的吧。

下面进入mysql命令行,重新设置一下root用户的密码,以及添加远程连接(注意端口开放)。

/usr/local/mariadb-10.1.13/目录下执行./bin/mysql -u root -p '刚刚你设置的root密码' 进行登陆,登陆后再mariadb的命令行模式执行下列命令:

使用命令行修改数据库用户密码:
use mysql; UPDATE user SET password=PASSWORD('你的密码') WHERE User='root'; 为root数据库用户添加本地访问所有数据库的权限: grant all privileges on *.* to root@'localhost' identified by "你的密码"; 为root数据库用户添加远程连接访问所有数据库的权限: grant all privileges on *.* to root@'%' identified by "你的密码"; 最后刷新权限
FLUSH PRIVILEGES

8.编译PHP

解压

tar -xzvf php-7.0.4.tar.gz

预编译

#进入解压后的目录
cd /home/module_compile/php-7.0.4
#预编译
./configure --prefix=/usr/local/php-7.0.4 --with-config-file-path=/usr/local/php-7.0.4/etc --with-mysqli=mysqlnd --with-iconv-dir=/usr/local/libiconv-1.14 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-bcmath --enable-inline-optimization --with-curl --with-fpm-user=admin --with-fpm-group=www --enable-mbstring --with-mcrypt=/usr/local/libmcrypt-2.5.8 --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-sockets --enable-zip --enable-ftp --without-pear --enable-pdo --with-pdo-mysql=mysqlnd --disable-fileinfo --with-xmlrpc --enable-opcache --enable-fpm

注意:以上各参数以空格隔开,–prefix指定你想要设置的安装目录,–with-iconv-dir指定你前面libiconv的安装目录,–with-fpm-user指定你的用户,–with-fpm-group指定你的用户组,–with-mcrypt需要指定你libmcrypt的安装目录,不然编译PHP时,就算安装了也会提示找不到libmcrypt,请重新安装的错误!

编译安装

make -j2
make test
make install

配置

1)首先为php创建配置文件:

将加压后的安装包内的 php.ini-production文件复制一份到安装目录

cd /home/module_compile/php-7.0.4

cp php.ini-development  /usr/local/php-7.0.4/php.ini # 如果是开发就复制php.ini-development

将安装目录/usr/local/php-7.0.4/etc下的php-fpm.conf.default文件复制一份并重名为php-fpm.conf

cd /usr/local/php-7.0.4/etc
cp php-fpm.conf.default php-fpm.conf

做一个软链接

ln -s /usr/local/php-7.0.4/bin/php /usr/bin/

进入安装目录/usr/local/php-7.0.4/etc/php-fpm.d目录下,将www.conf.default复制一份并重命名为www.conf

cd /usr/local/php-7.0.4/etc/php-fpm.d
cp www.conf.default www.conf

2)配置php-fpm.conf文件

vi /usr/local/php-7.0.4/etc/php-fpm.conf

具体编辑内容参考这里

3)配置www.conf文件

vi /usr/local/php-7.0.4/etc/php-fpm.d/www.conf

具体编辑内容参考这里

需要修改的内容包括user ,group,listen.owner,listen.group ,listen 等信息,其中listen那一行,修改成如下内容:

listen = /var/run/php-fpm/php-fpm.sock   # 使用unix socket

4)启动php-fpm

mkdir /var/run/php-fpm/ #这一步在每次启动系统时都要做,因为/var/run是个动态目录,系统重启php-fpm就没了
chown -R admin:www /var/run/php-fpm
cd /usr/local/php-7.0.4/
./sbin/php-fpm

5)修改nginx配置文件支持php

cd /usr/local/nginx/
vi ./conf/nginx.conf

具体修改内容如下:

server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.php index.html index.htm; # 添加index.php的首页文件
} # 添加下面内容
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
include fastcgi.conf;
}

修改完成后重启nginx.

cd /usr/local/nginx
./sbin/nginx -s stop
./sbin/nginx

然后在/nginx/html下创建index.php,

vi /nginx/html/index.php

添加下面内容:

<?php
phpinfo();
?>

然后在浏览器中输入ip进行访问,当你看到下面的界面,那么恭喜你,配置成功!

参考文章:

  1. 在Centos7环境下源码安装部署LNMP

在ConoHa上Centos7环境下源码安装部署LNMP的更多相关文章

  1. CentOS7.3环境下源码安装httpd

    CentOS7.3环境下源码安装httpd 本文在CentOS7.3下,源码安装apache服务httpd2.4. 1.下载好源码安装包 [root@localhost ~]#ll total 625 ...

  2. nginx在Centos7.5下源码安装和配置

    安装nginx 安装nginx依赖包 yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim 进入目录/root/se ...

  3. Linux环境下源码安装PostgreSQL

    1.下载PostgreSQL源码包,并保存到Linux操作系统的一个目录下 2.解压PostgreSQL源码包 :tar zxvf postgresql-9.2.4.tar.gz 或 tar jxvf ...

  4. Linux环境下源码安装Apache2.2.25

    操作环境:RedHat Enterprise Linux 5.6 一.安装准备 安装Apache一般依赖3个组件:apr.apr-util.pcre. 确保这三个组件已经安装. [root@bigsr ...

  5. CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境【转载】

    本文转载自 园友David_Tang的博客,如有侵权请联系本人及时删除,原文地址: http://www.cnblogs.com/mchina/archive/2012/11/28/2778779.h ...

  6. CentOS7 下源码安装 python3

    CentOS 7 下源码安装 python3   在CentOS7下,默认安装的是python2.7:为满足项目要求,安装python3 的方法如下:   1. 首先安装python3.6可能使用的依 ...

  7. centos 6x系统下源码安装mysql操作记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...

  8. Linux平台下源码安装mysql多实例数据库

    Linux平台下源码安装mysql多实例数据库[root@linux-node1 ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6 ...

  9. CentOS6.5下源码安装多个MySQL实例及复制搭建

    多实例安装本节是在CentOS6.5下源码安装MySQL5.6.35的基础上,在同一台机器增加一个MySQL实例.参考Centos中安装多个mysql数据的配置实例,安装目录为/usr/local/m ...

随机推荐

  1. 【Java】留下没有基础眼泪的面试题

    前言 只有光头才能变强 本文力求简单讲清每个知识点,希望大家看完能有所收获 一.如何减少线程上下文切换 使用多线程时,不是多线程能提升程序的执行速度,使用多线程是为了更好地利用CPU资源! 程序在执行 ...

  2. ubuntu:xxx is not in the sudoers file. 问题解决

    ubuntu 下普通用户用 sudo 执行命令时报 "xxx is not in the sudoers file.This incident will be reported" ...

  3. Flutter 即学即用系列博客——10 混淆

    前言 之前的博客我们都是在 debug 的模式下进行开发的. 实际发布到市场或者给到用户的都是 release 包. 而对于 Android 来说,release 包一个重要的步骤就是混淆. Andr ...

  4. DSAPI+DS控件库 Windows7风格控件演示

    效果图 部分代码 DSAPI.Win7特性.任务栏特效.初始化() '这句非常重要,很多对任务栏特性的操作都需要先初始化 DSAPI.Win7特性.设置任务栏窗口缩略图(Me, My.Resource ...

  5. Java SimpleDateFormat处理日期与字符串的转换

    1.为什么要使用SimpleDateFormat? 在Java中,如果我们想获取当前时间,一般会使用Date类的无参构造函数,如下所示,我们获取到当前时间并输出: import java.util.D ...

  6. while死循环导致的内存溢出

    场景:新开发的功能内测,新调用了其它模块的接口,一如既往的点鼠标,计费,但是许久都没有响应页面遮罩一直锁着,最后抛出了以下异常 咋一看这个异常信息,不就是锁表了吗?把锁表进程Kill掉,再来一遍,结果 ...

  7. 学习笔记—XML

    XML XML简介 XML指可扩展标记语言(EXtensible Markup Language),是一种标记语言. XML是一种灵活的语言,标签没有被预定义,需要自行定义标签. 通常,XML被用于信 ...

  8. 学习笔记—JVM

    JVM结构 JVM总体结构图 类加载子系统与方法区: 类加载子系统负责从文件系统和网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间. 除了类信息外,方法区中还可能会存放运行时常量池 ...

  9. odoo12 物流 自动计算运费 ,采购销售使用不同计量单位自动换算

    在物流和食品生鲜类行业,重量是很重要的因素,不仅要处理产品的数量,也要处理产品的重量.在多数行业,重量也是订单的重要数据. odoo原生包含了对重量的处理,下文中将指导如何优雅应用odoo原生模块处理 ...

  10. 什么是Docker,它可干什么?

    定义我们知道,软件依赖的环境大致包括: 1• 配置文件2• 代码3• tomcat4• JDK5• 操作系统 Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包 ...