2312321 发表于 2016-5-16 09:29:49

源码搭建lamp和lnmp环境

1: lamp和lnmp解释

    lampn分别代表:linux、apache、mysql、php、nginx。安装大概思路如下:
      linux环境安装就省略了。
      1:mysql安装在两个环境都一样的。

      2: lnmp环境下nginx的安装。

      3: lamp环境下apache的安装。

      4: php在安装的时候应该算最复杂的了吧。其中,针对不同环境的编译选项不同。apache的编译选项--with-apxs2=/usr/local/apache2/bin/apxs,这里apache的安装目录在/usr/local/apache2/。nginx的编译选项--enable-fpm。

2: mysql的安装,直接上安装脚本

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/sh
LANG=C

if [ -d "/usr/local/mysql/" ];then
    echo "mysql is install"
    exit 1
else
    echo "mysql in not install"
fi

my_gcc=`rpm -qa gcc`
if [[ -n "$my_gcc" ]];then
    echo "$my_gcc"
else
    yum -y install gcc
fi

my_gcc_c=`rpm -qa gcc-c++`
if [[ -n "$my_gcc_c" ]];then
    echo "$my_gcc_c"
else
    yum -y install gcc-c++
fi

my_make=`rpm -qa make`
if [[ -n "$my_make" ]];then
    echo "$my_make"
else
    yum -y install make
fi

my_tar=`rpm -qa tar`
if [[ -n "$my_tar" ]];then
    echo "$my_tar"
else
    yum -y install tar
fi

my_openssl=`rpm -qa openssl`
if [[ -n "$my_openssl" ]];then
    echo "$my_openssl"
else
    yum -y install openssl
fi

my_openssl_devel=`rpm -qa openssl-devel`
if [[ -n "$my_openssl_devel" ]];then
    echo "$my_openssl_devel"
else
    yum -y install openssl-devel
fi

my_cmake=`rpm -qa cmake`
if [[ -n "$my_cmake" ]];then
    echo "$my_cmake"
else
    yum -y install cmake || (echo "install cmake failed, exit 2.";exit 2)
fi

my_ncurses=`rpm -qa ncurses`
if [[ -n "$my_ncurses" ]];then
    echo "$my_ncurses"
else
    yum -y install ncurses
fi

my_ncurses_devel=`rpm -qa ncurses-devel`
if [[ -n "$my_ncurses_devel" ]];then
    echo "$my_ncurses_devel"
else
    yum -y install ncurses-devel
fi

#make clean
#rm-f CMakeCache.txt
mkdir -p /data/mysql
groupadd mysql
useradd -g mysql -M -s /sbin/nologin mysql

cd /usr/local/src
tar -zxvf mysql-5.6.29.tar.gz
cd mysql-5.6.29
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1
if [ $? -ne 0 ];then
    echo "configure error. exit 2"
    exit 2
fi
echo "*******************************************"
echo "configure success"
echo "*******************************************"
echo "sleep 5, and begin make and make install"
sleep 5
make
make install
echo "install mysql success. mysql is in /usr/local/mysql"
#cd /usr/local/mysql
#chown -R mysql:mysql/usr/local/mysql
#./scripts/mysql_install_db --user=mysql-datadir=/data/mysql
#cp support-files/my-default.cnf /etc/my.cnf
#cp support-files/mysql.server /etc/init.d/mysqld
#bin/mysqld_safe --user=mysql &
#/etc/init.d/mysqld start




先简单将mysql设置如下:
cd /usr/local/mysql
chown -R mysql:mysql/usr/local/mysql
./scripts/mysql_install_db --user=mysql-datadir=/data/mysql
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
/usr/local/mysql/bin/mysqld_safe --user=mysql &

配置文件my.cnf配置如下:
socket = /data/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql

进入mysql设置:
mysql -uroot -S /data/mysql/mysql.sock
select user,host,password from mysql.user; 默认的root是空密码,有两个没用户的。
UPDATE `user` SET `password`=PASSWORD('xxxx') WHERE `User`='root';
delete from mysql where user='';
flush privileges;

mysql配置完成,两个环境都是由php操作mysql,这个并无差别。

2: nginx的安装,直接上安装脚本:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/sh
LANG=C

if [ -d "/usr/local/nginx/" ];then
    echo "nginx is install"
    exit 1
