lnmp编译安装

(centos7+nginx1.9+mysql5.6+php7)

1.准备工作:

1)把所有的软件安装在/data/web,源码包放在/data/software/,数据放在/data/data,日志文件放在/data/wwwlogs,项目放在/data/wwwroot上

mkdir -p /data/web/

mkdir -p /data/software/

mkdir -p /data/data/

mkdir -p /data/wwwlogs/

mkdir -p /data/wwwroot/

2)安装源码包所需要的依赖包 (yum安装前  yum update)

yum -y install wget openssl* gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers make gd gd2 gd-devel gd2-devel libaio

3)创建www所属组及用户

/usr/sbin/groupadd www

/usr/sbin/useradd -g www www

4) 设置系统资源限制

ulimit -SHn 65535

2.Nginx安装:

1)pcre源码安装

cd /data/software/

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

tar zxvf pcre-8.38.tar.gz

cd pcre-8.38

./configure --prefix=/data/web/pcre

make && make install

2)nginx源码安装:

cd /data/software/

wget http://nginx.org/download/nginx-1.9.9.tar.gz

tar zxvf nginx-1.9.9.tar.gz

cd nginx-1.9.9

./configure --user=www --group=www --prefix=/data/web/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/data/software/pcre-8.38 --with-http_realip_module --with-http_image_filter_module

make && make install

3)启动nginx   

/data/web/nginx/sbin/nginx -s reload

报错:nginx: [error] open() "/data/web/nginx/logs/nginx.pid" failed (2: No such file or directory)

解决办法:/data/web/nginx/sbin/nginx -c /data/web/nginx/conf/nginx.conf

3.Mysql安装:

1)mysql源码安装:

cd /data/software/

wget http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz

tar zxvf mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz

mv mysql-5.6.12-linux-glibc2.5-x86_64 /data/web/mysql

2)创建mysql所属组及用户:

groupadd mysql

useradd -r -g mysql mysql

3)改变mysql软件所属组:

cd /data/web

chown -R mysql:mysql mysql

4)初始化数据库:

mkdir -p /data/data/mysql/data

cd /data/data

chown -R mysql:mysql mysql

su mysql

/data/web/mysql/scripts/mysql_install_db --user=mysql --basedir=/data/web/mysql --datadir=/data/data/mysql/data

exit

5)数据库配置文件:

cp /data/web/mysql/support-files/my-default.cnf /etc/my.cnf

cp /data/web/mysql/support-files/mysql.server /etc/init.d/mysql

vi /etc/init.d/mysql

#修改文件中的两个变更值

basedir=/data/web/mysql

datadir=/data/web/mysql/data

6)添加mysql环境变量

vi /etc/profile

#最后一行添加以下两行:

exportMYSQL_HOME="/data/web/mysql"

exportPATH="$PATH:$MYSQL_HOME/bin"

#保存退出

source /etc/profile

7)添加自启动服务

chkconfig --add mysql

chkconfig mysql on

8)启动mysql

service mysql start

出现问题:Starting MySQL...The server quit without updating PID file [FAILED]eb/mysql/data/iZwz9dizolap93pvpp5cvbZ.pid).

解决办法

重新配置vi /etc/my.cnf 加入

#在[mysqld]中添加:

datadir = /data/web/mysql/data

log-error = /data/wwwlogs/mysql/data/error.log

pid-file = /data/web/mysql/data/mysql.pid

user = mysql

tmpdir = /tmp

#保存退出

/data/web/mysql/scripts/mysql_install_db --user=mysql --basedir=/data/web/mysql --datadir=/data/web/mysql/data --pid-file=/data/web/mysql/data/mysql.pid --tmpdir=/tmp

#会提示:Starting MySQL.. SUCCESS!

#查看mysql服务:

ps aux|grep mysql

9)登录mysql及改密码与配置远程访问

#修改root用户密码

/data/web/mysql/bin/mysqladmin -u root password 'youpasswod'

#登录mysql,需要输入密码

/data/web/mysql/bin/mysql -u root -p


#允许root用户远程访问

mysql>GRANT ALL PRIVILEGES ON *.* TO'kexun'@'%'IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;#刷新权限

mysql>exit

10)忘记root密码后,如何找回密码

/data/web/mysql/bin/bin/mysqld_safe --basedir=/data/web/mysql --datadir=/data/data/mysql/data --skip-grant-tables & /data/web/mysql/bin/bin/mysql -u root mysql

UPDATE user SET password=PASSWORD("new_password") WHERE user='root';

FLUSH PRIVILEGES;

4.PHP安装:

1)php依赖安装,顺序执行:

a)创建目录

mkdir -p /data/web/libs/

b)jpeg源码安装

