CentOS 7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2

  • Post category:Linux

CentOS7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2攻略

系统环境

首先需要安装CentOS7.3.1611操作系统,操作系统的安装不在本篇文章的讨论范围之内,因此不再赘述。

安装必要的依赖

在安装Nginx1.10.3,MySQL5.7.16和PHP7.1.2之前,需要安装一些必要的依赖包,这些依赖包是安装这些软件所必需的。可以通过以下命令安装:

yum groupinstall -y "Development Tools"
yum install -y gcc gcc-c++ autoconf automake libtool make cmake zlib-devel openssl-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libicu-devel libxslt-devel readline readline-devel libyaml-devel libffi-devel

安装MySQL5.7.16

下载MySQL源码

首先需要下载MySQL5.7.16的源码,可以通过以下链接下载:

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16.tar.gz

编译安装MySQL

解压源码包:

tar -xvf mysql-5.7.16.tar.gz

进入解压后的目录,执行以下命令:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/path/to/boost

其中,/usr/local/mysql是MySQL的安装目录,/path/to/boost是boost库的安装路径,如果没有安装boost库,则需要下载和安装。

编译并安装MySQL:

make
make install

配置MySQL

新建mysql用户和组:

groupadd mysql
useradd -r -g mysql mysql

进入MySQL安装目录,执行以下命令:

cd /usr/local/mysql
mkdir data
chown -R mysql:mysql data
bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
vi /etc/my.cnf

编辑/etc/my.cnf文件:

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysql.pid
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql.log

[client]
socket=/tmp/mysql.sock

[mysql]
prompt="\u@\h [\d]> "

启动MySQL服务:

service mysqld start

安装PHP7.1.2

下载PHP源码

下载PHP7.1.2的源码,可以通过以下链接下载:

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

编译安装PHP

解压源码包:

tar -xvf php-7.1.2.tar.gz

进入解压后的目录,执行以下命令:

./configure --prefix=/usr/local/php \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysqli \
--with-pdo-mysql \
--with-openssl \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-freetype-dir \
--enable-mbstring \
--enable-sockets \
--enable-xml \
--enable-zip

其中,/usr/local/php是PHP的安装目录,/etc/php.d是PHP的配置目录,www是PHP-FPM的运行用户和组。

编译并安装PHP:

make
make install

配置PHP

新建www用户和组:

groupadd www
useradd -r -g www www

编辑php.ini文件:

vi /etc/php.ini

添加以下内容:

date.timezone = Asia/Shanghai

新建PHP-FPM的配置文件:

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

编辑/usr/local/php/etc/php-fpm.conf文件:

user = www
group = www

listen = 0.0.0.0:9000

pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500

启动PHP-FPM

运行以下命令启动PHP-FPM:

/usr/local/php/sbin/php-fpm

安装Nginx1.10.3

下载Nginx源码

下载Nginx1.10.3的源码,可以通过以下链接下载:

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

编译安装Nginx

解压源码包:

tar -xvf nginx-1.10.3.tar.gz

进入解压后的目录,执行以下命令:

./configure --prefix=/usr/local/nginx \
--user=www \
--group=www \
--with-http_ssl_module \
--with-pcre \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--http-fastcgi-temp-path=/usr/local/nginx/tmp \
--http-proxy-temp-path=/usr/local/nginx/tmp/proxy \
--http-client-body-temp-path=/usr/local/nginx/tmp/client \
--http-proxy-body-temp-path=/usr/local/nginx/tmp/proxy_body

其中,/usr/local/nginx是Nginx的安装目录,www是Nginx运行的用户和组。

编译并安装Nginx:

make
make install

配置Nginx

新建www用户和组:

groupadd www
useradd -r -g www www

编辑nginx.conf文件:

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

添加以下内容:

user www www;
worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include mime.types;

    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;

    keepalive_timeout 65;

    #gzip on;

    server {
        listen 80 default;
        server_name _;

        root /usr/local/nginx/html;
        index index.html index.htm;

        location / {
            try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;
        location = /404.html {
            internal;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            internal;
        }
    }

    include /usr/local/nginx/conf.d/*.conf;
}

运行以下命令启动Nginx:

/usr/local/nginx/sbin/nginx

示例

示例一:部署一个Hello World网站

我们使用PHP编写一个Hello World网站,首先创建一个基本的网站目录:

mkdir -p /data/web/hello
cd /data/web/hello

创建一个名为index.php的文件,内容如下:

<?php

echo 'Hello World!';

?>

/usr/local/nginx/conf.d/目录下新建一个名为hello.conf的文件,内容如下:

server {
    listen 80;
    server_name hello.com;

    root /data/web/hello;
    index index.php;

    access_log /var/log/nginx/hello.com.access.log;
    error_log /var/log/nginx/hello.com.error.log;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/web/hello/$fastcgi_script_name;
        include fastcgi_params;
    }
}

重载Nginx配置文件:

/usr/local/nginx/sbin/nginx -s reload

在本地电脑的hosts文件中添加以下内容:

127.0.0.1 hello.com

打开浏览器,访问http://hello.com,即可看到Hello World网站。

示例二:使用MySQL存储数据

我们在Hello World网站中添加MySQL数据库的支持。

首先,打开MySQL客户端,创建一个名为hello的数据库,并添加一个名为users的表:

mysql -uroot

mysql> create database hello;
mysql> use hello;

mysql> create table users (
    -> id int(11) not null auto_increment primary key,
    -> username varchar(50) not null default '',
    -> email varchar(50) not null default ''
    -> ) engine=InnoDB default charset=utf8;

然后,我们修改index.php文件为:

<?php

$db = mysqli_connect('localhost', 'root', '', 'hello') or die('Error connecting to MySQL server.');

$result = mysqli_query($db, 'SELECT * FROM users');

echo '<h1>Users</h1>';

while ($row = mysqli_fetch_assoc($result)) {
    echo '<p>' . $row['username'] . ': ' . $row['email'] . '</p>';
}

mysqli_close($db);

?>

在MySQL中添加一条记录:

mysql> insert into users (username, email) values ('john', 'john@example.com');

刷新浏览器,即可看到MySQL中的数据也被成功展示了出来。

总结

以上就是CentOS7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2的完整攻略。安装这三个软件并不是非常容易,但是掌握这些知识对于Web开发者来说是非常重要的。在实际开发中,要根据自己的需求来配置Nginx和MySQL,开发具体的功能模块。