Centos7 源码编译安装Nginx+PHP7+Mariadb+Memcached+Redis服务器

系统信息:

[jason@localhost ~]$ uname -a
Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[jason@localhost ~]$ 
一、准备工作

1.1 安装或更新gcc gcc-c++

因为我安装的Centos是绝对纯洁滴。啥也没有。没辙了。只有先安装个编译器了。

[jason@localhost ~]$ sudo yum install gcc gcc-c++ -y

1.2 创建需要使用的目录

source 是用来存放源码的文件夹。package是用来存放编译后的库文件。lnmp是我们真正需要的东西才放里面。(nginx+mariadb+memcached+php7+redis)

[jason@localhost ~]$ mkdir /source /package /lnmp
mkdir: 无法创建目录"/lnmp": 权限不够
[jason@localhost ~]$ ls
package  source
[jason@localhost ~]$ sudo mkdir /lnmp /source /package
[jason@localhost ~]$ 

二、开始安装(nginx篇)

2.1 解压pcre

[官方网站] http://www.pcre.org/

命令流程:

[jason@localhost ~]$ cd /source/
[jason@localhost source]$ ls
[jason@localhost source]$ sudo wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
-bash: wget: 未找到命令
[jason@localhost source]$ sudo yum install -y wget
[jason@localhost source]$ sudo tar -zxvf pcre-8.39.tar.gz

说明:不需要编译,只需要解压就行。

2.2 解压zlib

[官方网站] http://zlib.net/

命令流程:

[jason@localhost source]$ cd /source
[jason@localhost source]$ sudo wget http://zlib.net/zlib-1.2.11.tar.gz
[jason@localhost source]$ sudo tar -zxvf zlib-1.2.11.tar.gz

说明:不需要编译,只需要解压就行。

2.3 安装nginx

[官方网站] http://nginx.org/

命令流程:

[jason@localhost source]$ pwd
/source
[jason@localhost source]$ sudo wget http://nginx.org/download/nginx-1.10.2.tar.gz
[jason@localhost source]$ sudo tar -zxvf nginx-1.10.2.tar.gz
[jason@localhost source]$ cd nginx-1.10.2
[jason@localhost nginx-1.10.2]$ sudo ./configure --prefix=/lnmp/nginx --with-pcre=/source/pcre-8.39 --with-zlib=/source/zlib-1.2.11
[jason@localhost nginx-1.10.2]$ sudo make
[jason@localhost nginx-1.10.2]$ sudo make  install

--with-pcre:用来设置pcre的源码目录。
 --with-zlib:用来设置zlib的源码目录。
 因为编译nginx需要用到这两个库的源码。

小章总结:

此处告一段落,nginx安装完成。我们可以先满足下自己的欲望心。打开nginx服务看看Hello World吧。

启动nginx

[jason@localhost nginx-1.10.2]$ sudo /lnmp/nginx/sbin/nginx 

启动后可以再浏览器中打开页面,会显示nginx默认页面。

不过CentOS7中不再使用iptables,而是默认使用firewalld防火墙,我们通常使用的端口一般都被墙掉了,firewalld中可以通过以下两个命令查看和开发端口。

firewall-cmd --query-port=80/tcp 
//查看80端口是否被墙掉  
firewall-cmd --add-port=80/tcp
//开放80端口。
[jason@localhost nginx-1.10.2]$ sudo firewall-cmd --query-port=80/tcp
no
[jason@localhost nginx-1.10.2]$ sudo fiewall-cmd -add-port=80/tcp
sudo:fiewall-cmd:找不到命令
[jason@localhost nginx-1.10.2]$ sudo firewall-cmd -add-port=80/tcp
usage: see firewall-cmd man page
firewall-cmd: error: unrecognized arguments: -add-port=80/tcp
[jason@localhost nginx-1.10.2]$ sudo firewall-cmd --add-port=80/tcp
success
[jason@localhost nginx-1.10.2]$ sudo firewall-cmd --query-port=80/tcp
yes
[jason@localhost nginx-1.10.2]$ 

三、开始安装(php篇)

3.1 安装libxml2

[官方网站] http://xmlsoft.org/

命令流程:

[jason@localhost nginx-1.10.2]$ cd /source/
[jason@localhost source]$ sudo wget ftp://xmlsoft.org/libxml2/libxml2-2.9.4.tar.gz
[jason@localhost source]$ sudo tar -zxvf libxml2-2.9.4.tar.gz
[jason@localhost libxml2-2.9.4]$ sudo ./configure --prefix=/package/libxml2 --with-python=no 
[jason@localhost libxml2-2.9.4]$ sudo make
[jason@localhost libxml2-2.9.4]$ sudo make install