cd /data/software/

wget http://www.ijg.org/files/jpegsrc.v9.tar.gz

tar zxvf jpegsrc.v9.tar.gz

cd jpeg-9

./configure --prefix=/data/web/libs --enable-shared --enable-static

make && make install

c)libpng源码安装

cd /data/software/

wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.2.tar.gz

tar zxvf libpng-1.6.2.tar.gz

cd libpng-1.6.2

./configure --prefix=/data/web/libs

make && make install

d)freetype源码安装

cd /data/software/

wget https://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.gz

tar zxvf freetype-2.4.12.tar.gz

cd freetype-2.4.12/

./configure --prefix=/data/web/libs

make && make install

e)libmcrypt源码安装

cd /data/software/

wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz

tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure --prefix=/data/web/libs

make && make install

cd libltdl/

./configure --prefix=/data/web/libs --enable-ltdl-install

make && make install

f)mhash源码安装

cd /data/software/

wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz

tar zxvf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9

./configure --prefix=/data/web/libs

make && make install

g)libiconv源码安装

cd /data/software/

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

tar -zxvf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure --prefix=/data/web/libs

make && make install

#解决./stdio.h:1010:1: 错误:‘gets’未声明(不在函数内) 的问题

cd srclib/

sed -i -e '/gets is a security/d' ./stdio.in.h

cd ../

make && make install

h)添加编译时使用的动态链接库的路径

vi /etc/ld.so.conf

#添加一行

/data/web/libs/lib

#生效

ldconfig

i)mcrypt源码安装

cd /data/software/

wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz

tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

export LDFLAGS="-L/data/web/libs/lib -L/usr/lib"

export CFLAGS="-I/data/web/libs/include -I/usr/include"

touch malloc.h

./configure --prefix=/data/web/libs --with-libmcrypt-prefix=/data/web/libs

make && make install

2)php编译安装:

a)php7源码安装

cd /data/software

wget http://cn2.php.net/distributions/php-7.0.6.tar.gz

tar xzvf php-7.0.6.tar.gz

cd php-7.0.6

#./configure --help

./configure --prefix=/data/web/php7 --with-config-file-path=/data/web/php7/etc --with-mysqli=/data/web/mysql/bin/mysql_config --with-iconv=/data/web/libs/ --with-freetype-dir=/data/web/libs --with-jpeg-dir=/data/web/libs --with-png-dir=/data/web/libs --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/data/web/libs --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --with-bz2 --enable-soap --enable-opcache --with-pdo-mysql --enable-maintainer-zts --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --without-pear --with-gettext --enable-fpm --enable-opcache=no

#备注:较之前的版本,去除的选项(不全)

--with-mysql

--with-mime-magic

--enable-fastcgi

--enable-force-CGI-redirect

make && make install

cp php.ini-development /data/web/php7/etc/php.ini

cp ./sapi/fpm/php-fpm.conf /data/web/php7/etc/php-fpm.conf

cp /data/web/php7/etc/php-fpm.d/www.conf.default /data/web/php7/etc/php-fpm.d/www.conf

#下面是为了php-fpm随系统自启动。

cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

#更改php-fpm启动用户

vi /data/web/php7/etc/php-fpm.d/www.conf

#把下面两行

user = nobody

group = nobody

#改为:

user = www

group = www

#启动php

/data/web/php7/sbin/php-fpm

#查看进程ps aux | grep php-fpm

3)php扩展安装:

a)yaf扩展安装yaf.so

cd /data/software

wget http://pecl.php.net/get/yaf-3.0.2.tgz

tar zxvf yaf-3.0.2.tgz

cd yaf-3.0.2

/data/web/php7/bin/phpize

./configure --with-php-config=/data/web/php7/bin/php-config

make && make install

b)redis扩展安装redis.so

cd /data/software

wget https://github.com/edtechd/phpredis/archive/php7.zip

yum -y install unzip(如果没安装unzip的可以用yum安装)

unzip php7.zip

cd phpredis-php7

/data/web/php7/bin/phpize

./configure --with-php-config=/data/web/php7/bin/php-config

make && make install

c)msgpack扩展安装msgpack.so

cd /data/software

wget http://pecl.php.net/get/msgpack-2.0.1.tgz

tar zxvf msgpack-2.0.1.tgz

cd msgpack-2.0.1

/data/web/php7/bin/phpize

./configure --with-php-config=/data/web/php7/bin/php-config

make && make install

d)swoole扩展安装swoole.so

swoole扩展安装swoole.so

cd /data/software

wget http://pecl.php.net/get/swoole-1.8.4.tgz

tar zxvf swoole-1.8.4.tgz

cd swoole-1.8.4

