初级运维 LNMP 平台部署

Nginx简介:
Nginx由俄罗斯lgor Sysoev开发。是一款轻量级的HTTP服务器软件,其专为性能优化开发,其最知名的是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力(单台物理服务器可以支持30000-50000个并发

Nginx相对于Apache优点:
1 高并发响应性能非常好,官方Nginx处理静态文件并发5w/s
2 反向代理性能非常强。 (可用于负载均衡)
3 内存和cpu占用率低 。 (为Apache的1/5-1/10)
4 对后端服务有健康的见检查功能。
5 支持PHPcgi方式和fastcgi方式
6 配置代码简洁上手。
Nginx官方网站http://www.nginx。org/下载
本章以1.6.0为例
1 编译安装Nginx
1-1安装支持软件
yum -y install pcre-devel zlib-devel
1-2 创建用户和组 (Nginx服务程序默认以nobody 身份运行 建议为其创建专用用户和组,以便更准确的控制其访问权限,降低安全风险。创建一个nginx的用户,不建立宿主文件夹,也禁止登陆Shell环境)
useradd -M -s /sbin/nologin nginx
1-3 编译安装Nginx
tar zxvf nginx-1.6.0.tar。gz
cd nginx-1.6.0
./configure - -prefix=/usr/local/nginx - -user=nginx - - group=nginx - -with-http_stub_status_module
make && make install
1-4优化主程序nginx的路径 (也就是为nginx创建连接文件,以便管理员直接执行 “nginx”命令调用Nginx的主程序)
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
ls -l /usr/local/sbin/nginx (查看优化结果)

lrwxrwxrwx 1 root root 27 7月 28 18:38 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx

这样的结果就是成功了

1-4 Nginx的运行控制

nginx -t (检测 主配置文件是否有错误)
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

要是检测报告这两条说明没问题(在修改完成nginx的主配置文件后使用这条命令检查,如果ok就没问题 另如报错根据提示修改主配置文件)
nginx (启动nginx服务)
通过检测Nginx程序的监听状态 检测是否运行
netstat -anpt | grep nginx
命令结果为
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 73222/nginx
则为启动 如果不显示则为没有启动
Nginx的重新加载与关闭
kallall -s HUP nginx (重新加载)
kallall -s QUIT nginx (关闭)
nginx (开启)
1-5 使用Nginx服务脚本
vim /etc/init.d/nginx

!/bin/bash

chkconfig:- 99 20

description: Nginx Server Control Script

PROG=”/usr/local/nginx/sbin/nginx”
PIDF=”/usr/local/nginx/logs/nginx/nginx.pid”
case “$1” in
start)
$PROG
;;
stop)
kill –s QUIT $ (cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill –s HUP $(cat $PIDF)
;;
*)
echo “Usage: $0 {start|stop|restart|reload}”
exit 1
esac
exit 0
这个脚本执行后可能会报错
cat: /usr/local/nginx/logs/nginx/nginx.pid: No such file or directory
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec … or kill -l [sigspec]
有的就不报 可能是我的脚本有问题 如果有大佬看出问题请评论
我个人的解决方法是 将脚本内的 $(cat $PIDF) 都改为 “nginx” 就可以控制自如了
chmod +x /etc/init.d/nginx
chkconfig - -add nginx
就可以由chkconfig 和service 管理了

1-6 配置文件nginx.conf
Nginx的主配置文件在/usr/local/nginx/conf/nginx.conf 内容如下
全局配置

user nobody; //运行用户

worker_processes 1; //工作进程数量

error_log logs/error.log; //错误日志位置

error_log logs/error.log notice;

error_log logs/error.log info;

pid logs/nginx.pid; //pid文件位置

I/O事件配置
events {
use epoll; //使用epoll模型
worker_connections 1024; //每进程处理1024个链接 一般在10000以下默认为 1024
}
HTTP配置
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 logs/access.log main; //访问日志文件位置
sendfile on; //支持文件发送(下载)
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; //保持连接数

#gzip  on;

