Linux学习 lnmp搭建

企业内部网络--lnmp架构

l:linux  unix  windows mac

a:Apache  nginx  iis

m:mysql  mariadb  percona postgressql  oracle

p:php  jsp  xml python 

Nginx

一、nginx安装

<1>下载nginx稳定版,解压安装包

 tarzxf nginx-1.12.0.tar.gz   ##解压后生成目录nginx-1.12.0

 cd /root/nginx-1.12.0

<2>安装nginx,可以使用less  README查看最简安装流程,具体实现过程如下

1.cd /root/nginx-1.12.0/src/core

      vim nginx.h               ##编辑该文件,修改版本显示内容

修改后内容为:14#define NGINX_VER         "nginx"    

       ##将对外界仅显示该名称,不再显示版本号,较安全   

       :wq

2.vim /root/nginx-1.12.0/auto/cc/gcc

注释掉172行,即关闭debug:

       172#CFLAGS="$CFLAGS -g"

       :wq

3.useradd -M  -d  /usr/local/lnmp/nginx  -u  800  nginx -s  /sbin/nologin

##创建用户,其中:

##-d /usr/local/lnmp/nginx 指定家目录,该目录要与configure执行时指定的目录保持一致,不用提前创建

##-u 800  nginx  为保持全网一致,需指定新建用户nginx的UID

##-s /sbin/nologin  禁止登录

可以使用id  nginx命令来查看用户的UID

4.cd /root/nginx-1.12.0       ##进入该目录下执行以下命令

 ./configure --prefix=/usr/local/lnmp/nginx --user=nginx  --group=nginx  --with-threads  --with-file-aio  --with-http_ssl_module  --with-http_stub_status_module

##--prefix=/usr/local/lnmp/nginx  指定安装路径

##--user=nginx  --group=nginx          指定使用用户

##--with-http_ssl_module  --with-http_stub_status_module      导入ssl和状态模块

5.在执行4中的命令时会有报错或者提示信息,需要再安装:pcre-devel 和 openssl-devel

##当提示信息中提示还缺少某个包时,则对应下载XXX-devel包

yum install  pcre-devel  openssl-devel -y

Linux学习 lnmp搭建_第1张图片

Linux学习 lnmp搭建_第2张图片

7.重新执行4.中的命令,注意当前位置:/root/nginx-1.12.0/

 ./configure --prefix=/usr/local/lnmp/nginx --user=nginx  --group=nginx  --with-threads  --with-file-aio  --with-http_ssl_module  --with-http_stub_status_module

该命令执行成功时显示内容:

Linux学习 lnmp搭建_第3张图片

8.make &&  make  install   ##表示先编译,若编译成功再执行make  install

9.检查nginx安全性及nginx启动:

 cd  /usr/local/lnmp/nginx         ##主目录

 du  -sh      ##文件大小为960K

 cd  /usr/local/lnmp/nginx/sbin

  执行: ./nginx ##开启服务    ##注意路径

  netstat  -antlp    ##查看80端口是否开启

Linux学习 lnmp搭建_第4张图片

Linux学习 lnmp搭建_第5张图片

 curl  -I  localost  ##显示是否为修改后的内容,不显示版本号:nginx
  ln -s  /usr/local/lnmp/nginx/sbin/nginx  /sbin     ##软链接,调用时较方便

二、nginx开启的进程

    注意:对nginx的操作只能是在指定家目录(如本机指定的是/usr/local/lnmp/nginx)中,源文件的更改对nginx服务本身不起作用。

<1>cd /usr/local/lnmp/nginx

 vim   conf/nginx.conf            ##主配置文件,注意路径

部分语句解释:

       worker_processes  1;    ##nginx开启的worker进程数

       events{

                  worker_connections  1024; 

       ##内核允许的最大连接数,应小于fs.file(文件描述服务)               

       ##可使用sysctl  -a  |grep  file ##查看fs.file-max

              }

Linux学习 lnmp搭建_第6张图片

##nginx开启一个worker进程

<2>nginx开启的进程数目设置

 1.vim   conf/nginx.conf

       worker_processes  2;    ##开启两个worker进程

       :wq

 2.nginx  -t   ##检查配置文件是否有语法错误

 3.nginx  -s reload    ##若无语法错误,进行重新加载

 4.ps  -ax      ##查看nginx开启的进程数

<3>进程与cpu内核的绑定:

(1)worker实际是与真实CPU核心绑定,而不是逻辑核心;

(2)尽量一个worker进程绑定一个cpu,若一个worker绑定多个cpu,又cpu本身不能轮询,这样会使得上下文切换较麻烦;

(3)nginx与cpu绑定必须重启服务     ??

1.vim conf/nginx.conf

