在centos7安裝nginx+mysql8+php7(LNMP)


當前系統為centos7

參考這里

開始之前,先安裝一些庫和軟件,會用的着的,如果已經安裝過了,那么可以去掉

 

yum install -y \
libtool make automake mlocate \
pam-devel unzip gcc openssl openssl-devel \
iptables-services bash-completion* pcre-devel \
libxslt* perl-ExtUtils-Embed \
at gcc-c++ gperf rpm-build \
curl bzip2-devel libcurl-devel gd gd-devel \
t1lib t1lib-devel libmcrypt libmcrypt-devel libtidy \
libtidy-devel GeoIP-devel libatomic_ops-devel \
zlib-devel libstdc++* net-snmp net-snmp* \
gmp gmp-devel openldap openldap-devel

 

一、 編譯nginx

1. 獲取源碼並解壓

cd /usr/local/src
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar zxf nginx-1.16.0

2. 如果在下面編譯過程中提示缺少庫,則用yum安裝,如:HTTP rewrite模塊需要pcre、pcre-devel;HTTP gzip模塊需要zlib、zlib-devel

3. 設置編譯參數,這里我只設置安裝位置,其他參數可查看官方文檔(http://nginx.org/en/docs/configure.html

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

4. 編譯安裝

make && make install

5. 以后要是需要安裝其他模塊,先用原來的nginx查看編譯參數,在用原來的源碼重新編譯(make之后不執行make install安裝,否則原來的配置文件會被替換),編譯參數就填原來的參數,再加上想要的新模塊,編譯完之后在源碼目錄的objs目錄下有新的nginx,用它替換原來的nginx即可

# 查看編譯參數
[root@kyuan ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
configure arguments: --prefix=/usr/local/nginx

# 設置編譯參數后編譯不安裝
[root@kyuan ~]# cd /usr/local/src/nginx-1.16.0/
[root@kyuan nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
...
...
...
[root@kyuan nginx-1.16.0]# make

# 在源碼目錄下的objs目錄有新編譯出來的nginx
[root@kyuan ~]# ll /usr/local/src/nginx-1.16.0/objs/nginx
-rwxr-xr-x 1 root root 3825184 Jul 12 11:05 /usr/local/src/nginx-1.16.0/objs/nginx

二、編譯安裝php7

1. 獲取源碼並解壓

cd /usr/local/src
wget https://www.php.net/distributions/php-7.3.9.tar.gz
tar zxf ./php-7.3.9.tar.gz

2. 如果下面編譯過程中提示缺少什么庫,就用yum安裝什么庫(像編譯nginx那樣)

3. 設置編譯參數,把常用的模塊加上,可以直接復制下面的配置參數,也可以選擇一些最最常用的模塊

最最常用的,比如:mysql、gd、ttf、fpm模塊是最常用的(連接mysql數據庫、gd畫圖、ttf字體、fpm方式運行):

./configure --prefix=/usr/local/php7 \
--with-mysqli \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-fpm

較為常用的(建議):

./configure --prefix=/usr/local/php7 \
--enable-bcmath --with-bz2 \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvmsg \
--enable-sysvshm \
--enable-wddx \
--enable-xml \
--enable-zip \
--enable-inline-optimization \
--enable-session \
--enable-shared \
--enable-pcntl \
--enable-mbregex \
--enable-exif \
--enable-gd-jis-conv \
--enable-fpm \
--enable-opcache \
--enable-gd-native-ttf \
--enable-dba \
--with-gd \
--with-fpm-user=nobody \
--with-fpm-group=nobody \
--with-mysqli \
--with-pdo-mysql \
--with-openssl \
--with-curl \
--with-tidy \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-pear \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-gettext \
--with-mcrypt \
--with-mhash \
--with-pcre-regex \
--with-libdir \
--with-kerberos \
--with-xpm-dir \
--with-iconv \
--with-snmp \
--with-gmp 

**出現錯誤的解決方案:

1. 提示libzip版本太低,則到https://nih.at/libzip/libzip-1.2.0.tar.gz下載1.2.0的源碼編譯安裝(要先卸載原來的libzip)。

2. 提示錯誤:找不到zipconf.h,則find / -name zipconf.h 搜索一下,是在 /usr/local/lib/libzip/include/zipconf.h,手動把zipconf.h復制到/usr/local/include/zipconf.h,或者用 ln 命令創建一個軟連接,連接到/usr/local/include/zipconf.h也行。

3. 提示錯誤:off_t undefined; check your library configuration,則

# 添加搜索路徑到配置文件
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf
# 更新配置
ldconfig -v

4. 缺少libtidy,用yum安裝,如果yum沒有資源,則在http://binaries.html-tidy.org/下載一個rpm,用rpm安裝

4. 編譯安裝

make && make install

5. 安裝完后,把源碼目錄下的php.ini-development復制到php目錄的lib目錄下(這個目錄是默認的配置文件目錄),命名為php.ini;

你也可以在編譯之前配置--with-config-file-path參數,指定配置文件的目錄

cp /usr/local/src/php-7.3.7/php.ini-development /usr/local/php7/lib/php.ini

5.1 復制一份php-fpm的配置文件

cd /usr/local/php7/etc
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php7/etc/php-fpm.d
cp www.conf.default www.test.conf

5.2 如果想在終端直接執行php,可以將 /usr/local/php7/bin 這個路徑加入到環境變量中。

6. 啟動php-fpm,默認監聽9000端口

/usr/local/php7/sbin/php-fpm

6.1 查看php-fpm進程

[root@localhost php7]# ps -aux | grep php
root     30699  0.0  0.7 250584  7912 ?        Ss   13:41   0:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
nobody   30700  0.0  0.7 250584  7660 ?        S    13:41   0:00 php-fpm: pool www
nobody   30701  0.0  0.7 250584  7660 ?        S    13:41   0:00 php-fpm: pool www
root     30738  0.0  0.0 112728   996 pts/0    S+   13:42   0:00 grep --color=auto php

7. 如果以后需要什么模塊,可以使用phpize編譯模塊,比如需要curl模塊

# 1、進入模塊源碼目錄執行phpize
cd /usr/local/src/php-7.3.7/ext/curl
/usr/local/php7/bin/phpize

# 2、設置php配置文件路徑
./configure --with-php-config=/usr/local/php7/bin/php-config
make              # 成功后會在 ./module 里面生成一個 curl.so
make install     # 安裝這個模塊(就是把curl.so復制到php的擴展目錄下)

# 3、修改php.ini,加入extension=curl.so # 4、查看已有的模塊
/usr/local/php7/bin/php -m

 如果在執行phpize的時候,出現說cannot find autoconf,比如:

Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

則先安裝autoconf(可以用yum安裝)

查看模塊目錄

/usr/local/php7/bin/php -i | grep extension_dir

三、安裝MySQL8

下載repository,yum安裝(參考官方文檔https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html

cd /usr/local/repo
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum localinstall mysql80-community-release-el7-3.noarch.rpm
yum install mysql-community-server

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM