CentOS7.4 源碼編譯安裝LNMP

一、基於CentOS7.4源碼編譯安裝得lnmp

系統環境CentOS 7.4

系統最小化安裝,只安裝了一些經常使用包(vim、lirzs、gcc*、wget、bash-completion)php

nginx版本1.14.0html

mysql版本5.7.20mysql

php版本7.2.6nginx

1.1 下載網絡yum源

[root@centos7_4 ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo -P /etc/yum.repos.d/    #這裏安裝的是阿里的網絡源,epel擴展源,也能夠安裝阿里的,可是阿里的epel源有些包不全,因此下面就直接用yum安裝網絡epel源c++

[root@centos7_4 ~]# yum -y install epel-releasesql

[root@centos7_4 ~]# ls /etc/yum.repos.d/數據庫

back  Centos-7.repo  CentOS-Media.repo  epel.repo  epel-testing.repovim

[root@centos7_4 ~]# yum clean all;yum makecachecentos

2 源碼編譯安裝nginx

2.1 安裝依賴包:

[root@centos7_4 ~]# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre*api

2.2 建立nginx運行用戶

[root@centos7_4 ~]# useradd -M -s /sbin/nologin nginx

下載pcre包

[root@centos7_4 ~]# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.zip

[root@centos7_4 ~]# unzip pcre-8.42.zip -d /usr/local/src/

2.3 下載nginx源碼包並解壓

[root@centos7_4 ~]# wget http://nginx.org/download/nginx-1.14.0.tar.gz

[root@centos7_4 ~]# tar zxf nginx-1.14.0.tar.gz -C /usr/local/src/

[root@centos7_4 ~]# cd /usr/local/src/nginx-1.14.0/

[root@centos7_4 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx \

--with-http_dav_module \

--with-http_stub_status_module \

--with-http_addition_module \

--with-http_sub_module \

--with-http_flv_module \

--with-http_mp4_module \

--with-http_ssl_module \

--user=nginx \

--group=nginx \

--with-pcre=/usr/local/src/pcre-8.42 \     #這個是可選項,若是yum安裝了依賴包這裏也能夠不用

2.4 編譯並安裝

[root@centos7_4 nginx-1.14.0]# echo $?

0

[root@centos7_4 nginx-1.14.0]# make

[root@centos7_4 nginx-1.14.0]# echo $?

0

[root@centos7_4 nginx-1.14.0]# make install

[root@centos7_4 nginx-1.14.0]# echo $?

0

2.5 修改配置文件

[root@centos7_4 nginx-1.14.0]# vim /usr/local/nginx/conf/nginx.conf    

    user  nginx nginx;      #修改用戶和組

        location ~ \.php$ {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;    #修改路徑

            include        fastcgi_params;

        }

2.6 添加環境變量,優化nginx服務

[root@centos7_4 ~]# /usr/local/nginx/sbin/nginx -t                    #檢查nginx語法是否正確

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@centos7_4 ~]# /usr/local/nginx/sbin/nginx            #安裝好的啓動路徑

[root@centos7_4 ~]# vim /etc/profile                      #添加環境變量

export PATH=$PATH:/usr/local/nginx/sbin

[root@centos7_4 ~]# source /etc/profile

[root@centos7_4 ~]# nginx

[root@centos7_4 ~]# netstat -antup|grep nginx

tcp    0    0 0.0.0.0:80        0.0.0.0:*       LISTEN      7417/nginx: master 

[root@centos7_4 ~]# vim /etc/init.d/nginx         #配置啓動腳本

#!/bin/bash

# chkconfig: 2345 99 20

#description: nginx-server

nginx=/usr/local/nginx/sbin/nginx

case $1 in

        start)

                netstat -anptu | grep nginx

                if [ $? -eq 0 ]

                then

                    echo "nginx service is already running"

                else

                     echo "nginx Service started successfully "

                    $nginx

                fi

         ;;

        stop)

                $nginx -s stop

                if [ $? -eq 0 ]

                then

                    echo "nginx service closed successfully"

                else

                    echo "nginx server stop fail,try again"

                fi

        ;;

        status)

                netstat -anlpt | grep nginx

                if [ $? -eq 0 ]

                then

                    echo "nginx server is running"

                else

                    echo "nginx service not started "

                fi

        ;;

        restart)

                 $nginx -s reload

                 if [ $? -eq 0 ]

                 then

                     echo "nginx service restart successfully "

                 else

                     echo "nginx server restart failed"

                 fi

        ;;

        *)

                 echo "please enter {start restart status stop}"

        ;;

