欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。

文摘  Linux LNMP架构搭建详解

服务端工具 本站 859 0评论

LNMP是linux、nginx、mysql、php的简写;LNMP与LAMP环境一样也是用来做web网站后台的,nginx是轻量级的,进程间的通讯使用php-fpm独立使用;apache则是比较臃肿的,调用php的模块来完成的,需要加载很多模块,运行起来相对较慢。


一、Nginx 安装


Nginx各种平台安装讲解:https://ittxx.cn/view/47 


系统平台:CentOS release 6.6 (Final) 64位。


1.安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel


2.首先要安装 PCRE

PCRE 作用是让 Ngnix 支持 Rewrite 功能。


1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz 

[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

111-201610111422376039.png


2、解压安装包:

[root@bogon src]# tar zxvf pcre-8.35.tar.gz


3、进入安装包目录

[root@bogon src]# cd pcre-8.35


4、编译安装 

[root@bogon pcre-8.35]# ./configure

[root@bogon pcre-8.35]# make && make install


5、查看pcre版本

[root@bogon pcre-8.35]# pcre-config --version

222-201610111422459939.png


3.安装 Nginx

官网:Nginx下载:http://nginx.org/en/download.html    


1、下载 Nginx,下载地址:http://nginx.org/download/nginx-1.6.2.tar.gz

[root@bogon src]# wget http://nginx.org/download/nginx-1.6.2.tar.gz

333-201610111422546930.png


2、解压安装包

[root@bogon src]# tar zxvf nginx-1.6.2.tar.gz


3、进入安装包目录

[root@bogon src]# cd nginx-1.6.2


4、编译安装

[root@bogon nginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35

[root@bogon nginx-1.6.2]# make

[root@bogon nginx-1.6.2]# make install


5、查看nginx版本

[root@bogon nginx-1.6.2]# /usr/local/webserver/nginx/sbin/nginx -v

444-201610111423047345.png

到此,nginx安装完成。


4.Nginx 配置

创建 Nginx 运行使用的用户 www:

[root@bogon conf]# /usr/sbin/groupadd www 

[root@bogon conf]# /usr/sbin/useradd -g www www


配置nginx.conf,将/usr/local/webserver/nginx/conf/nginx.conf替换为以下内容

[root@bogon conf]#  cat /usr/local/webserver/nginx/conf/nginx.conf

user www www;
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
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';
  
#charset gb2312;
 
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;
 
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 60;
  tcp_nodelay on;
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  gzip on; 
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml;
  gzip_vary on;
 
  #limit_zone crawler $binary_remote_addr 10m;
 #下面是server虚拟主机的配置
 server
  {
listen 80;#监听端口
server_name localhost;#域名
index index.html index.htm index.php;
root /usr/local/webserver/nginx/html;#站点目录
  location ~ .*\.(php|php5)?$
{
  #fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
  expires 30d;
  # access_log off;
}
location ~ .*\.(js|css)?$
{
  expires 15d;
   # access_log off;
}
access_log off;
  }
}

检查配置文件ngnix.conf的正确性命令:

[root@bogon conf]# /usr/local/webserver/nginx/sbin/nginx -t

555-201610111423189704.png


5.启动 Nginx

Nginx 启动命令如下:

[root@bogon conf]# /usr/local/webserver/nginx/sbin/nginx

666-201610111423249086.png


6.访问站点

从浏览器访问我们配置的站点ip:

777-20181211164644.jpg


Nginx 其他命令

以下包含了 Nginx 常用的几个命令:

/usr/local/webserver/nginx/sbin/nginx -s reload# 重新载入配置文件

/usr/local/webserver/nginx/sbin/nginx -s reopen# 重启 Nginx

/usr/local/webserver/nginx/sbin/nginx -s stop  # 停止 Nginx


二、MySQL 安装配置


1.安装编译工具及库文件

yum -y install gcc gcc-c++ make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel libmhash-devel ncurses-devel sudo bzip2 flex libaio-devel


2.安装cmake 编译器

cmake 版本:cmake-3.1.1。


1、下载地址:http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz 

$ wget http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz

aaa-1476167469834446.png


2、解压安装包

$ tar zxvf cmake-3.1.1.tar.gz


3、进入安装包目录

$ cd cmake-3.1.1


4、编译安装 

$ ./bootstrap

$ make && make install


3.安装 MySQL

MySQL版本:mysql-5.6.15。


1、下载地址: http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz 

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz

bbb-1476167601343535.png


2、解压安装包

$ tar zxvf mysql-5.6.15.tar.gz


3、进入安装包目录

$ cd mysql-5.6.15


4、编译安装 

$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_INNODB_MEMCACHED=1 -DWITH_DEBUG=OFF -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DMYSQL_DATADIR=/usr/local/webserver/mysql/data -DMYSQL_TCP_PORT=3306

$ make && make install


5、查看mysql版本:

$ /usr/local/webserver/mysql/bin/mysql --version

ccc-1476167716394289.png

到此,mysql安装完成。


4.MySQL 配置

1、创建mysql运行使用的用户mysql:

$ /usr/sbin/groupadd mysql

$ /usr/sbin/useradd -g mysql mysql


2、创建binlog和库的存储路径并赋予mysql用户权限

$ mkdir -p /usr/local/webserver/mysql/binlog /www/data_mysql

$ chown mysql.mysql /usr/local/webserver/mysql/binlog/ /www/data_mysql/


3、创建my.cnf配置文件

将/etc/my.cnf替换为下面内容

$ cat /etc/my.cnf

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
datadir = /www/data_mysql
log-error = /usr/local/webserver/mysql/mysql_error.log
pid-file = /usr/local/webserver/mysql/mysql.pid
open_files_limit = 65535
back_log = 600
max_connections = 5000
max_connect_errors = 1000
table_open_cache = 1024
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 600
#thread_concurrency = 8
query_cache_size = 128M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
default-tmp-storage-engine=MYISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 128M
max_heap_table_size = 128M
log-slave-updates
log-bin = /usr/local/webserver/mysql/binlog/binlog
binlog-do-db=oa_fb
binlog-ignore-db=mysql
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 1G
relay-log-index = /usr/local/webserver/mysql/relaylog/relaylog
relay-log-info-file = /usr/local/webserver/mysql/relaylog/relaylog
relay-log = /usr/local/webserver/mysql/relaylog/relaylog
expire_logs_days = 10
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
interactive_timeout = 120
wait_timeout = 120
skip-name-resolve
#master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
#master-host = 192.168.1.2
#master-user = username
#master-password = password
#master-port = 3306
server-id = 1
loose-innodb-trx=0 
loose-innodb-locks=0 
loose-innodb-lock-waits=0 
loose-innodb-cmp=0 
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0 
loose-innodb-cmpmem=0 
loose-innodb-cmpmem-reset=0 
loose-innodb-buffer-page=0 
loose-innodb-buffer-page-lru=0 
loose-innodb-buffer-pool-stats=0 
loose-innodb-metrics=0 
loose-innodb-ft-default-stopword=0 
loose-innodb-ft-inserted=0 
loose-innodb-ft-deleted=0 
loose-innodb-ft-being-deleted=0 
loose-innodb-ft-config=0 
loose-innodb-ft-index-cache=0 
loose-innodb-ft-index-table=0 
loose-innodb-sys-tables=0 
loose-innodb-sys-tablestats=0 
loose-innodb-sys-indexes=0 
loose-innodb-sys-columns=0 
loose-innodb-sys-fields=0 
loose-innodb-sys-foreign=0 
loose-innodb-sys-foreign-cols=0
slow_query_log_file=/usr/local/webserver/mysql/mysql_slow.log
long_query_time = 1
[mysqldump]
quick
max_allowed_packet = 32M


4、初始化数据库

$/usr/local/webserver/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf  --user=mysql


显示如下信息:

Installing MySQL system tables...2015-01-26 20:18:51 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. 
Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK
Filling help tables...2015-01-26 20:18:57 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. 
Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
OK
...


5、创建开机启动脚本

$ cd /usr/local/webserver/mysql/

$ cp support-files/mysql.server /etc/rc.d/init.d/mysqld 

$ chkconfig --add mysqld 

$ chkconfig --level 35 mysqld on


6、启动mysql服务器

$ service mysqld start

ddd-1476167763286680.png


7、连接 MySQL

$ /usr/local/webserver/mysql/bin/mysql -u root -p

eee-1476167900515119.png


修改MySQL用户密码:

mysqladmin -u用户名 -p旧密码 password 新密码

或进入mysql命令行

SET PASSWORD FOR '用户名'@'主机' = PASSWORD(‘密码');


创建新用户并授权:

grant all privileges on *.* to 用户名@'%' identified by '密码' with grant option;


其他命令:

启动:service mysqld start

停止:service mysqld stop

重启:service mysqld restart

重载配置:service mysqld reload


三、PHP 安装配置


本次安装php的版本是5.6,在安装之前需要确认安装一些的库文件。


1.安装php所需的lib库

rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel

rpm -qa freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

注:每个lib一般都会存在一个以"devel"命名的包,安装这个"devel"的包,对应的lib也会安装好了,所以这里只需要检查安装devel的包的情况。


如果没有安装,请使用yum来安装

yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel

yum install -y freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

如无意外,上面的这些包除了libiconv-devel没有成功安装之外,都能够正常安装,如果这些包安装出错的请根据提示信息自行百度,libiconv-devel需要自行编译安装。从网上下载的源码包为“libiconv-1.15.tar.gz”,解压之后编译安装:

tar -xf libiconv-1.15.tar.gz

cd libiconv-1.15

./configure --prefix=/usr/local/libiconv 

make 

make install


使用epelyum源来安装libmcrypt库、mhash加密拓展库和mcrypt加密拓展库

在CentOS默认的yum源里面没有上面提到的这些库文件,因此需要实现配置epel第三方yum源,不然使用编译安装的办法会比较麻烦

yum install epel-release#可以直接用命令安装epel源

wget -O /etc/yum.repos.d/epel.repo#也可以直接下载epel的yum源文件


安装对应的类库

yum install -y libmcrypt-devel#动态加载的模块

yum install -y mhash  #基于离散数学原理的不可逆的PHP加密方式拓展库

yum install -y mcrypt #实现加密解密的功能


2.开始安装PHP(FASTCGI)服务

从php官网下载的版本是"php-5.6.31.tar.gz",当然也有更新版本的。解压之后编译安装。

tar -xf php-5.6.31.tar.gz

 ./configure --prefix=/usr/local/php5.6.31 --with-mysql --with-pdo-mysql  -with-mysqli  --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr/ --enable-xml --disable-rpath  --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization  --with-curl  --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-static --with-xsl --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp --with-iconv=/usr/local/libiconv

编译成功的话,会出现以下的提示。如果失败了,请根据具体的提示解答。

1-20181211171532.jpg


其中,下面说明部分的编译参数说明:

参数说明
--prefix=/usr/local/php5.6.31指定安装的位置
--with-mysql --with-pdo-mysql  -with-mysqli安装php需要的mysql内容,如果是lnmp在同一主机上,用--with-mysql="mysql的安装路径"
--with-fpm-user=nginx指定php-fpm的进程用户为nginx,group的同理
--enable-fpm激活php-fpm方式服务
--with-iconv=/usr/local/libiconv指定iconv的路径(之前编译出错几次都是因为没有指定这个参数)

安装php,这样php就安装成功了。

make

make install


3.配置php的配置文件php.ini

在php的安装包解压路径下,找到php.ini的模版文件,可以看到有两个文件。

2-20181211171642.jpg


在这里我们使用后面的那个,production的。把这个文件复制到php目录下,然后改名为php.ini

cp php.ini-production /usr/local/php5.6.31/lib/php.ini


配置php-fpm.conf,这里直接用php-fpm.conf.default模版

cd /usr/local/php5.6.31/etc/

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


4.启动php服务(FastCGI方式)

检查配置文件有没有错误,没有的话启动php

/usr/local/php5.6.31/sbin/php-fpm -t

/usr/local/php5.6.31/sbin/php-fpm

3-20181211171905.jpg

检查端口,9000的端口是否已经启动,启动了的话,那就可以了。

4-20181211172002.jpg


5.配置Nginx支持php程序访问

在之前的www.conf虚拟主机的配置文件里面加入php的解析 

location ~ .*\.(php|php5)?$ {
    root html/www;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
}

完整的配置如下图:

5-20181211172055.jpg

检查并启动Nginx

6-20181211172126.jpg


6.测试LNMP是否起效。


1)测试php解析

进入到www的站点,添加一个文件index.php

echo "<?php phpinfo(); ?>" >html/www/index.php

7-20181211172200.jpg

在浏览器上输入网址验证,得到下图的页面就是OK了。也可以在linux用links工具: links www.pcm.com/index.php

8-1522374320233057.png


2)测试php连接MySQL的情况

同样在www的目录下新建一个test_mysql.php的文件,加入以下的内容:

<?php
$link_id=mysql_connect('192.168.31.52','root','pcm123456') or mysql_error();
if ($link_id){
echo "mysqld successful by pcm!";
}else{
echo mysql_error();
}
?>


浏览器打开这个页面得到结果如下,这个表示成功了,到这里LNMP就搭建成功了。

9-20181211172306.jpg

如果出现错误的提示如下,那就是数据库那里没有给到权限。

10-20181211172325.jpg


登陆数据库服务器,然后添加一个root账号,允许192.168.31.10主机访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.31.10' IDENTIFIED BY 'pcm123456'; 

flush privileges ;


转载请注明: ITTXX.CN--分享互联网 » Linux LNMP架构搭建详解

最后更新:2018-12-11 17:50:52

赞 (2) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