本文记录了从源码,在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. Asp.Net Core 轻松学-利用 Swagger 自动生成接口文档

    前言     目前市场上主流的开发模式,几乎清一色的前后端分离方式,作为服务端开发人员,我们有义务提供给各个客户端良好的开发文档,以方便对接,减少沟通时间,提高开发效率:对于开发人员来说,编写接口文档 ...

  2. C#语法——泛型的多种应用

    本篇文章主要介绍泛型的应用. 泛型是.NET Framework 2.0 版类库就已经提供的语法,主要用于提高代码的可重用性.类型安全性和效率. 泛型的定义 下面定义了一个普通类和一个泛型类,我们可以 ...

  3. .NET ClrProfiler ILRewrite 商业级APM原理

    Demo:https://github.com/caozhiyuan/ClrProfiler.Trace 背景 为了实现自动.无依赖地跟踪分析应用程序性能(达到商业级APM效果),作者希望能动态修改应 ...

  4. 使用SSL安全证书和nginx配置将域名HTTPS化

    一.在阿里云后台申请免费版证书: 二.在域名解析里面添加记录: 三.提交审核: 四.等待审核通过后,下载nginx证书: 五.按照文档修改nginx配置文件: https://help.aliyun. ...

  5. 用VS2017进行移动开发(C#、VB.NET)——OfflineCameraButton控件,Smobiler移动开发

    OfflineCameraButton控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个OfflineCam ...

  6. EF基于方法的查询语法

    实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发人员 ...

  7. QQ登录的那些坑

    这几天在项目上面实现qq登录的功能,当功能做好后发现,同一个qq号登录之后腾讯返回的openid并不一样....(天啦噜啊~)然后查询文档以及咨询客服才知道注册申请时是有一个固定的套路的(不得不说,如 ...

  8. Flask实战第3天:url_for使用

    我们之前是通过url来找到对应的视图函数 /     =>    hello_world 那么url_for则是通过视图函数找到url hello world  =>  / 演示如下 #c ...

  9. Easyui datagrid combobox输入框下拉(取消)选值和编辑已选值处理

    datagrid combobox输入框下拉(取消)选值和编辑已选值处理 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3   需求场景 如下,在datagri ...

  10. Parcelable 小记

    Parcelable 类,接口类,用于数据的序列化封装.常见的Bundle,Intent类都实现了该类.   实现该类需要实现writeToParcel和describeContents方法,最后还需 ...