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,开发具体的功能模块。