else
    echo "nginx in not install"
fi

my_gcc=`rpm -qa gcc`
if [[ -n "$my_gcc" ]];then
    echo "$my_gcc"
else
    yum -y install gcc
fi

my_gcc_c=`rpm -qa gcc-c++`
if [[ -n "$my_gcc_c" ]];then
    echo "$my_gcc_c"
else
    yum -y install gcc-c++
fi

my_make=`rpm -qa make`
if [[ -n "$my_make" ]];then
    echo "$my_make"
else
    yum -y install make
fi

my_tar=`rpm -qa tar`
if [[ -n "$my_tar" ]];then
    echo "$my_tar"
else
    yum -y install tar
fi

my_pcre=`rpm -qa pcre`
if [[ -n "$my_pcre" ]];then
    echo "$my_pcre"
else
    yum -y install pcre
fi

my_pcre_devel=`rpm -qa pcre-devel`
if [[ -n "$my_pcre_devel" ]];then
    echo "$my_pcre_devel"
else
    yum -y install pcre-devel
fi

my_zlib=`rpm -qa zlib`
if [[ -n "$my_zlib" ]];then
    echo "$my_zlib"
else
    yum -y install zlib
fi

my_zlib_devel=`rpm -qa zlib-devel`
if [[ -n "$my_zlib_devel" ]];then
    echo "$my_zlib_devel"
else
    yum -y install zlib-devel
fi

my_openssl=`rpm -qa openssl`
if [[ -n "$my_openssl" ]];then
    echo "$my_openssl"
else
    yum -y install openssl
fi

my_openssl_devel=`rpm -qa openssl-devel`
if [[ -n "$my_openssl_devel" ]];then
    echo "$my_openssl_devel"
else
    yum -y install openssl-devel
fi

cd /usr/local/src
tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
if [ $? -ne 0 ];then
    echo "configure error. exit 2"
    exit 2
fi
echo "*******************************************"
echo "configure success"
echo "*******************************************"
echo "sleep 5, and begin make and make install"
sleep 5
make
make install
echo "install nginx success. nginx is in /usr/local/nginx"
exit 0




nginx操作如下:

    /usr/local/nginx/sbin/nginx-t 检查配置
    /usr/local/nginx/sbin/nginx
    /usr/local/nginx/sbin/nginx-s stop

3: apache的安装,直接上安装脚本


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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/sh
LANG=C

if [ -d "/usr/local/apr/" ];then
    echo "apr is install"
    exit 1
else
    echo "apr in not install"
fi

if [ -d "/usr/local/apr-util/" ];then
    echo "apr_util is install"
    exit 1
else
    echo "apr-util in not install"
fi

if [ -d "/usr/local/apache2/" ];then
    echo "apache2 is install"
    exit 1
else
    echo "apache2 in not install"
fi

my_gcc=`rpm -qa gcc`
if [[ -n "$my_gcc" ]];then
    echo "$my_gcc"
else
    yum -y install gcc
fi

my_make=`rpm -qa make`
if [[ -n "$my_make" ]];then
    echo "$my_make"
else
    yum -y install make
fi

my_tar=`rpm -qa tar`
if [[ -n "$my_tar" ]];then
    echo "$my_tar"
else
    yum -y install tar
fi

my_libtool=`rpm -qa libtool`
if [[ -n "$my_libtool" ]];then
    echo "$my_libtool"
else
    yum -y install libtool
fi

my_pcre=`rpm -qa pcre`
if [[ -n "$my_pcre" ]];then
    echo "$my_pcre"
else
    yum -y install pcre
fi

my_pcre_devel=`rpm -qa pcre-devel`
if [[ -n "$my_pcre_devel" ]];then
    echo "$my_pcre_devel"
else
    yum -y install pcre-devel
fi

my_zlib=`rpm -qa zlib`
if [[ -n "$my_zlib" ]];then
    echo "$my_zlib"
else
    yum -y install zlib
fi

my_zlib_devel=`rpm -qa zlib-devel`
if [[ -n "$my_zlib_devel" ]];then
    echo "$my_zlib_devel"
else
    yum -y install zlib-devel
fi

my_openssl=`rpm -qa openssl`
if [[ -n "$my_openssl" ]];then
    echo "$my_openssl"
else
    yum -y install openssl
fi

