设为首页 收藏本站
查看: 2881|回复: 0

linux编译安装LNMP:Linux+Nginx+MariaDB+PHP

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-29 09:15:36 | 显示全部楼层 |阅读模式
在互联网服务器架构中,我们经常可以听到LAMP(Linux+Apache+Mysql+PHP/Perl+Python)的架构,用来指代Linux操作系统、Apache网络服务器、Mysql数据库和PHP(Python或Perl)脚本语言的组合。现在由于Nginx拥有超越Apache的卓越性能,传统LAMP架构正在逐渐被LNMP架构所取代。因此以下介绍

Linux+Nginux+MariaDB+PHP架构的基于不同主机间的编译安装。
操作环境:

Linux操作系统: Centos6.6-2.6.32-504.el6.x86_64
Nginx :Nginx-1.6.2        主机IP地址为:192.16.1.3
MariaDB:mariadb-10.0.12  主机IP地址为:192.168.1.4
PHP:php-5.4.26            主机IP地址为:192.168.1.5
为了后面的编译,我在每个每台主机上都安装了以下的编译环境,后面有其他需要的在编译中再安装

1
2
yum -y groupinstall "Development Tools"
yum -y groupinstall "Server Platform Development"



由于在不同的主机上编译安装,因此安装的顺序没有先后之分。
一.编译安装MariaDB
准备MariaDB源码包,可以去其官方网站www.mariadb.org 下载
wget http://mirrors.neusoft.edu.cn/ma ... riadb-10.1.2.tar.gz
此处是alpha版,不建议在生产环境中使用  
1
2
[iyunv@client1 data]# tar xf mariadb-10.0.12.tar.gz
[iyunv@client1 data]# cd mariadb-10.0.12



由于mariab是cmake编译安装,因此需要安装cmake工具,此处直接yum 安装
  yum -y install  cmake
安装完成后,即可编译安装mariab了,如下:
首先创建mysql用户和要安装的目录,并改属主和属组为mysql

1
2
3
useradd  -M -s /sbin/nologin mysql
mkdir -p /application/mariadb
chown  -R mysql:mysql /application/



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cmake . -DCMAKE_INSTALL_PREFIX=/application/mariadb      #MariaDB安装目录
-DMYSQL_UNIX_ADDR=/application/mariadb/tmp/mysql.sock    #MariaDBsock文件目录
-DMYSQL_DATADIR=/application/mariadb/data                #MariaDB数据保存目录
-DSYSCONFDIR=/etc                                        #配置文件目录
-DMYSQL_USER=mysql                                       #指定用户为mysql用户
-DMYSQL_TCP_PORT=3306                                    #指定端口为3306
-DWITH_XTRADB_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1                         #指定各个引擎
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DWITH_EXTRA_CHARSETS=1
-DDEFAULT_CHARSET=utf8                                    #指定字符集
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DWITH_BIG_TABLES=1
-DWITH_DEBUG=0

make
make install



创建配置文件和启动脚本,并加入开机启动

1
2
3
4
5
6
7
cd /application/mariadb
cp support-files/my-small.cnf /etc/my.conf    #可根据自己主机的内存选择my-large.cnf或
                                              my-medium.cnf等
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on



初始化mysql
1
/application/mariadb/scripts/mysql_install_db --user=mysql --basedir=/application/mariadb --datadir=/application/mariadb/data



手动添加启动命令路径至/etc/profile
1
2
echo "export PATH=/application/mariadb/bin:$PATH" >>/etc/profile #追加至/etc/profile
source /etc/profile          #重写读取/etc/profile



至此MariaDB就编译安装完成了

二.编译安装PHP(Fastcgi模式)
   准备PHP源码包 php我是去搜狐镜像上下载的,地址为:http://mirror.sohu.com

1
2
3
4
mkdir -p /application/php #我准备把php安装在此目录下,首先创建此目录
wget http://mirrors.sohu.com/php/php-5.4.26.tar.bz2
tar xf php-5.4.26.tar.bz2
cd php-5.4.26



开始编译安装:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
./configure  
--prefix=/application/php/                   #指定php安装的目录
--with-mysql=mysqlnd             #此项指定mysqlnd十分重要,由于mysql没有安装在此主机上
                                    mysqlnd表示支持链接mysql。