/data/web/php7/bin/phpize

./configure --with-php-config=/data/web/php7/bin/php-config

make && make install

e)使扩展生效:

vi /data/web/php7/etc/php.ini

#打开 /data/web/php7/etc/php.ini 查找 ; extension_dir = "ext"

#更改extension_dir的值,此值视具体情况而定

extension_dir ="/Data/apps/php7/lib/php/extensions/no-debug-zts-20151012/"

#在其后增加一行:

extension ="yaf.so"

extension ="swoole.so"

extension ="redis.so"

extension ="msgpack.so"

f)其他扩展安装类似


5.Redis安装:

1)Redis安装目录

mkdir -p /data/web/redis

2)redis源码安装

cd /data/software

wget http://download.redis.io/releases/redis-3.0.7.tar.gz

cd redis-3.0.7

make PREFIX=/data/web/redis install       #安装到指定目录中


注:在安装redis成功后,你将可以在/Data/apps/redis看到一个bin的目录,里面包括了以下文件:

redis-benchmark      redis-check-aof    redis-check-dump     redis-cli       redis-server

其中:

redis-server:Redis服务器的daemon启动程序

redis-cli:Redis命令行操作工具。或者通过telnet进行纯文本协议操作

redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能


3)将redis做成一个服务

#必须将其复制到/etc/rc.d/init.d的目录下,将redis_init_script复制到/etc/rc.d/init.d/,同时易名为redis。

cp /data/software/redis-3.0.7/utils/redis_init_script /etc/rc.d/init.d/redis

#如果这时添加注册服务:

chkconfig --add redis

#将报以下错误:

redis服务不支持chkconfig

#为此,我们需要更改redis脚本。

vi /etc/rc.d/init.d/redis

#!/bin/sh

#chkconfig: 2345 80 90 #添加这一行

#同时修改

EXEC=/data/web/redis/bin/redis-server

CLIEXEC=/data/web/redis/bin/redis-cli

.将redis配置文件拷贝到/etc/redis/${REDISPORT}.conf

mkdir /etc/redis

cp /data/software/redis-3.0.7/redis.conf /etc/redis/6379.conf

cp /data/software/redis-3.0.7/redis.conf /data/web/redis/bin/redis.conf

#去掉行前的注释,并修改密码为所需的密码,保存文件

vi /etc/redis/6379.conf

#requirepass foobared

requirepass myRedis

5)redis的一些配置

redis的持久化有rdb和aof两种。

rdb是记录一段时间内的操作,一盘的配置是一段时间内操作超过多少次就持久化。

aof可以实现每次操作都持久化。

这里我们使用aof。

配置方式,打开redis的配置文件。找到appendonly。默认是appendonly no。改成appendonly yes。

redis.conf参数:

daemonize:是否以后台daemon方式运行 

daemonize yes后台运行

pidfile:pid文件位置

port:监听的端口号

timeout:请求超时时间

loglevel:log信息级别

logfile:log文件位置

databases:开启数据库的数量

save *:保存快照的频率,第一个表示多长时间(秒级),第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。

rdbcompression:是否使用压缩

dbfilename:数据快照文件名(只是文件名,不包括目录)

dir:数据快照的保存目录(这个是目录)

appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。

appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

slaveof :主从配置,在redis-slave上配置master的ip port,即可

这样,redis服务脚本指定的CONF就存在了。默认情况下,Redis未启用认证,可以通过开启6379.conf的requirepass 指定一个验证密码。

6)注册redis服务

chkconfig --add redis

chkconfig redis on

7)加到环境变量中

#将Redis的命令所在目录添加到系统参数PATH中

vi /etc/profile

#在最后行追加:

export PATH="$PATH:/data/web/redis/bin"

#然后马上应用这个文件:

./etc/profile

#或者

source/etc/profile

#这样就可以直接调用redis-cli的命令了,如下所示:

redis-cli

redis127.0.0.1:6379> auth mypasswd

OK

redis127.0.0.1:6379>

8)启动redis服务

a)直接启动

./redis-server ./redis.conf &

#如果更改了端口,使用`redis-cli`客户端连接时,也需要指定端口,例如:

redis-cli -p 6380

b)使用Redis启动脚本设置开机自启动(推荐)

service redis start

c)关闭之前备份

#有密码

./redis-cli -a your_passwd save

#无密码

./redis-cli save

d)停止

#使用客户端redis-cli shutdown

#因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的

kill -9 PID

#指定密码关闭

/data/web/redis/bin/redis-cli -a your_passwd shutdown

e)备份的方式

#在从服务器上执行下列命令:

redis-cli save

#关闭redis服务器

redis-cli shutdown

#然后,拷贝数据目录下的rdb文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容