my_openssl_devel=`rpm -qa openssl-devel`
if [[ -n "$my_openssl_devel" ]];then
    echo "$my_openssl_devel"
else
    yum -y install openssl-devel
fi

cd /usr/local/src
tar -zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
if [ $? -ne 0 ];then
    echo "configure error. exit 2"
    exit 2
fi
echo "*******************************************"
echo "configure success"
echo "*******************************************"
echo "sleep 5, and begin make and make install"
sleep 5
make
make install
echo "install apr success. apr is in /usr/local/apr"


cd /usr/local/src
tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util
if [ $? -ne 0 ];then
    echo "configure error. exit 2"
    exit 2
fi
echo "*******************************************"
echo "configure success"
echo "*******************************************"
echo "sleep 5, and begin make and make install"
sleep 5
make
make install
echo "install apr-util success. apr-util is in /usr/local/apr-util"

cd /usr/local/src
tar -zxvf httpd-2.4.18.tar.gz
cd httpd-2.4.18
./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --enable-expires --with-mpm=worker --enable-modules=most --enable-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
if [ $? -ne 0 ];then
    echo "configure error. exit 2"
    exit 2
fi
echo "*******************************************"
echo "configure success"
echo "*******************************************"
echo "sleep 5, and begin make and make install"
sleep 5
make
make install
echo "install apache2 success. apache2 is in /usr/local/apache2"




apache的启动与关闭:
    /usr/local/apache2/bin/apachectl -k start
    /usr/local/apache2/bin/apachectl -k stop


4.1: lnmp下php的安装,安装脚本

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#!/bin/sh
LANG=C

if [ -d "/usr/local/php" ];then
    echo "php is install"
    exit 1
else
    echo "php in not install"
fi

my_epel=`rpm -qa epel-release`
if [[ -n "$my_epel" ]];then
    echo "$my_epel"
else
    yum -y install epel-release
    sed -i 's/^#baseurl/baseurl/;s/^mirrorlist/#mirrorlist/' /etc/yum.repos.d/epel.repo
fi

my_gcc=`rpm -qa gcc`
if [[ -n "$my_gcc" ]];then
    echo "$my_gcc"
else
    yum -y install gcc
fi

my_gcc_c=`rpm -qa gcc-c++`
if [[ -n "$my_gcc_c" ]];then
    echo "$my_gcc_c"
else
    yum -y install gcc-c++
fi

my_make=`rpm -qa make`
if [[ -n "$my_make" ]];then
    echo "$my_make"
else
    yum -y install make
fi

my_tar=`rpm -qa tar`
if [[ -n "$my_tar" ]];then
    echo "$my_tar"
else
    yum -y install tar
fi

my_pcre=`rpm -qa pcre`
if [[ -n "$my_pcre" ]];then
    echo "$my_pcre"
else
    yum -y install pcre
fi

my_pcre_devel=`rpm -qa pcre-devel`
if [[ -n "$my_pcre_devel" ]];then
    echo "$my_pcre_devel"
else
    yum -y install pcre-devel
fi

my_zlib=`rpm -qa zlib`
if [[ -n "$my_zlib" ]];then
    echo "$my_zlib"
else
    yum -y install zlib
fi

my_zlib_devel=`rpm -qa zlib-devel`
if [[ -n "$my_zlib_devel" ]];then
    echo "$my_zlib_devel"
else
    yum -y install zlib-devel
fi

my_openssl=`rpm -qa openssl`
if [[ -n "$my_openssl" ]];then
    echo "$my_openssl"
else
    yum -y install openssl
fi

my_openssl_devel=`rpm -qa openssl-devel`
if [[ -n "$my_openssl_devel" ]];then
    echo "$my_openssl_devel"
else
    yum -y install openssl-devel
fi

my_libxml2=`rpm -qa libxml2`
if [[ -n "$my_libxml2" ]];then
    echo "$my_libxml2"
else
    yum -y install libxml2
fi

my_libxml2_devel=`rpm -qa libxml2-devel`
if [[ -n "$my_libxml2_devel" ]];then
    echo "$my_libxml2_devel"
else
    yum -y install libxml2-devel
fi

my_libcurl=`rpm -qa libcurl`
if [[ -n "$my_libcurl" ]];then
    echo "$my_libcurl"
else
    yum -y install libcurl
fi