--with-pdo-mysql=mysqlnd         #同上
--with-mysqli=mysqlnd
--with-openssl                   #支持ssl功能
--enable-mbstring                #启动多字节字符串支持
--with-freetype-dir              #指定free type
--with-jpeg-dir                  #支持jpeg图片格式
--with-png-dir                   #支持png图片格式
--with-zlib                      #支持zlib压缩传输
--with-libxml-dir=/usr           #指定libxml2的目录
--enable-xml                     #支持xml扩展
--enable-sockets                 #支持套接字
--with-mcrypt                    #支持mcrypt
--with-config-file-path=/application/php/etc       #配置文件的路径
--with-config-file-scan-dir=/application/php/php.d   #支持扩展的模块的配置文件目录,php
                                                      去此目录下扫描
--with-bz2                                           #支持bzip2压缩
--enable-fpm                      #此项十分重要,在不同的主机上安装mysql,nginx需开启,否
                                   则无法支持Fastcgi,各主机无法通信
make
make install



安装完成后,为php提供配置文件

[iyunv@client2 php-5.4.26]# cp php.ini-production /application/php/etc/php.ini
为php提供sys启动控制脚本,并加入开机启动
1
2
3
4
5
6
[iyunv@client2 php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[iyunv@client2 php-5.4.26]# chmod +x /etc/init.d/php-fpm
[iyunv@client2 php-5.4.26]# chkconfig --add php-fpm
[iyunv@client2 php-5.4.26]# chkconfig php-fpm on
[iyunv@client2 php-5.4.26]# chkconfig --list php-fpm  #查看php-fpm
php-fpm        0:off1:off2:on3:on4:on5:on6:off



为php-fpm提供配置文件php-fpm.conf,编译配置文件,修改监听端口为php主机IP地址
1
2
3
4
5
6
[iyunv@client2 php]# cd /application/php/etc/   #切换至php安装目录下的配置文件目录/etc
[iyunv@client2 etc]# ls                         #查看当前目录下的文件内容
pear.conf  php-fpm.conf.default  php.ini
[iyunv@client2 etc]# mv php-fpm.conf.default php-fpm.conf #将 php-fpm.conf.default重命名
                                               为php-fpm.conf作为php-fpm的配置文件
listen = 192.168.1.5:9000       #默认为127.0.0.1



启动php-fpm并且查看其信息

1
2
3
4
5
[iyunv@client2 etc]# service php-fpm start
Starting php-fpm  done               #如果没有done信息,可以查看/var/log/message日志文件
                                     查看其错误信息
[iyunv@client2 etc]# ss -lnt |grep 9000
LISTEN     0      128             192.168.1.5:9000                     *:*



至此PHP编译安装完成了,接下来我们编译Nginx

三.编译安装Nginx
首先准备源码包:
1
2
3
4
wget http://mirrors.sohu.com/nginx/nginx-1.6.2.tar.gz
useradd -M -s /sbin/nologin nginx      #创建一个nginx用户,以nginx用户的身份运行
                                        worker process进程
mkdir -p /application/nginx            # 创建nginx安装目录



开始编译

1
2
3
4
5
6
7
8
9
10
11
12
13
tar xf nginx-1.6.2.tar.gz
cd nginx-1.6.2  
./configure
--prefix=/application/nginx     #指定安装目录  
--user=nginx          #在nginx.conf中没有指定user指定情况下使用nginx用户
         默认为nobody
--group=nginx  
--with-http_ssl_module           #启用ssl模块
--with-http_flv_module           #启用flv模块
--with-http_gzip_static_module   #启用 gzip模块
--with-http_stub_status_module    #启用stub模块
make
make install



安装完成后,启动nginx并且查看其信息
1
2
3
4
5
6
7
cd /application/nginx/
/application/nginx/sbin/nginx              #启动nginx后不需要任何参数
[iyunv@bogon nginx]# ss -lnt |grep 80
LISTEN     0      128                       *:80                       *:*     
[iyunv@bogon nginx]# ps -ef |grep nginx
root      36742      1  0 Dec27 ?      00:00:00 nginx: master process ../sbin/nginx
nginx     36743  36742  0 Dec27 ?      00:00:01 nginx: worker process



此时在打开网页输入192.168.1.3 即可看到welcom to nginx的信息,表明nginx已经启动成功,下面

介绍如何将nginx与php以fastcgi方式结合起来,配置nginx.conf文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[iyunv@bogon conf]# cat nginx.conf
user nginx nginx;                  #以nginx用户身份运行worker process进程
worker_processes  3;               #启动3个worker进程
error_log logs/error.log;          #错误日志保存位置
pid       logs/nginx.pid;
worker_rlimit_nofile 51200;        #用于指明一个worker进程所能打开的最大文件数
events {
    use epoll;
    worker_connections  51200;
}
http {
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相关参数--------->
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.1;
gzip_comp_level 3;
gzip_types  text/plain application/x-javascript text/css application/xml;
gzip_vary on;
server {
listen 80;
server_name www.v1.com;
access_log logs/access.log combined;
index index.html index.htm index.php;
root /web/www/;   
location ~ .*.(php|php5)?$ {          #此处是配置nginx于php交互的,在nginx下所有的php
                                        脚本都转交给192.168.1.5的9000端口接收
fastcgi_pass 192.168.1.5:9000;
fastcgi_index index.php;
include /application/nginx/conf/fastcgi.conf;
}
location ~ .*.(js|css)?$ {
expires 1h;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
      }
}



此时在php主机(即192.168.1.5)上创建一个/web/www的目录,创建一个配置文件index.php,文件内
容为
1
2
3
phpinfo();
?>



在Ninux主机上,浏览器输入www.v1.com (前天需要修改hosts文件,内容为192.168.1.5 www.v1.com)
即可看到如下内容
wKioL1SfisSTeTE4AAI6LxWNchQ392.jpg
则表明Nginx与PHP交互成功
下面我们通过wordpress来结合Nginx和PHP,回到mariab数据库的主机,授权一个用户wdadmin

MariaDB [(none)]> create database wpdb;     #创建一个wpdb数据库,用户保存wordpress数据
MariaDB [(none)]> grant all privileges on wpdb.* to "wpadmin"@"192.168.1.%" identified by 'test';  #授权给wpadmin用户,密码是test
转到php主机,在/web/下创建一个wordpress目录,用于保存wordpress代码

1
2
3
4
5
6
7
8
9
10
mkdir /web/wordpress
cd /web/wordpress
unzip wordpress-3.3.1-zh_CN.zip
mv /web/wordpress/wordpress/* /web/wordpress
cp wp-config-sample.php wp-config.php
vim wp-config.php            #编译wp-config.php修改下面的几行
define('DB_NAME', 'wpdb');    #添加在mariab数据库的数据库名
define('DB_USER', 'wpadmin'); #添加授权的用户
define('DB_PASSWORD', 'test'); #密码
define('DB_HOST', '192.168.1.4'); #指定mariab数据库的主机IP



在nginx主机上,添加一个虚拟主机,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
                listen 80;
                server_name www.wordpress.com;
                access_log logs/access.log combined;
                index index.html index.htm index.php;
                root /web/wordpress/;
                location ~ .*.(php|php5)?$ {
                        fastcgi_pass 192.168.1.5:9000;
                        fastcgi_index index.php;
                        include /application/nginx/conf/fastcgi.conf;
                }
                location ~ .*.(js|css)?$ {
                        expires 1h;
                }
                location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
                        expires 30d;
                }
              }



配置好后,网页访问www.wordpress.com(前提是要修改hosts文件)

wKiom1SfqX3BhWwdAAFYF4Kpgn8460.jpg
看到此界面则说明三者交互成功,安装后,可能看不到图片,是因为没有做动静分离,可以放Nginx的
/web/wordpress目录下放置同样一份就可以看到了。

至此LNMP的编译安装完成,以上只是个人的浅显认识,错误之处在所难免,望各位同仁批评指正谢谢!





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-39522-1-1.html 上篇帖子: LAMP+NFS实现多个web服务器静态资源统一存储 下篇帖子: LAMP+NFS之编译安装http2.4 linux Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表