这里--with-python=no是

3.2 安装php

[官方网站] http://php.net/

命令流程:

[jason@localhost libxml2-2.9.4]$ cd /source/
[jason@localhost source]$ sudo wget http://cn2.php.net/distributions/php-7.1.0.tar.gz
[jason@localhost source]$ sudo tar -zxvf php-7.1.0.tar.gz 
[jason@localhost source]$ cd php-7.1.0
[jason@localhost php-7.1.0]$ sudo ./configure --prefix=/lnmp/php7 --with-libxml-dir=/package/libxml2 --with-config-file-path=/lnmp/php7/etc --enable-mbstring --enable-fpm --with-mysqli 
[jason@localhost php-7.1.0]$ sudo make
[jason@localhost php-7.1.0]$ sudo make install

四、开始安装(mariadb篇)

4.1 安装cmake

[官方网站] https://cmake.org/

命令流程:

[jason@localhost php-7.1.0]$ cmake
-bash: cmake: 未找到命令
[jason@localhost php-7.1.0]$ cd ../
[jason@localhost source]$ sudo wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz
[jason@localhost source]$ sudo tar -zxvf cmake-3.7.2.tar.gz 
[jason@localhost source]$ cd cmake-3.7.2
[jason@localhost cmake-3.7.2]$ sudo ./configure --prefix=/package/cmake
[jason@localhost cmake-3.7.2]$ sudo make
[jason@localhost cmake-3.7.2]$ sudo make install
[jason@localhost cmake-3.7.2]$ sudo vim /etc/rc.local 
[jason@localhost cmake-3.7.2]$ export PATH=/package/cmake/bin:$PATH

4.2 安装ncurses

[官方网站] http://ftp.gnu.org/gnu/ncurses/

命令流程:

[jason@localhost cmake-3.7.2]$ cd ../
[jason@localhost source]$ sudo wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
[jason@localhost source]$ sudo tar -zxvf ncurses-6.0.tar.gz 
[jason@localhost source]$ cd ncurses-6.0
[jason@localhost ncurses-6.0]$ sudo ./configure --prefix=/package/ncurese
[jason@localhost ncurses-6.0]$ sudo make
[jason@localhost ncurses-6.0]$ sudo make install

4.3 安装mariadb

[官方网站] https://mariadb.org/

命令流程:

[jason@localhost ncurses-6.0]$ cd ../
[jason@localhost ncurses-6.0]$ sudo su
[root@localhost source]# wget http://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-5.5.54/source/mariadb-5.5.54.tar.gz

[root@localhost source]# tar -zxvf mariadb-5.5.54.tar.gz 

[root@localhost mariadb-5.5.54]# sudo useradd -M -s /sbin/nologin mysql
[root@localhost mariadb-5.5.54]# sudo mkdir -p /data/mariadb
[root@localhost mariadb-5.5.54]# sudo chown -R mysql.mysql /data/mariadb
[root@localhost source]# cd mariadb-5.5.54

[root@localhost mariadb-5.5.54]# yum install -y bison ncurses ncurses-devel zlib-devel
[root@localhost mariadb-5.5.54]# cmake . -DCMAKE_INSTALL_PREFIX=/lnmp/mariadb -DMYSQL_DATADIR=/data/mariadb -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DWITH_EXTRA_CHARSETS=1 -DWITH_SSL=bundled -DWITH_ZLIB=bundled
[root@localhost mariadb-5.5.54]# make &&make install

2. 初始化数据库

[root@localhost mariadb-5.5.54]# cd /lnmp/mariadb/
[root@localhost mariadb]# scripts
scripts
[root@localhost mariadb]# scripts/mysql_install_db --datadir=/data/mariadb/ --user=mysql

3. 提供脚本

[root@localhost mariadb]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mariadb]# chmod +x /etc/rc.d/init.d/mysqld 
[root@localhost mariadb]# chkconfig --add mysqld
[root@localhost mariadb]# chkconfig mysqld on
[root@localhost mariadb]# cp support-files/my-large.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@localhost mariadb]# vim /etc/my.cnf

#vim /etc/my.cnf 编辑配置文件[mysqld]段填写如下内容
[mysqld]
datadir = /mydata/data  数据目录
thread_concurrency = 4  设置线程数=核心数x2
 
或者:
                thread_concurrency = 2
                datadir = /mydata/data
                innodb_file_per_table = on
                skip_name_resolve = on

