LNMP分离式部署搭建
首先准备3台虚拟机:
Nginx:192.168.200.135
PHP:192.168.200.146
MySQL:192.168.200.147
Nginx搭建
首先安装支持包
yum -y install pcre-devel openssl-devel gcc gcc-c++ make automake
创建程序用户
useradd -s /sbin/nologin -M www
解压缩和预配置,编译和安装
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar xf nginx-1.10.2.tar.gz -C /usr/src/
cd /usr/src/nginx-1.10.2.tar.gz
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
做Nginx软链接
ln -s /usr/local/nginx/sbin/* /usr/local/sbin
修饰一下Nginx配置文件
cd /usr/local/nginx/conf
egrep -v "#|^$" nginx.conf.default > nginx.conf
MySQL二进制搭建方法
创建程序用户
useradd -s /sbin/nologin -M mysql
二进制方式安装MySQL
tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -s mysql-5.5.32-linux2.6-x86_64 mysql
初始化MySQL配置文件到my.cnf
cd /usr/local/mysql
/bin/cp support-files/my-small.cnf /etc/my.cnf
工作中如果主机名,在你本地没有映射,有可能会有错误出现
echo “192.168.200.147 LNMP” >> /etc/hosts
初始化MySQL数据库文件
chown -R mysql.mysql /usr/local/mysql
光盘源安装依赖包,否则编译会报错
yum -y install libaio
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
设置MySQL启动脚本
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start
ss -antup | grep 3306
chkconfig --add mysqld
chkconfig mysqld on
制作软连接,让linux有mysql命令
ln -s /usr/local/mysql/bin/* /usr/local/bin
which mysql
创建MySQL密码
mysqladmin -uroot password '123123'
PHP服务搭建
安装PHP所需的lib库
yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
yum -y install freetype-devel libpng-devel gd libcurl-devel libxslt-devel
yum无法安装的libiconv库
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar xf libiconv-1.14.tar.gz -C /usr/src/
cd /usr/src/libiconv-1.14/
./configure --prefix=/usr/local/libiconv && make && make install
安装libmcrypt库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
(没有wget则需要使yum安装)
yum -y install libmcrypt-devel
安装mhash加密扩展库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
(上面已经下载了,直接使yum安装)
yum -y install mhash
安装mcrvpt加密扩展库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
(上面已经下载了,直接使yum安装)
yum -y install mcrypt
编译过程中需要用到www程序用户,所以需要创建一个
useradd -s /sbin/nologin -M www
解压并编译安装PHP
w
get http://cn2.php.net/get/php-5.3.28.tar.gz
tar xf php-5.3.28.tar.gz -C /usr/src/
cd /usr/src/php-5.3.28/
./configure --prefix=/usr/local/php5.3.28 --with-mysql=mysqlnd --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-short-tags --enable-zend-multibyte --enable-static --with-xsl --with-fpm-user=www --with-fpm-group=www --enable-ftp
最后的正确输出提示为:Thank you for using PHP.
如果出现configure: error: Cannot find OpenSSL’s <evp.h>
安装openssl-devel
yum -y install openssl-devel
编译PHP并安装
make && make install
make install
设置软链接
ln -s /usr/local/php5.3.28/ /usr/local/php
PHP配置默认模版文件
生产环境:php.ini-development 开发环境:php.ini-production
开发环境更多的是开启日志,调试信息,而生产环境都是关闭状态
cd /usr/src/php-5.3.28
cp php.ini-production /usr/local/php/lib/php.ini
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
关于php-fpm.conf,暂时可用默认的配置,先把服务搭好,以后再进行优化。
分离式部署特别提示
vim php-fpm.conf
listen = 192.168.200.71:9000 --->要监听本地IP端口,让远程访问(151行)
启动PHP服务,查询端口并确认
/usr/local/php/sbin/php-fpm
ss -antup | grep 9000
测试阶段
Nginx配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.yunjisuan.com;
location / {
root /www;
index index.html index.htm;
}
location ~ .*\.(php|php5)?$ {
root /www;
fastcgi_pass 192.168.200.146:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
}
Nginx网页目录默认填写在/www下所以需要创建一个www的目录并修改属主和属组
mkdir /www
chown -R www.www /www
在Nginx网页目录创建静态内容
cd /www
echo "`hostname -I` www.yunjisuan.com" > index.html
启动Nginx服务并在Windows网页上测试(需要做windows本地映射这里就不演示了)
/usr/local/nginx/sbin/nginx
在PHP网页目录创建动态内容(需要创建网页目录并让Nginx程序用户有权限访问)
mkdir /www
chown www.www /www
echo "<?php phpinfo(); ?>" > index.php
用动态网页当默认首页测试结果
Nginx配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.yunjisuan.com;
location / {
root /www;
index index.php;
}
location ~ .*\.(php|php5)?$ {
root /www;
fastcgi_pass 192.168.200.146:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
}
Nginx和PHP网页目录
修改完配置文件重启Nginx并Windows网页测试
/usr/local/nginx/sbin/nginx -s reload
从上图发现把Nginx网页目录清空用Windows网页测试报错403,在Nginx服务器创建一个空的网页内容测试一下
从而得知
Nginx安全机制跳转首页的时候,发现跳转的首页找不到(网页空目录),默认会给你权限拒绝访问,防止网页目录的内容都让人看到,所以内部的安全机制就给禁止访问了