//虚拟Web主机 PHP解析等一系列设置 其中大部分在 sever {}内
server {
listen 80; //Web服务监听配置 监听地址及端口
server_name localhost; //网站名称

    #charset koi8-r;    //网页的默认字符集

    #access_log  logs/host.access.log  main;

    location / {        //根目录配置
        root   html;        //网站根目录位置
        index  index.html index.htm; //默认首页
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  //50x.html; //内部错误反馈页面
    location = /50x.html {  //错误页面配置
        root   html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {  //访问.php页面的配置段
    #    proxy_pass   http://127.0.0.1;  //apache/nginx服务器的监听地址  
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {  //访问.php页面的配置段
    #    root           html;   //PHP网页文档根目录
    #    fastcgi_pass   127.0.0.1:9000;    //php-fpm的监听覅在
    #    fastcgi_index  index.php;      //PHP首页文件
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;    //包括fastcpg.conf样本文件
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}


# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;

#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

}

    2安装mysql数据库

2-1 为了与Nginx PHP 环境保持一致 仍选择采用源代码安装Mysql组件。
以5.5.22为例
安装一个依赖包
yum –y install ncurses
编译安装mysql需要cmake这个编译工具先编译安装cmake
tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
gmake
gmake install
完成对cmake的安装后
2-2开始编译安装mysql
tar zxvf mysql-5.5.22.tar.gz -C /usr/src/
将mysql解压到/usr/src/
然后进入
cd /usr/src/mysql-5.5.22/ 这个目录里
开始进行安装
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci –DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
(这个命令很重要 确保是否正确 差一个字母对后期的安装一定会报错。
请核对后再确定。以免不必要的错误)
make && make install
2-3 优化调整
cp support-files/my-medium.cnf /etc/my.cnf
将mysql添加为系统服务方便管理
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig - -add mysqld
echo “PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile
. /etc/profile
2-4 初始化数据库
groupadd mysql
useradd –M –s /sbin/nologin mysql –g mysql
chown –R mysql:mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data/ –user=mysql
2-5开始启动mysql服务
service mysqld start
因为数据库默认是没有密码使用要更改数据库密码
mysqladmin -u root password ‘123.com’
登陆数据库
mysql -uroot -p
Enter password: 出现这个就输入改的密码 默认是看不见的
(第一次看见先回车 可能是让输入原始密码,如果报错尝试新密码)
3安装PHP
较新的版本如(5.3)的PHP已经自带FPM(FastCGL Process Manager ,FastCGL的进程管理器)
用来对PHP解析实例进行管理,优化解析效率,单服务器的LNMP 架构通常使用这种方式因此在配置PHP编译时应添加 “—enable-fpm“启用此模块
以源码包php-5.3.28为例 为了提高PHP解析效率建议安装ZendGuardLoader也装上
3-1 安装PHP解析环境
编译安装PHP
先装上相关的依赖包
yum -y install libxml2-devel libjpeg-devel libpng-devel
开始编译安装PHP
tar zxvf php-5.3.28.tar.gz -C /usr/src/
cd /usr/src/php-5.3.28/
./configure –prefix=/usr/local/php5 - -with-gd - -with-zlib - -with-mysql=/usr/local/mysql - -with-config-file-path=/usr/local/php5 - -enable-
mbstring - -enable-fpm - -with-jpeg-dir=/usr/lib
make && make install
3-2 安装后的调整
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin
ln -s /usr/local/php5/sbin/* /usr/local/sbin
3-3 安装ZendGuardLoader
tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
cd ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/
cp ZendGuardLoader.so /usr/local/php5/lib/php/
vim /usr/local/php5/php.ini (在这个文件的空白行下添加这两配置)
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
3-4 配置Nginx 支持 PHP环境
若要Nginx能够解析PHP网页 有两种方法选择
第一 充当中介,将访问PHP页面的Web请求交给其他服务器LNMP 去处理
第二 就是使用PHP的FPM模块来调用本机的PHP环境
我们使用第二中 启用 php-fpm进程
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf
useradd -M -s /sbin/nologin php
vim php-fpm.conf
pid = run/php-fpm.pid //确认pid文件位置
user = php //运行用户
group = php //运行组
pm.max_children = 50
pm.start_servers = 20 //启动时开启的进程数
pm.min_spare_servers = 5 //最少空闲进程数
pm.max_spare_servers = 35 //最多空闲进程数
(文件数据庞大 可在非编辑的模式下 通过“/“查询关键字 pgUp/pgDn上下翻页编辑)
启用模块
usr/local/sbin/php-fpm
通过修改Nginx的服务脚本将php-fpm进程也添加进去 如下
这样php-fpm就可以随nginx启动关闭。
vim /etc/init.d/nginx

!/bin/bash

chkconfig:- 99 20

description: Nginx Server Control Script

PROG=”/usr/local/nginx/sbin/nginx”
PIDF=”/usr/local/nginx/logs/nginx/nginx.pid”
PROG_FPM=”/usr/local/sbin/php-fpm”
PIDF_FPM=”/usr/local/php5/var/run/php-fpm.pid”
case “$1” in
start)
$PROG
$PROG_FPM
;;
stop)
killall -s QUIT “nginx”
kill -s QUIT (cat ( c a t PIDF_FPM)
;;
restart)
0stop 0 s t o p 0 start
;;
reload)
killall -s HUP “nginx”
– 插入 –
3-5 配置nginx支持php解析
只需要在nginx.conf文件配置这几行 并将#去掉启用就可以用php了
前面说的第一种方法的配置

location ~ .php$ { //访问.php页面的配置段

    #    proxy_pass   http://127.0.0.1;  //apache/nginx服务器的监听地址  
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

第二种方法配置
location ~ .php$ { //访问.php页面的配置段
root var/www/accp; //PHP网页文档根目录
fastcgi_pass 127.0.0.1:9000; //php-fpm的监听覅在
fastcgi/_index index.php; //PHP首页文件
include fastcgi.conf; //包括fastcpg.conf样本文件
}
根据配置 必须有accp这个目录
首先先创建出这个目录
mkdir /var/www/accp
然后在accp里面编写一个 PHP首页文件
vim /var/www/accp/test.php

$link=mysql_connect(‘localhost’,’root’,’123.com’);
If($link) echo “恭喜你 数据哭连接成功“;
mysql_close();
?>

然后点开浏览器先访问 127.0.0.1看看nginx是否正常

然后访问127.0.0.1/test.php

记得把字符集调utf8

不然是乱码
好了LNMP平台部署完成了 发现什么错误 或者有什么建议 直接评论或者联系
搭建环境一帆风顺未必是好,排查错误 修改 也是很重要的。感谢大神来访

你可能感兴趣的:(初级)