4.启动数据库

service mysqld start
ss -ntl | grep :3306

5.初始化数据库 

[root@localhost mariadb]# /lnmp/mariadb/bin/mysql_secure_installation 

之后开始初始化

/lnmp/mariadb/bin/mysql_secure_installation:行379: find_mysql_client: 未找到命令

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@localhost mariadb]# 

二、开始配置(nginx篇)

2.1 修改nginx.conf

[root@localhost nginx]# vim conf/nginx.conf
[root@localhost nginx]# pwd
/lnmp/nginx

2.2 找到如下内容,并删除红色标记的字符

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root

2.3 输出phpinfo文件

echo "<?php echo phpinfo(); ?>" > /lnmp/nginx/html/index.php

2.4 启动nginx

[root@localhost nginx]# /lnmp/nginx/sbin/nginx -s reload

小章总结:

完成上面的修改就可以让nginx来转发php的动态脚本请求。

不过目前还不能打开php文件,因为还没有打开php-fpm。

我们继续向下看。 

三、开始配置(php-fpm)

3.1 copy默认配置文件

[root@localhost nginx]# cd /source/php-7.1.0
[root@localhost php-7.1.0]# cp php.ini-development /lnmp/php7/etc/php.ini
[root@localhost php-7.1.0]# cd /lnmp/php7/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# cd /lnmp/php7/etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf

3.2 运行php-fpm

[root@localhost php-fpm.d]# /lnmp/php7/sbin/php-fpm -c /lnmp/php7/etc/php.ini 

二、常用命令

nginx常用命令

启动nginx

# /lnmp/nginx/sbin/nginx
 

重启nginx

# /lnmp/nginx/sbin/nginx -s reload
 

关闭nginx

# /lnmp/nginx/sbin/nginx -s stop
 

php-fpm常用命令

启动php-fpm

# /lnmp/php7/sbin/php-fpm -c /lnmp/php7/etc/php.ini
 

重启php-fpm

# kill -SIGUSR2 `cat /lnmp/php7/var/run/php-fpm.pid`
 

关闭php-fpm

# kill -SIGINT `cat /lnmp/php7/var/run/php-fpm.pid`
信号解释:
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块

[root@localhost php7]# ll /source/php-7.1.0/sapi/fpm/
config.m4           Makefile.frag       php-fpm.service.in
CREDITS             php-fpm             status.html
fpm/                php-fpm.8           status.html.in
init.d.php-fpm      php-fpm.8.in        tests/
init.d.php-fpm.in   php-fpm.conf        www.conf
.libs/              php-fpm.conf.in     www.conf.in
LICENSE             php-fpm.service     
[root@localhost php7]# cp /source/php-7.1.0/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 
cp:是否覆盖"/etc/init.d/php-fpm"? y
[root@localhost php7]# chmod +x /etc/init.d/php-fpm 
[root@localhost php7]# service php-fpm restart

[root@localhost php7]# killall php-fpm 
bash: killall: 未找到命令
[root@localhost php7]# yum install psmisc -y
 

Centos7 编译配置Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

当然memcached分为服务端和客户端。服务端用来存放缓存,客户端用来操作缓存。

客户端有两种常见的实现方式。

第一种是用php代码根据服务端的通讯规则自己写一个。

第二种是安装php扩展库(php-memcached)。

二、memcached(服务端篇)

首先先安装memcached依赖库libevent。

2.1 安装libevent

[官方网站] http://libevent.org/

命令流程:

[root@localhost source]# cd /source
[root@localhost source]# wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
[root@localhost source]# tar -zxvf libevent-2.0.22-stable.tar.gz 
[root@localhost source]# cd libevent-2.0.22-stable
[root@localhost libevent-2.0.22-stable]# ./configure --prefix=/package/libevent
[root@localhost libevent-2.0.22-stable]# make &&make install

2.2 安装memcached

[官方网站] http://memcached.org/

命令流程:

[root@localhost source]# wget http://memcached.org/files/memcached-1.4.34.tar.gz
[root@localhost source]# tar -zxvf memcached-1.4.34.tar.gz 
[root@localhost source]# cd memcached-1.4.34
[root@localhost memcached-1.4.34]# ./configure --prefix=/lnmp/memcached --with-libevent=/package/libevent/
[root@localhost memcached-1.4.34]# make &&make install

本章总结:

通过以上操作就很简单的把memcached服务端编译好了。这时候就可以打开服务端进行工作了。