esac

[root@centos7_4 ~]# chmod +x /etc/init.d/nginx

[root@centos7_4 ~]# chkconfig --add nginx

[root@centos7_4 ~]# chkconfig nginx on

配置nginx以守護進程方式啓動

[root@centos7_4 ~]# vim /lib/systemd/system/nginxd.service

[Unit]
Description=The Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
EnvironmentFile=/usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[root@centos7_4 ~]# systemctl daemon-reload

[root@centos7_4 ~]# systemctl restart nginxd.service

[root@centos7_4 ~]# systemctl enabled nginxd.service 

3 源碼安裝MySQL

3.1 卸載系統自帶的mariadb*

[root@centos7_4 ~]# yum -y remove mariadb* boost-*

3.2 安裝依賴包

[root@centos7_4 ~]# yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel           

3.3 下載源碼包

[root@centos7_4 ~]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.20.tar.gz

3.4 解壓源碼包

[root@centos7_4 ~]# tar zxf mysql-boost-5.7.20.tar.gz -C /usr/local/src/

3.5 配置編譯並安裝

[root@centos7_4 ~]# cd /usr/local/src/mysql-5.7.20/

[root@centos7_4 mysql-5.7.20]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=/usr/local/src/mysql-5.7.20/boost/boost_1_59_0 \

-DSYSCONFDIR=/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DENABLE_DTRACE=0 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DMYSQL_USER=mysql \

 

編譯並安裝

[root@centos7_4 mysql-5.7.20]# make

[root@centos7_4 mysql-5.7.20]# make install

3.6 建立數據庫用戶和數據目錄

[root@centos7_4 ~]# useradd -M -s /sbin/nologin -r mysql  

[root@centos7_4 ~]# mkdir -p /usr/local/mysql/data          #建立數據存儲目錄

[root@centos7_4 ~]# chown -R mysql.mysql /usr/local/mysql/     #更改屬主數組爲MySQL

3.7 配置my.cnf文件

[root@centos7_4 ~]# vim /etc/my.cnf             #如下是簡單配置

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port=3306

socket=/usr/local/mysql/mysql.sock

symbolic-links=0

character-set-server=utf8

pid-file=/usr/local/mysql/mysqld.pid     

log-error=/var/log/mysqld.log

 

3.8 配置MySQL啓動腳本