my_libcurl_devel=`rpm -qa libcurl-devel`
if [[ -n "$my_libcurl_devel" ]];then
    echo "$my_libcurl_devel"
else
    yum -y install libcurl-devel
fi

my_libjpeg_devel=`rpm -qa libjpeg*|grep devel`
if [[ -n "$my_libjpeg_devel" ]];then
    echo "$my_libjpeg_devel"
else
    yum install libjpeg libjpeg-devel -y
fi

my_libpng=`rpm -qa libpng`
if [[ -n "$my_libpng" ]];then
    echo "$my_libpng"
else
    yum -y install libpng
fi

my_libpng_devel=`rpm -qa libpng-devel`
if [[ -n "$my_libpng_devel" ]];then
    echo "$my_libpng_devel"
else
    yum -y install libpng-devel
fi

my_freetype=`rpm -qa freetype`
if [[ -n "$my_freetype" ]];then
    echo "$my_freetype"
else
    yum -y install freetype
fi

my_freetype_devel=`rpm -qa freetype-devel`
if [[ -n "$my_freetype_devel" ]];then
    echo "$my_freetype_devel"
else
    yum -y install freetype-devel
fi

my_openldap=`rpm -qa openldap`
if [[ -n "$my_openldap" ]];then
    echo "$my_openldap"
else
    yum -y install openldap
fi

my_openldap_devel=`rpm -qa openldap-devel`
if [[ -n "$my_openldap_devel" ]];then
    echo "$my_openldap_devel"
else
    yum -y install openldap-devel
fi

my_libmcrypt=`rpm -qa libmcrypt`
if [[ -n "$my_libmcrypt" ]];then
    echo "$my_libmcrypt"
else
    yum -y install libmcrypt
fi

my_libmcrypt_devel=`rpm -qa libmcrypt-devel`
if [[ -n "$my_libmcrypt_devel" ]];then
    echo "$my_libmcrypt_devel"
else
    yum -y install libmcrypt-devel
fi

testldap=`ls -al /usr/lib/libldap*`
if [[ -n "$testldap" ]];then
    echo "$testldap"
else
    cp /usr/lib64/libldap* /usr/lib/
fi


cd /usr/local/src/
tar -zxvf php-5.6.17.tar.gz
cd php-5.6.17
./configure--prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --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-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --enable-fpm
#--with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config
if [ $? -ne 0 ];then
    echo "configure error. exit 2"
    exit 2
fi
echo "*******************************************"
echo "configure success"
echo "*******************************************"
echo "sleep 5, and begin make and make install"
sleep 5
make
make install
echo "install php success. php in /usr/local/php."




lnmp环境下php是使用php-fpm,lnmp环境最后配置的操作步骤如下:
    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    注意下php-fpm.conf的listen配置,后续要跟nginx的对得上:

    listen = 127.0.0.1:9000

    nginx的配置如下:
      location ~ \.php$ {
            root         html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_indexindex.php;
            fastcgi_paramSCRIPT_FILENAME$document_root/$fastcgi_script_name;
            include      fastcgi_params;
      }

    测试php:

      vi /usr/local/nginx/html/mytest.php
            <?php
                echo "mytest";
            ?>
      访问http://localhost:8809/mytest.php,测试使用的是虚拟机,url需要自行测试。

    测试php的mysql模块:
      $link=mysql_connect('127.0.0.1','root','zwh@654');
      if(!$link){
                echo "unlink to mysql";
      }else{
                echo "mysql is link success";
      }

   

    lnmp配置完成。


4.2 lamp下php的安装,安装脚本只需要把--enable-fpm改为--with-apxs2=/usr/local/apache2/bin/apxs,然后安装即可。
    注意,如果机器有安装fpm,把安装的路径和解压缩的文件删除掉或者备份到其它地方。不然可能会安装不成功。

    lamp的最后配置如下:

      1: apache上配置支持php,vi /usr/local/apache2/conf/httpd.conf
            AddType application/x-httpd-php .php
            LoadModule php5_module      modules/libphp5.so

            配置完重启apache。/usr/local/apache2/bin/apachectl -k restart

      测试如上。


      lamp搭建完成。

注:脚本中有一些软件需要下载,请到官网下载源码包,或者直接谷歌download 对应的文件名下载即可。

页: [1]
查看完整版本: 源码搭建lamp和lnmp环境