编辑内容:

       worker_processes  2;    ##开启两个进程

       worher_cpu_sffinity  01  10;     ##01表示启用第一个cpu;02表示启用第二个cpu

       :wq

       ##第一个进程绑定第一个cpu内核;第二个进程绑定第二个进程

2.更改本机cpu数目不少于2个

<4>最大连接数的设置

1.vim conf/nginx.conf

编辑内容:

       events{

           worker_connections  65535; ##更改最大连接数,但应小于fs.file_max

              }

       :wq

2.sysctl -a  | grep  file      ##查看fs.file_max,其数目也可更改

3.ulimit -a  -u  nginx              ##查看open  file数目是否大于最大连接数

##结果显示的open  file为1024,小于设定的最大连接数,所以需要设置open file数目

4.vim  /etc/security/limits.conf    ##该文件即该即生效

添加内容:

nginx           -       nofile          65535

##nginx可开启的最大文件数目(应不少于最大连接数),用于控制当进程数目过大时,防止shell  fork现象的出现

三、nginx配置

cd /usr/local/lnmp/nginx/       ##进入nginx根目录

<1>nginx页面

1.vim conf/nginx.conf

在http{}函数内添加内容:

       server{

              listen 80;

              server_name www.westos.org;

              location / {

                       root  /web1;

                       index index.html;

                       }

              }

       ##控制调用过滤器,该location相对于网页的路径为/,也可以是相对于网页的目录。

       ##root/web1;  定义根目录,必须是已存在的

       ##index index.html; 发布文件为index.html

2.mkdir /web1

 vim  /web1/index.html            ##编辑发布内容

3.nginx -t     ##检查语法错误

 nginx  -s  reload    

4.测试:浏览器访问www.westos.org、172.25.13.1

Linux学习 lnmp搭建_第7张图片

Linux学习 lnmp搭建_第8张图片

Linux学习 lnmp搭建_第9张图片

##以下实验均在172.25.90.1主机操作

四、开启443端口

1.vim conf/nginx.cong    注意路径

去掉97至114行443端口的注释

修改内容:

       102         ssl_certificate_key  cert.pem;

       ##密钥与验证信息采用同一文件

       :wq

Linux学习 lnmp搭建_第10张图片

2.自生成认证文件

 cd  /etc/pki/tls/private

 openssl genrsa 2048 > localhost.key  ##生成认证文件

 cd  /etc/pki/tls/certs/

 make cert.pem           ##自生成证书

