开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用源码轻松搭建LNMP !

简介:
+关注继续查看

LNMP=Liunx+nginx+mysql+php

1. 上传所需软件包

image

2.安装并配置libevent

2.1挂载光盘

[root@gjp99 ~]# mkdir /mnt/cdrom 
[root@gjp99 ~]# mount /dev/cdrom /mnt/cdrom 
mount: block device /dev/cdrom is write-protected, mounting read-only

2.2 配本地yum 
[root@gjp99 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo 
[root@gjp99 ~]# cat /etc/yum.repos.d/rhel-debuginfo.repo 
[rhel-server] 
name=Red Hat Enterprise Liunx server 
baseurl=file:///mnt/cdrom/Server 
enabled=1 
gpgcheck=1 
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

2.3 查看开发环境:

[root@gjp99 ~]# yum grouplist |less

所需开发包:

Development Libraries 
Development Tools 
Legacy Network Server  
X Software Development

2.4 安装prce-devel

[root@gjp99 ~]# yum list all |grep pcre 
This system is not registered with RHN. 
RHN support will be disabled. 
pcre.i386                                 6.6-2.el5_1.7              installed  
pcre-devel.i386                        6.6-2.el5_1.7            rhel-server 
[root@gjp99 ~]# yum install pcre-devel  -y   默认输入y ,一直安装

2.5 加载的库文件并查看版本

[root@gjp99 ~]# ldconfig –v  可以看到从哪里调用的库文件  /lib  /usr/lib/

[root@gjp99 ~]# ldconfig -pv  |grep libev 
    libevent-1.1a.so.1 (libc6) => /usr/lib/libevent-1.1a.so.1   //老版本信息

2.6解压缩文件 
[root@gjp99 ~]# tar -zxvf libevent-2.0.16-stable.tar.gz  -C /usr/local/src/

[root@gjp99 ~]# cd /usr/local/src/ 
[root@gjp99 src]# ll 
total 4 
drwxr-xr-x 8 500 500 4096 Nov 19  2011 libevent-2.0.16-stable 
[root@gjp99 src]# cd libevent-2.0.16-stable/ 
[root@gjp99 libevent-2.0.16-stable]# ls  

2.7查看预安装目录:

[root@gjp99 libevent-2.0.16-stable]# ./configure --help |less

Installation directories: 
  --prefix=PREFIX       install architecture-independent files in PREFIX  [/usr/local]

2.8 开始安装----编译----整理

[root@gjp99 libevent-2.0.16-stable]# ./configure

[root@gjp99 libevent-2.0.16-stable]# make

[root@gjp99 libevent-2.0.16-stable]# make install

2.9 安装后的路径为非标准路径,系统不能自动进行加载

[root@gjp99 libevent-2.0.16-stable]# cd /usr/local/ 
[root@gjp99 local]# ll 
total 72 
drwxr-xr-x 2 root root 4096 Aug  8  2008 bin 
drwxr-xr-x 2 root root 4096 Aug  8  2008 etc 
drwxr-xr-x 2 root root 4096 Aug  8  2008 games 
drwxr-xr-x 2 root root 4096 Aug  8  2008 include 
drwxr-xr-x 2 root root 4096 Aug  8  2008 lib 
drwxr-xr-x 2 root root 4096 Aug  8  2008 libexec 
drwxr-xr-x 2 root root 4096 Aug  8  2008 sbin 
drwxr-xr-x 4 root root 4096 Aug  2 21:19 share 
drwxr-xr-x 3 root root 4096 Aug  3 14:09 src 
[root@gjp99 local]# cd lib 
[root@gjp99 lib]# pwd 
/usr/local/lib      //非标准路径

2.10 编辑配置文件,让系统能够顺利加载

[root@gjp99 lib]# vim /etc/ld.so.conf 
[root@gjp99 lib]# cat /etc/ld.so.conf 
include ld.so.conf.d/*.conf     //编辑配置文件,放到/etc/ld.so.conf.d目录下 
[root@gjp99 lib]# vim /etc/ld.so.conf.d/libevent.conf     //新创建的.conf文件 
[root@gjp99 lib]# cat /etc/ld.so.conf.d/libevent.conf 
/usr/local/lib/

3.安装并配置nginx

3.1 解压缩到指定文件夹

[root@gjp99 ~]# tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src/

image

3.2 安装---编译----整理

[root@gjp99 nginx-1.0.11]# ./configure --help |less    //查看要配置文件 
[root@gjp99 nginx-1.0.11]# groupadd  -r  nginx       //添加组 
[root@gjp99 nginx-1.0.11]# useradd -r -g nginx -s /bin/false  -M nginx  //建账户并添加组 
[root@gjp99 nginx-1.0.11]# ./configure \           //配置文件,带\表示换行 
>  --prefix=/usr \ 
>  --sbin-path=/usr/sbin/nginx \ 
>  --conf-path=/etc/nginx/nginx.conf \ 
>  --error-log-path=/var/log/nginx/error.log \ 
>  --http-log-path=/var/log/nginx/access.log \ 
>  --pid-path=/var/run/nginx/nginx.pid \ 
>  --lock-path=/var/lock/nginx.lock \ 
>  --user=nginx \ 
>  --group=nginx \ 
>  --with-http_ssl_module \ 
>  --with-http_flv_module \ 
>  --with-http_stub_status_module \ 
>  --with-http_gzip_static_module \ 
>  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 
>  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 
>  --with-pcre                //最后一个没带\,自动执行 
checking for OS         //检测操作系统 
+ Linux 2.6.18-164.el5 i686 
checking for C compiler ... found   //检测编译器 
using GNU C compiler   
+ gcc version: 4.1.2 20080704 (Red Hat 4.1.2-46) 
checking for gcc -pipe switch ... found

[root@gjp99 nginx-1.0.11]# make      //编译

[root@gjp99 nginx-1.0.11]# make insatll   //整理文档

3.3 查看nginx是否安装成功

[root@gjp99 sbin]# ll |grep nginx   
-rwxr-xr-x 1 root root  3910130 Aug  3 15:08 nginx

[root@gjp99 sbin]# nginx   //启动服务 
nginx: [emerg] mkdir() "/var/tmp/nginx/proxy/" failed (2: No such file or directory) 
[root@gjp99 sbin]# mkdir -pv /var/tmp/nginx   //创建相应目录 
mkdir: created directory `/var/tmp/nginx' 
[root@gjp99 sbin]# nginx     //启动服务 
[root@gjp99 sbin]# netstat -tupln |grep 80   //搜索相应端口 
tcp        0      0 0.0.0.0:870        0.0.0.0:*          LISTEN      2808/rpc.statd      
tcp        0      0 0.0.0.0:80          0.0.0.0:*          LISTEN      27630/nginx: master 
udp        0      0 0.0.0.0:864                 0.0.0.0:*             2808/rpc.statd      
udp        0      0 0.0.0.0:867                 0.0.0.0:*        2808/rpc.statd     

image

3.4 查看默认网页文件所放之处

[root@gjp99 usr]# ll -d html      //路径:/usr/html 
drwxr-xr-x 2 root root 4096 Aug  3 15:08 html 
[root@gjp99 usr]# cd html 
[root@gjp99 html]# ll 
total 8 
-rw-r--r-- 1 root root 383 Aug  3 15:08 50x.html 
-rw-r--r-- 1 root root 151 Aug  3 15:08 index.html 
[root@gjp99 html]# cat index.html 
<html> 
<head> 
<title>Welcome to nginx!</title> 
</head> 
<body bgcolor="white" text="black"> 
<center><h1>Welcome to nginx!</h1></center> 
</body> 
</html> 
[root@gjp99 html]# pwd 
/usr/html

4 . 常规应用: 

4.1 物理目录:

[root@gjp99 html]# mkdir gjp 
[root@gjp99 html]# cd gjp 
[root@gjp99 gjp]# echo "guo jiping " &gt;&gt;index.html

[root@gjp99 ~]# vim /etc/nginx/nginx.conf

43         location / {           //如果是location=/的话,只能访问主目录下的网页 
44             root   html; 
45             index  index.html index.htm; 
46         }

image 

4.2 虚拟目录:

[root@gjp99 ~]# mkdir /guo 
[root@gjp99 ~]# cd /guo 
[root@gjp99 guo]# echo "guo jiping tec" &gt;index.html

[root@gjp99 guo]# vim /etc/nginx/nginx.conf

image

[root@gjp99 guo]# pkill -1 nginx   //无需打断用户的请求,重启

image

4.3 基于ip的虚拟主机:

nginx主机配置:

[root@gjp99 guo]# mkdir /mkt 
[root@gjp99 guo]# cd /mkt 
[root@gjp99 mkt]# echo "market center "&gt;index.html 
[root@gjp99 mkt]# ifconfig eth0:0 192.168.20.101

[root@gjp99 mkt]# vim /etc/nginx/nginx.conf

35     server { 
36         listen    192.168.20.100:80; 
37         server_name  tec.gjp.com; 
38         access_log  /var/log/tec.access.log; 
39         error_log   /var/log/tec.error.log; 
40         root   /guo; 
41         index      index.html   index.htm; 
42         #charset koi8-r;

             中间省略……

82         }

83     server { 
84         listen    192.168.20.101:80; 
85         server_name  mkt.gjp.com; 
86         access_log  /var/log/mkt.access.log; 
87         error_log   /var/log/mkt.error.log; 
88         root   /mkt; 
89         index      index.html   index.htm;

               }

[root@gjp99 mkt]# pkill -1 nginx    //重启服务 
[root@gjp99 mkt]# pkill nginx         
[root@gjp99 mkt]# ps aux |grep nginx 
root     27799  0.0  0.0   3740   524 pts/1    S+   16:19   0:00 tail -f /var/log/nginx/access.log 
root     27806  0.0  0.0   3920   688 pts/0    R+   16:22   0:00 grep nginx 
[root@gjp99 mkt]# nginx

测试机配置:

C:\Windows\System32\drivers\etc

image

image

image

4.4 基于主机头的配置:

[root@gjp99 mkt]#

nginx主机配置:

vim /etc/nginx/nginx.conf

35     server { 
36         listen    192.168.20.100:80; 
37         server_name  tec.gjp.com; 
38         access_log  /var/log/tec.access.log; 
39         error_log   /var/log/tec.error.log; 
40         root   /guo; 
41         index      index.html   index.htm; 
42         #charset koi8-r;

             中间省略……

82         }

83     server { 
84         listen    192.168.20.100:80; 
85         server_name  mkt.gjp.com; 
86         access_log  /var/log/mkt.access.log; 
87         error_log   /var/log/mkt.error.log; 
88         root   /mkt; 
89         index      index.html   index.htm;

               }

[root@gjp99 mkt]# pkill -1 nginx

测试机:hosts文件修改

192.168.20.100  tec.gjp.com 
192.168.20.100  mkt.gjp.com

清除缓存:

image

image

image

5. mysql的安装

5.1  上传mysql 及php

image

5.2 解压mysql

由于mysql 为绿色软件,不是源代码,故拆解位置在/usr/local/下,若是源代码则应拆解在/usr/local/src下。

[root@gjp99 ~]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local

[root@gjp99 ~]# cd /usr/local

[root@gjp99 local]# cd mysql-5.5.15-linux2.6-i686/ 
[root@gjp99 mysql-5.5.15-linux2.6-i686]# ls 
bin      data  include         lib  mysql-test  scripts  sql-bench 
COPYING  docs  INSTALL-BINARY  man  README      share    support-files

5.3 查看安装文件并配置

vim INSTALL-BINARY

按照里面的安装步骤来详细配置mysql

groupadd mysql    //创建组mysql

useradd -r -g mysql mysql   // 创建系统帐号mysql,加入mysql组

cd /usr/local 进入/usr/local

ln -s mysql-5.5.15-linux2.6-i686 mysql   //为该目录设置软连接,方便使用

cd mysql

chown -R mysql .  //更改所有文件的所有者为mysql

chgrp -R mysql .  // 更改所有文件的所属组为mysql

scripts/mysql_install_db --user=mysql   //以mysql的身份执行scripts/mysql_install_db脚本

chown -R root .   //再将所有文件的所有者改为root

chown -R mysql data   //其中要将data目录及其子文件的所有者改为mysql

cp support-files/my-medium.cnf /etc/my.cnf

bin/mysqld_safe --user=mysql &    //启动mysql 数据库,3306 端口

如果想使用service mysqld restart ,来启动数据库,则需要在/etc/init.d下要有名为mysqld 的脚本,执行下面指令,创建/etc/init.d/mysqld脚本

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

[root@gjp99 mysql]# cp support-files/mysql.server /etc/init.d/mysqld 
[root@gjp99 mysql]# netstat -tupln |grep mysql 
tcp        0      0 :::3306                     :::*                        LISTEN      1922/mysqld  

停止服务,再重启,测试:

[root@gjp99 mysql]# service mysqld stop     
Shutting down MySQL.                                       [  OK  ] 
[root@gjp99 mysql]# netstat -tupln |grep mysql 
[root@gjp99 mysql]# service mysqld start 
Starting MySQL..                                           [  OK  ] 
[root@gjp99 mysql]# netstat -tupln |grep mysql 
tcp        0      0 :::3306                     :::*                        LISTEN      2279/mysqld    

5.4 设置mysqld开机自启动

[root@gjp99 mysql]# chkconfig --list |grep mysql  //没有设置

查看/etc/init.d/mysqld文件,chkconfig: 2345 64 36 : 2345 表示可设置在2345 级别下开机启动或关闭;64 表示s64mysqld ,开机启动顺序,可在/etc/rc.d/rc3.d下查看;36 表示K36mysqld ,关机时关闭服务顺序

image

[root@gjp99 mysql]# chkconfig --add mysqld 
[root@gjp99 mysql]# chkconfig --list |grep mysql 
mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off 
[root@gjp99 mysql]# chkconfig mysqld on

[root@gjp99 mysql]# ll /etc/rc.d/rc3.d/ |grep mysql 
lrwxrwxrwx 1 root root 16 Sep  3 18:12 S64mysqld -&gt; ../init.d/mysqld 
[root@gjp99 mysql]# ll /etc/rc.d/rc1.d/ |grep mysql 
lrwxrwxrwx 1 root root 16 Sep  3 18:12 K36mysqld -&gt; ../init.d/mysqld

5.5 调整库文件路径:

系统启动时,自动调用库文件,位置有/lib /usr/lib ,但是现在mysql的数据库文件位置在/usr/local/mysql/lib,编辑/etc/ld.so.conf文件,该文件指明包含ld.so.conf.d/下的所有.conf文件。在/etc/ld.so.conf.d/ 下新建mysql.conf文件,指明mysqld 的lib 文件的位置

[root@gjp99 mysql]# cat /etc/ld.so.conf 
include ld.so.conf.d/*.conf 
[root@gjp99 mysql]# vim /etc/ld.so.conf.d/mysql.conf 
[root@gjp99 mysql]# cat /etc/ld.so.conf.d/mysql.conf 
/usr/local/mysql/lib

5.6 查看是否加载到mysql 的lib 库文件

[root@gjp99 mysql]# ldconfig –v

[root@gjp99 mysql]# ldconfig -pv |grep mysql 
    libtcmalloc_minimal.so.0 (libc6) =&gt; /usr/local/mysql/lib/libtcmalloc_minimal.so.0 
    libmysqlclient.so.18 (libc6) =&gt; /usr/local/mysql/lib/libmysqlclient.so.18 
    libmysqlclient.so (libc6) =&gt; /usr/local/mysql/lib/libmysqlclient.so

系统的头文件位置有:/usr/include/ /usr/local/include/ ,但是mysql的头文件位置在/usr/local/mysql/include,为非标准路径,系统无法调用,应该指明位置,使系统能够找到该位置。可在 /usr/include/ 或者 /usr/local/include/下 做符号连接

[root@gjp99 mysql]# cd /usr/include 
[root@gjp99 include]# ln -s /usr/local/mysql/include/  mysql 
[root@gjp99 include]# ll mysql/ 
total 492 
-rw-r--r-- 1 root mysql  4209 Jul 14  2011 decimal.h 
-rw-r--r-- 1 root mysql  4087 Jul 14  2011 errmsg.h 
-rw-r--r-- 1 root mysql  7078 Jul 14  2011 keycache.h 
-rw-r--r-- 1 root mysql 27155 Jul 14  2011 m_ctype.h 
-rw-r--r-- 1 root mysql  9733 Jul 14  2011 m_string.h 
-rw-r--r-- 1 root mysql  1924 Jul 14  2011 my_alloc.h 
-rw-r--r-- 1 root mysql  2101 Jul 14  2011 my_attribute.h 
-rw-r--r-- 1 root mysql  4236 Jul 14  2011 my_compiler.h 
-rw-r--r-- 1 root mysql 15869 Jul 14  2011 my_config.h 
-rw-r--r-- 1 root mysql  7950 Jul 14  2011 my_dbug.h 
-rw-r--r-- 1 root mysql  3573 Jul 14  2011 my_dir.h 
-rw-r--r-- 1 root mysql  5453 Jul 14  2011 my_getopt.h 
-rw-r--r-- 1 root mysql 46803 Jul 14  2011 my_global.h 
-rw-r--r-- 1 root mysql  1506 Jul 14  2011 my_list.h 
-rw-r--r-- 1 root mysql  2002 Jul 14  2011 my_net.h 
-rw-r--r-- 1 root mysql 31701 Jul 14  2011 my_pthread.h 
drwxr-xr-x 3 root mysql  4096 Sep  3 17:50 mysql 

6.php的源码安装

6.1 解压缩php文件

[root@gjp99 ~]# tar -jxvf php-5.3.7.tar.bz2  -C /usr/local/src

[root@gjp99 ~]# cd /usr/local/src/ 
[root@gjp99 src]# ll 
total 12 
drwxr-xr-x 10  500  500 4096 Aug  3 14:23 libevent-2.0.16-stable 
drwxr-xr-x  9 1001 1001 4096 Aug  3 14:40 nginx-1.0.11 
drwxr-xr-x 13 1000 1000 4096 Aug 17  2011 php-5.3.7 
[root@gjp99 src]# cd php-5.3.7/ 
[root@gjp99 php-5.3.7]# ls

6.2 检测----编译----整理

6.2.1 检测预编译环境:

./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --with-libevent-dir=/usr/local --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-iconv-dir=/usr/local

image

6.2.2 编译make ,产生四类文件:头文件、库文件、可执行文件、说明文件 

directorytreeiterator.inc 
directorygraphiterator.inc 
invertedregexiterator.inc 
pharcommand.inc 
clicommand.inc 
phar.inc

Build complete. 
Don't forget to run 'make test'.

6.2.3  make install   //把对应文件放到相应目录

[root@gjp99 php-5.3.7]# make install 
Installing PHP SAPI module:       fpm 
Installing PHP CLI binary:        /usr/local/php/bin/ 
Installing PHP CLI man page:      /usr/local/php/man/man1/ 
Installing PHP FPM binary:        /usr/local/php/sbin/ 
Installing PHP FPM config:        /usr/local/php/etc/

6.3  拷贝配置文件.

[root@gjp99 php-5.3.7]# ll php* 
-rw-r--r-- 1 root root  1489 Sep  3 18:28 php5.spec 
-rw-r--r-- 1 1000 1000  1489 Sep 26  2007 php5.spec.in 
-rw-r--r-- 1 1000 1000  2523 Mar  7  2006 php.gif 
-rw-r--r-- 1 1000 1000 68898 Feb  9  2011 php.ini-development 
-rw-r--r-- 1 1000 1000 69128 Feb  9  2011 php.ini-production 
[root@gjp99 php-5.3.7]# cp php.ini-production  /usr/local/php/etc/php.ini

[root@gjp99 php-5.3.7]# cp /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf

[root@gjp99 php-5.3.7]# vim /usr/local/php/etc/php-fpm.conf

30 error_log = log/php-fpm.log

161 pm.max_children = 50

166 pm.start_servers = 20

171 pm.min_spare_servers = 5

176 pm.max_spare_servers = 3

182 pm.max_requests = 500

[root@gjp99 php-5.3.7]# /usr/local/php/sbin/php-fpm & 
[1] 30351

[root@gjp99 php-5.3.7]# echo "/usr/local/php/sbin/php-fpm &"&gt;&gt; /etc/rc.local 
[root@gjp99 php-5.3.7]# vim /etc/nginx/fastcgi.conf

image

[root@gjp99 php-5.3.7]# cd /etc/nginx/ 
[root@gjp99 nginx]# ls 
fastcgi.conf          fastcgi_params.default  mime.types          nginx.conf.default   uwsgi_params 
fastcgi.conf.default  koi-utf                 mime.types.default  scgi_params          uwsgi_params.default 
fastcgi_params        koi-win                 nginx.conf          scgi_params.default  win-utf 
[root@gjp99 nginx]# cat fastcgi.conf &gt; fastcgi_params

6.4 修改nginx的主配置文件

[root@gjp99 nginx]# vim /etc/nginx/nginx.conf 
 

image

image

[root@gjp99 nginx]# pkill nginx      //杀掉nginx进程 
[root@gjp99 nginx]# nginx            //启动nginx服务 
nginx: [emerg] mkdir() "/var/tmp/nginx/proxy/" failed (2: No such file or directory) 
[root@gjp99 nginx]# mkdir /var/tmp/nginx

6.5  测试: 
[root@gjp99 nginx]# cd /mkt 
[root@gjp99 mkt]# ll 
total 4 
-rw-r--r-- 1 root root 21 Sep  3 16:55 index.php 
[root@gjp99 mkt]# cat index.php 
<?php 
phpinfo(); 
?>

[root@gjp99 mkt]# nginx 

image

nginx  掉用php成功!

[root@gjp99 mkt]# vim index.php

image

 image

[root@gjp99 mkt]# service mysqld stop 
Shutting down MySQL..                                      [  OK  ]

image



本文转自 gjp0731 51CTO博客,原文链接:http://blog.51cto.com/guojiping/980836


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
搭建游戏陪玩源码系统架构,需要重视的几个方面
搭建游戏陪玩源码系统架构,需要重视的几个方面
37 0
一对一交友app源码实现平台搭建时会遇到的那些“坑”
在推流端可以检测网络状态或动态切换码率,以保障网络切换时的推流流畅。其次,编码、推流和封包这一部分的逻辑也可以进行微调,可以尝试选择性丢帧(比如优先丢视频参考帧),这样也可以减少要传输的数据内容,同时又达到了不影响直播画质和视听流畅的目的。
1615 0
直播源码搭建,手机直播源码开发
推流可以采用命令: ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0 input 可以是实时流,也可以是文件,如果是文件 需要加上-re。
1741 0
LNMP源码安装
wget http://down.linuxprobe.com/Tools/cmake-2.8.11.2.tar.gz wget http://down.
898 0
Ubuntu 搭建 LAMP 服务器
/******************************************************************** * Ubuntu 搭建 LAMP 服务器 * 说明: * 想尝试将一些东西以web的形式来进行访问、修改,于是想使用PHP来做 * 这件事情,其中使用JavaScript来自动化测试,mysql保存测试结果。
1345 0
23703
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载