lnmp編譯安裝

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

1.準(zhǔn)備工作:

1)把所有的軟件安裝在/data/web,源碼包放在/data/software/,數(shù)據(jù)放在/data/data,日志文件放在/data/wwwlogs,項(xiàng)目放在/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)創(chuàng)建www所屬組及用戶

/usr/sbin/groupadd www

/usr/sbin/useradd -g www www

4) 設(shè)置系統(tǒng)資源限制

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)啟動(dòng)nginx? ?

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

報(bào)錯(cuò):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)創(chuàng)建mysql所屬組及用戶:

groupadd mysql

useradd -r -g mysql mysql

3)改變mysql軟件所屬組:

cd /data/web

chown -R mysql:mysql mysql

4)初始化數(shù)據(jù)庫:

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)數(shù)據(jù)庫配置文件:

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

#修改文件中的兩個(gè)變更值

basedir=/data/web/mysql

datadir=/data/web/mysql/data

6)添加mysql環(huán)境變量

vi /etc/profile

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

exportMYSQL_HOME="/data/web/mysql"

exportPATH="$PATH:$MYSQL_HOME/bin"

#保存退出

source /etc/profile

7)添加自啟動(dòng)服務(wù)

chkconfig --add mysql

chkconfig mysql on

8)啟動(dòng)mysql

service mysql start

出現(xiàn)問題: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

#會(huì)提示:Starting MySQL.. SUCCESS!

#查看mysql服務(wù):

ps aux|grep mysql

9)登錄mysql及改密碼與配置遠(yuǎn)程訪問

#修改root用戶密碼

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

#登錄mysql,需要輸入密碼

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


#允許root用戶遠(yuǎn)程訪問

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

mysql>FLUSH PRIVILEGES;#刷新權(quán)限

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依賴安裝,順序執(zhí)行:

a)創(chuàng)建目錄

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: 錯(cuò)誤:‘gets’未聲明(不在函數(shù)內(nèi)) 的問題

cd srclib/

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

cd ../

make && make install

h)添加編譯時(shí)使用的動(dòng)態(tài)鏈接庫的路徑

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

#備注:較之前的版本,去除的選項(xiàng)(不全)

--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隨系統(tǒng)自啟動(dòng)。

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

#更改php-fpm啟動(dòng)用戶

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

#把下面兩行

user = nobody

group = nobody

#改為:

user = www

group = www

#啟動(dòng)php

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

#查看進(jìn)程ps aux | grep php-fpm

3)php擴(kuò)展安裝:

a)yaf擴(kuò)展安裝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擴(kuò)展安裝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擴(kuò)展安裝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擴(kuò)展安裝swoole.so

swoole擴(kuò)展安裝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)使擴(kuò)展生效:

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)其他擴(kuò)展安裝類似


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看到一個(gè)bin的目錄,里面包括了以下文件:

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

其中:

redis-server:Redis服務(wù)器的daemon啟動(dòng)程序

redis-cli:Redis命令行操作工具?;蛘咄ㄟ^telnet進(jìn)行純文本協(xié)議操作

redis-benchmark:Redis性能測(cè)試工具,測(cè)試Redis在你的系統(tǒng)及你的配置下的讀寫性能


3)將redis做成一個(gè)服務(wù)

#必須將其復(fù)制到/etc/rc.d/init.d的目錄下,將redis_init_script復(fù)制到/etc/rc.d/init.d/,同時(shí)易名為redis。

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

#如果這時(shí)添加注冊(cè)服務(wù):

chkconfig --add redis

#將報(bào)以下錯(cuò)誤:

redis服務(wù)不支持chkconfig

#為此,我們需要更改redis腳本。

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

#!/bin/sh

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

#同時(shí)修改

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是記錄一段時(shí)間內(nèi)的操作,一盤的配置是一段時(shí)間內(nèi)操作超過多少次就持久化。

aof可以實(shí)現(xiàn)每次操作都持久化。

這里我們使用aof。

配置方式,打開redis的配置文件。找到appendonly。默認(rèn)是appendonly no。改成appendonly yes。

redis.conf參數(shù):

daemonize:是否以后臺(tái)daemon方式運(yùn)行?

daemonize yes后臺(tái)運(yùn)行

pidfile:pid文件位置

port:監(jiān)聽的端口號(hào)

timeout:請(qǐng)求超時(shí)時(shí)間

loglevel:log信息級(jí)別

logfile:log文件位置

databases:開啟數(shù)據(jù)庫的數(shù)量

save *:保存快照的頻率,第一個(gè)表示多長(zhǎng)時(shí)間(秒級(jí)),第三個(gè)*表示執(zhí)行多少次寫操作。在一定時(shí)間內(nèi)執(zhí)行一定數(shù)量的寫操作時(shí),自動(dòng)保存快照??稍O(shè)置多個(gè)條件。

rdbcompression:是否使用壓縮

dbfilename:數(shù)據(jù)快照文件名(只是文件名,不包括目錄)

dir:數(shù)據(jù)快照的保存目錄(這個(gè)是目錄)

appendonly:是否開啟appendonlylog,開啟的話每次寫操作會(huì)記一條log,這會(huì)提高數(shù)據(jù)抗風(fēng)險(xiǎn)能力,但影響效率。

appendfsync:appendonlylog如何同步到磁盤(三個(gè)選項(xiàng),分別是每次寫都強(qiáng)制調(diào)用fsync、每秒啟用一次fsync、不調(diào)用fsync等待系統(tǒng)自己同步)

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

這樣,redis服務(wù)腳本指定的CONF就存在了。默認(rèn)情況下,Redis未啟用認(rèn)證,可以通過開啟6379.conf的requirepass 指定一個(gè)驗(yàn)證密碼。

6)注冊(cè)redis服務(wù)

chkconfig --add redis

chkconfig redis on

7)加到環(huán)境變量中

#將Redis的命令所在目錄添加到系統(tǒng)參數(shù)PATH中

vi /etc/profile

#在最后行追加:

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

#然后馬上應(yīng)用這個(gè)文件:

./etc/profile

#或者

source/etc/profile

#這樣就可以直接調(diào)用redis-cli的命令了,如下所示:

redis-cli

redis127.0.0.1:6379> auth mypasswd

OK

redis127.0.0.1:6379>

8)啟動(dòng)redis服務(wù)

a)直接啟動(dòng)

./redis-server ./redis.conf &

#如果更改了端口,使用`redis-cli`客戶端連接時(shí),也需要指定端口,例如:

redis-cli -p 6380

b)使用Redis啟動(dòng)腳本設(shè)置開機(jī)自啟動(dòng)(推薦)

service redis start

c)關(guān)閉之前備份

#有密碼

./redis-cli -a your_passwd save

#無密碼

./redis-cli save

d)停止

#使用客戶端redis-cli shutdown

#因?yàn)镽edis可以妥善處理SIGTERM信號(hào),所以直接kill -9也是可以的

kill -9 PID

#指定密碼關(guān)閉

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

e)備份的方式

#在從服務(wù)器上執(zhí)行下列命令:

redis-cli save

#關(guān)閉redis服務(wù)器

redis-cli shutdown

#然后,拷貝數(shù)據(jù)目錄下的rdb文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容