[root@localhost memcached-1.4.34]# /lnmp/memcached/bin/memcached -d -m 64 -l 127.0.0.1 -p 11211 -u root -c 1024 –P /tmp/memcached.pid


启动参数说明:
-d  选项是启动一个守护进程。
-m  分配给Memcache使用的内存数量,单位是MB,默认64MB。
-l  监听的IP地址。(默认:INADDR_ANY,所有地址)
-p  设置Memcache的TCP监听的端口,最好是1024以上的端口。
-u  运行Memcache的用户,如果当前为root的话,需要使用此参数指定用户。
-c  选项是最大运行的并发连接数,默认是1024。
-P  设置保存Memcache的pid文件。

三、memcached(客户端篇)

php-memcached

这种客户端比较麻烦了,他是生成php的扩展库文件memcached.so。

首先先安装memcached依赖库zlib、libmemcached。

3.1 安装libmemcached

[官方网站] http://libmemcached.org/

命令流程:

[root@localhost source]# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
[root@localhost source]# tar -zxvf libmemcached-1.0.18.tar.gz 
[root@localhost source]# cd libmemcached-1.0.18
[root@localhost libmemcached-1.0.18]# ./configure --prefix=/package/libmemcached
[root@localhost libmemcached-1.0.18]# make &&make install

3.2 安装zlib

[官方网站] http://zlib.net/

命令流程:

[root@localhost zlib-1.2.11]# wget http://zlib.net/zlib-1.2.8.tar.gz
[root@localhost zlib-1.2.11]# tar -zxvf zlib-1.2.8.tar.gz
[root@localhost zlib-1.2.11]# ./configure --prefix=/package/zlib
[root@localhost zlib-1.2.11]# make &&make install

3.3 安装m4

[官方网站] http://www.gnu.org/software/m4/m4.html

命令流程:

[root@localhost source]# wget http://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz
[root@localhost source]# tar -zxvf m4-1.4.17.tar.gz 
[root@localhost source]# cd m4-1.4.17
[root@localhost m4-1.4.17]# ./configure --prefix=/package/m4
[root@localhost m4-1.4.17]# make &&make install
[root@localhost m4-1.4.17]# export PATH=/package/m4/bin:$PATH

3.4 安装php-memcached

[官方网站] http://pecl.php.net/package/memcached

命令流程:

[root@localhost source]# wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
[root@localhost source]# unzip
bash: unzip: 未找到命令
[root@localhost source]# yum install -y unzip
[root@localhost source]# unzip php7.zip 
[root@localhost source]# cd php-memcached-php7/
[root@localhost php-memcached-php7]# yum install autoconf -y
[root@localhost php-memcached-php7]# /lnmp/php7/bin/phpize 
[root@localhost php-memcached-php7]# ./configure  --with-php-config=/lnmp/php7/bin/php-config  --with-zlib-dir=/package/zlib  --with-libmemcached-dir=/package/libmemcached  --disable-memcached-sasl

[root@localhost php-memcached-php7]# make &&make install

Installing shared extensions:     /lnmp/php7/lib/php/extensions/no-debug-non-zts-20160303/

Centos7 编译配置Redis

四 安装redis

[官方网站] https://redis.io/download

命令流程:

[root@localhost php7]# pwd
/lnmp/php7
[root@localhost php7]# cd /source/
[root@localhost source]# wget http://download.redis.io/releases/redis-3.2.6.tar.gz
[root@localhost source]# tar -zxvf redis-3.2.6.tar.gz 
[root@localhost source]# make 
[root@localhost source]# make install
[root@localhost source]# cp -rf redis-3.2.6 /lnmp/redis
[root@localhost source]# /lnmp/redis/src/redis-server &
[1] 106878
设置防火墙(没开启防火墙的可以跳过)
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload 
[root@localhost source]# firewall-cmd --zone=public --add-port=11211/tcp --permanent
success
[root@localhost source]# firewall-cmd --zone=public --add-port=443/tcp --permanent
success
[root@localhost source]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost source]# firewall-cmd --reload
success

安装PHP-redis模块 php7

[root@localhost source]# wget https://github.com/phpredis/phpredis/archive/php7.zip -O php7redis.zip
[root@localhost source]# unzip php7redis.zip 
Archive:  php7redis.zip
[root@localhost phpredis-php7]# phpize
[root@localhost phpredis-php7]# ./configure 
[root@localhost phpredis-php7]# make &&make install
[root@localhost phpredis-php7]# vim /lnmp/php7/etc/php.ini 

 

转载于:https://my.oschina.net/sokes/blog/826634

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值