[root@centos7_4 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld                      #複製啓動腳本到/etc/init.d

[root@centos24 mysql-5.7.20]# ll /etc/init.d/mysqld                          #默認擁有執行權限

-rwxr-xr-x 1 root root 10576 Jun  7 19:27 /etc/init.d/mysqld

[root@centos7_4 mysql]# chkconfig --add mysqld                #添加到開機啓動項

[root@centos7_4 mysql]# chkconfig mysqld on                   #添加開機自啓動

[root@centos7_4 mysql]# vim /etc/init.d/mysqld                #修改路徑

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

[root@centos7_4 mysql]# vim /etc/profile                       #配置環境變量

export PATH=$PATH:/usr/local/mysql/bin

[root@centos7_4 mysql]# source /etc/profile                 #加載變量當即生效

配置MySQL啓動腳本,這個和上面的二選一均可以

[root@centos7_4 system]# vim mysqld.service

[Unit]

Description=MySQL DBMS

 

[Service]

LimitNOFILE=10000

Type=simple

User=mysql

Group=mysql

PIDFile=/usr/local/mysql/mysqld.pid

ExecStart=/usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data

ExecStop=/bin/kill -9 $MAINPID

 

[Install]

WantedBy=multi-user.target

[root@centos7_4 system]# chmod +x mysqld.service               #添加執行權限

[root@centos7_4 system]# systemctl enable mysqld.service       #設置開機啓動

3.9 安全初始化數據庫

[root@centos7_4 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data      #這樣初始化以後,數據庫是沒有密碼的

若是要想初始化以後分配臨時密碼,能夠將--initialize-insecure 紅色部分去掉,初始化以後,能夠分配到一個臨時密碼。

[root@centos7_4 ~]# /etc/init.d/mysqld start                     #啓動數據庫

Starting MySQL. SUCCESS!

[root@centos7_4 ~]# mysql -uroot                         #登陸數據庫修改root用戶密碼

mysql> alter user 'root'@'localhost' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

4 源碼編譯安裝PHP

4.1 安裝依賴包

[root@centos7_4 ~]# yum -y install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel re2c net-snmp-devel libjpeg-devel php-ldap openldap-devel openldap-servers openldap-clients freetype-devel gmp-devel

4.2 下載PHP源碼包

[root@centos7_4 ~]# wget http://cn2.php.net/distributions/php-7.2.6.tar.gz

4.3 解壓壓縮包

[root@centos7_4 ~]# tar zxf php-7.2.6.tar.gz -C /usr/local/src/

[root@centos7_4 ~]# cd /usr/local/src/php-7.2.6/

4.4 生成配置文件

[root@centos7_4 php-7.2.6]# ./configure --prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--with-mysqli \

--with-pdo-mysql \

--with-mysql-sock=/usr/local/mysql/mysql.sock \

--with-iconv-dir \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-curl \

--with-gd \

--with-gmp \

--with-zlib \

--with-xmlrpc \

--with-openssl \

--without-pear \

--with-snmp \

--with-gettext \

--with-mhash \

--with-libxml-dir=/usr \

--with-ldap \

--with-ldap-sasl \            #若是不添加這兩項,要是安裝zabbix監控時候,會有提示還得須要再次編譯,若是不安裝zabbix,也能夠忽略

--with-fpm-user=nginx \

--with-fpm-group=nginx \

--enable-xml \

--enable-fpm  \

--enable-ftp \

--enable-bcmath \

--enable-soap \

--enable-shmop \

--enable-sysvsem \

--enable-sockets \

--enable-inline-optimization \

--enable-maintainer-zts \

--enable-mbregex \

--enable-mbstring \

--enable-pcntl \

--enable-zip \

--disable-fileinfo \

--disable-rpath \

--enable-libxml \

--enable-opcache \

--enable-mysqlnd \

 

configure: error: Cannot find ldap libraries in /usr/lib.       #解決方法

[root@centos7_4 php-7.2.6]# cp -frp /usr/lib64/libldap* /usr/lib/    #在從新配置

4.5 編譯並安裝

[root@centos7_4 php-7.2.6]# make

/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_strdup'

/usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

make: *** [sapi/cli/php] Error 1

 

[root@centos7_4 php-7.2.6]# vim Makefile      #在以EXTRA_LIBS開頭的一行結尾添加‘-llber’

EXTRA_LIBS = -lcrypt -lz -lresolv -lcrypt -lrt -lldap -lgmp -lpng -lz -ljpeg -lz -lrt -lm -ldl -lnsl -lpthread -lxml2 -lz -lm -ldl -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lssl -lcrypto -lfreetype -lxml2 -lz -lm -ldl -lnetsnmp -lssl -lssl -lcrypto -lm -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lssl -lcrypto -lcrypt -llber

[root@centos7_4 php-7.2.6]# make

[root@centos7_4 php-7.2.6]# echo $?    

0

[root@centos7_4 php-7.2.6]# make install

[root@centos7_4 php-7.2.6]# echo $?    

0

4.6 配置php配置文件

移動php配置文件的位置,並修更名稱

[root@centos7_4 php-7.2.6]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.conf

複製php.ini文件

[root@centos7_4 php-7.2.6]# cp /usr/local/src/php-7.2.6/php.ini-production /usr/local/php/etc/php.ini

4.7 複製php啓動腳本到/etc/init.d/

[root@centos7_4 php-7.2.6]# cp /usr/local/src/php-7.2.6/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

添加執行權限,添加到啓動項並設置卡機啓動

[root@centos7_4 php-7.2.6]# chmod +x /etc/init.d/php-fpm

[root@centos7_4 php-7.2.6]# chkconfig --add php-fpm

[root@centos7_4 php-7.2.6]# chkconfig php-fpm on

啓動php-fpm

[root@centos7_4 ~]# /etc/init.d/php-fpm start

Starting php-fpm  done

 

[root@centos7_4 ~]# vim /usr/local/nginx/conf/nginx.conf

43         location / {

44             root   html;

45             index  index.php index.html index.htm;

46         }

[root@centos7_4 ~]# service nginx restart     #重啓nginx服務

 

編寫php探測文件

[root@centos7_4 ~]# vim /usr/local/nginx/html/index.php

<?php

        phpinfo();

?>

[root@centos7_4 ~]# netstat -antup|grep php-fpm

tcp    0    0 127.0.0.1:9000      0.0.0.0:*      LISTEN    128974/php-fpm: mas

 

經過瀏覽器測試

 

 

到這裏整個實驗已經完成了,新手上路,有什麼寫的不完善,還請各位大神多提寶貴意見

相關文章
相關標籤/搜索