部分内容显示如下:

       CountryName (2 letter code) [XX]:cn  ##两位字符

       Stateor Province Name (full name) []:Shaanxi   

       LocalityName (eg, city) [Default City]:xi'an

       OrganizationName (eg, company) [Default Company Ltd]:westos

       OrganizationalUnit Name (eg, section) []:linux

       CommonName (eg, your name or your server's hostname) []:server1

                                          ##主机名

       EmailAddress []:[email protected]

  mv  cert.pem  /usr/local/lnmp/nginx/conf/

##nginx配置文件中设置认证文件时,以相对路径设置,其对应绝对路径为/usr/local/lnmp/nginx/conf/nginx.conf

3.nginx -t

 nginx  -s  reload

4.netstat -antlp |grep :443  ##查看443端口是否开启

Linux学习 lnmp搭建_第11张图片

5.访问https:172.25.90.1   

Linux学习 lnmp搭建_第12张图片

Linux学习 lnmp搭建_第13张图片

五、网页监控

1.vim conf/nginx.conf

在http{}函数中添加如下内容:

       location  /status { 

               stub_status on;

                access_log off;

                allow 127.0.0.1;

       }

##/status:虚拟目录。因为在安装前已加入了--with-http_stub_status_module模块

##stub_status on;  表示激活该模块功能

##access_log off;  表示关闭日志

##allow 172.25.90.250;  允许该主机访问

Linux学习 lnmp搭建_第14张图片

2.nginx -t

 nginx -s reload

3.访问172.25.90.1/status

(1)Active connections:表示访问数

Linux学习 lnmp搭建_第15张图片

(2)每连接一次,请求量刷新一次server accepts handled requests

Linux学习 lnmp搭建_第16张图片

5.deny语句来限制访问,如:

vim  conf/nginx.conf

在http{}函数中添加如下内容:

              location /status { 

                stub_status on;

                access_log off;

                allow 172.25.90.250;

deny  all;

       }

##拒绝所有用户访问,仅允许172.25.90.250主机

Linux学习 lnmp搭建_第17张图片

六、网页重写

cd /usr/local/lnmp/nginx

1.vim conf/nginx.conf

编辑内容:

       103     server {

       104         listen       443 ssl;

       105         server_name  www.westos.org;

   117         root   /web1;        ##www.westos.org的发布目录

       121         server {

       122              listen 80;

       123              server_name www.westos.org;

       124              rewrite ^(.*)$https://www.westos.org       permanent;

##当访问www.westos.org时,永久性重定向至https://www.westos.org

       125                 }

具体内容参考下图:

Linux学习 lnmp搭建_第18张图片

2.nginx -t

 nginx  -s  reload

3.访问www.westos.org,看是否会自动转至https://www.westos.org

  使用culr命令,查看服务状态:若为301,表示重定向

[root@foundation90 ~]# curl -Iwww.westos.org

HTTP/1.1 301 Moved Permanently      ##301表示重定向,永久性的

Server: nginx

Date: Sun, 23 Jul 2017 12:51:33 GMT

Content-Type: text/html

Content-Length: 178

Connection: keep-alive

Location: https://www.westos.org  ##重定向至https://www.westos.org

Linux学习 lnmp搭建_第19张图片

七、负载均衡

1.vim conf/nginx.conf

在http{}中加入upstream模块

     upstream westos {             ###均衡器westos

       server 172.25.90.2:80;

       server 172.25.90.3:8080;

       }

编辑www.westos.org的server模块   

      server {

                listen 80;

                server_name www.westos.org;        

                }

       location / {

       proxy_pass http://westos;       ##proxy代理

       }

##当访问www.westos.org时,nginx通过proxy_pass反向代理模块,将请求转至upsream均衡器模块,从而达到负载均衡的目的

2.在1.中选择172.25.90.2的80端口--http默认监听端口;172.25.90.3的8080端口,所以需要更改172.25.90.3的http监听端口为8080

vim /etc/httpd/conf/httpd.conf

        136 Listen 8080

       :wq

/etc/init.d/httpd  restart

Linux学习 lnmp搭建_第20张图片

3.编辑首页

Linux学习 lnmp搭建_第21张图片

4.nginx -t

 nginx  -s  reload

5.访问www.westos.org

  或使用curl命令,且不断访问,观察响应结果是否轮询

Linux学习 lnmp搭建_第22张图片

6.健康检查:当后台服务端均宕掉时,访问时不需等待直接502报错

(1)vim  conf/nginx.conf

编辑upstream模块:

upstream westos{         ###均衡器westos

       server 172.25.90.2:80;

       server 172.25.90.3:8080;

           server 127.0.0.1:8000  backup; ##502报错

       }

Linux学习 lnmp搭建_第23张图片

(2)修改172.25.90.1的httpd监听端口为8000

(3)编辑报错首页--nginx服务端(172.25.90.1)

 vim  /etc/httpd/conf/httpd.conf

网络正在维护中...

:wq

(4)nginx -t

 nginx  -s  reload

(5)测试

  关闭后台服务器--172.25.90.2,172.25.90.3:/etc/init.d/httpd  stop

  访问www.westos.org

Linux学习 lnmp搭建_第24张图片

7.权重

如设置172.25.90.2服务端的权中重为2,设置及访问结果见下图:


Linux学习 lnmp搭建_第25张图片

Linux学习 lnmp搭建_第26张图片

Mysql

一、Mysql安装

1.软件包依赖性:

yum install  -y  gcc gcc-c++  make  ncurses-devel bison  openssl-devel  zlib-devel 

yum  install cmake-2.8.12.2-4.el6.x86_64.rpm  -y  

##mysql-boost为c++库函数,要求cmake必须时2.8版本以上,gcc-c++;camke编译

2.tar zxf  mysql-5.5.12.tar.gz

3.编译

cd /root/mysql-5.5.12

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql  -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock  -DWITH_MYISAM_STORAGE_ENGINE=1  -DWITH_INNOBASE_STORAGE_ENGINE=1-DDEFAUL=utf8 -DDEFAUL_COLLATION=utf8_general_ci -DEXTRA_CHARSSETS=all -DWITH_BOOST=boost/boost_1_59_0/

##-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql指定安装路径

##-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data  指定数据库目录,一定与安装路径同

##-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock支持本地客户端连接

##-DWITH_MYISAM_STORAGE_ENGINE=1 为1时表示安装archive 存储引擎

##-DWITH_INNOBASE_STORAGE_ENGINE=1 为1时表示安装数据存储引擎

##-DDEFAUL=utf8 安装默认字符集

##-DDEFAUL_COLLATION=utf8_general_ci  安装校验字符集

##-DEXTRA_CHARSSETS=all

##-DWITH_BOOST=boost/boost_1_59_0/  指定相对路径??

4.编译成功后,根据提示信息,清除旧的对象文件和缓存信息

 make  clean

 rm  -f  CmakeCache.txt

5.重新编译,并安装:

 make  &&  make install

二、数据库初始化

cd /usr/local/lnmp/mysql

1.创建mysql的使用用户,指定用UID

 groupadd -g 27 mysql

 useradd -u 27 -g 27 -s /sbin/nologin -M  -d  /usr/local/lnmp/mysql/  mysql

2.更改权限

 chown  mysql.mysql  .  -R   ##绝对路径为/usr/local/lnmp/mysql/

3.复制主配置文件

 cd  /usr/local/lnmp/mysql/support-files/

 cp  /etc/my.cnf  /etc/my.cng.bak    ##备份

  cp  my-default.cnf /etc/my.cnf

  cp  mysql.server /etc/init.d/mysqld       ##服务开启项

4.vim ~/.bash_profile

  编辑内容:

       PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

       :wq

 source ~/.bash_profile       ##使变量文件生效

5.chown root.root . R    绝对路径为/usr/local/lnmp/mysql

6.mysqld --initialize --user=mysql

##初始化,系统将自动生成密码,该密码为用户发第一次登录mysql的密码;

##生成/usr/local/lnmp/mysql/data目录      

7.mysql_secure_installation   ##修改密码,当前密码为上条命令生成的密码

8.mysql -p   ##登录mysql

php安装

一、php安装

1.tzr zxf php-5.6.20.tar.bz2

2.安装包依赖性:

yum install  openssl-devel  libxml2-devel   curl-devel libjpeg-turbo-devel net-snmp-devel 

rpm -ivh libmcrypt-*

3.源码编译

cd /root/php-5.6.20   

./configure --prefix=/usr/local/lnmp/php--with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=mysqlnd--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-snmp--with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir--with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext--enable-inline-optimization --enable-soap --enable-ftp --enable-sockets--enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx--with-mcrypt --with-mhash

补充:如何知道软件依赖性??

先进行源码编译,因为加入了各个模块,系统若没有相应的软件会有类似于如下图所示的提示:

若是缺少XX包则直接下载 “XX-devel”;若提醒没有XX.h,即没有头文件,则先使用命令查看提供该头文件的软件“yum  provides */png.h”,再下载对应的安装包。

4.编译成功后,再次编译并安装

make &&  make  install

二、配置

1.复制主配置文件

cp /root/php-5.6.20/php.ini-production /usr/local/lnmp/php/etc/php.ini

##注意配置文件以.ini结尾

cp /root/php-5.6.20/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod +x  /etc/init.d/php-fpm  ##给执行权限,作为启动项

2.vim /usr/local/lnmp/php/etc/php.ini

编辑内容:

       date.timeout= Asia/Shanghai ##修改时间

       :wq

3.cd /usr/local/lnmp/php/etc/

 cp  php-fpm.conf.default  /php-fpm.conf

 vim /usr/local/lnmp/php/etc/php-fpm.conf

去掉以下内容的注释:

       pid= run/php-fpm.pid

       :wq

4./etc/init.d/php-fpm  start

5.cd /usr/local/lnmp/php

  vim~/.bash_profile

  编辑内容:

       PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin

       :wq

 source ~/.bash_profile       ##使变量文件生效

6.php-fpm监听9000端口,可用命令netstat  -antlp | grep  php-fpm来查看

三、php+nginx

1.cd /usr/local/lnmp/nginx/conf

 vim  nginx.conf

去掉以下内容注释,并进行修改:

       location~ \.php$ {

       root           html;

       fastcgi_pass   127.0.0.1:9000;

       fastcgi_index  index.php;

       include        fastcgi.conf;

       }

##fastcgi_pass 指定发送给某个用户;fastcgi_index 首页文件为index.php;include  fastcgi.conf 该文件包含默认发布目录

更改nginx根用户的发布文件默认为index.php:

       location/ {

           root   html;

           index  index.php  index.html htm;

       }

       :wq

2.编辑php首页文件

 cd  /usr/local/lnmp/nginx/html

  vim index.php

编辑内容:

      

       phpinfo()

       ?>

       :wq

4.浏览器访问172.25.90.1,显示内容为php首页

四、mysql+php+nginx

1.安装软件

 unzip  Discuz_X3.2_SC_UTF8.zip 

##解压后生成目录readme  upload  utility

2.mv upload /usr/local/lnmp/nginx/html/bbs

3.cd /usr/local/lnmp/nginx/html/bbs

 chmod  777  config/ data/  uc_client/  uc_server/ -R

##给权限

4.cd /usr/local/lnmp/php/etc

 vim  php.ini

全文编辑:

       pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock

       :wq

##数据库连接

5.chmod 755  /usr/local/lnmp/mysql/data

##给数据库访问权限

6./etc/init.d/php-fpm  reload       ##重载

7.浏览器端进行刷新,即可进入安装mysql界面,安装成功后即可登录

  根据提示信息,要求删除install/index.php

8.rm -fr /usr/local/lnmp/nginx/install/index.php

##nginx的根目录:usr/local/lnmp/nginx

 

你可能感兴趣的:(lnmp)