熟悉开发环境,可以更好地完成开发工作。
本篇选用最新版本 Apache 2.4 + PHP 7.3 + PostgreSQL 11.2
服务器是 CentOS 7.6,全部编译安装
一、安装 Apache
1、安装包 - http://archive.apache.org/dist/httpd/httpd-2.4.38.tar.gz
2、安装
--------- 安装 pcre ----------
# cd /usr/local/src/
# wget https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz
# tar -axvf pcre-8.39.tar.gz
# cd pcre-8.39
# ./configure
# make
# make install
--------- 安装 apr ----------
# cd /usr/local/src/
# wget http://mirrors.ocf.berkeley.edu/apache/apr/apr-1.6.5.tar.gz
# tar -zxvf apr-1.6.5.tar.gz
# cd apr-1.6.5
# ./configure
# make
# make install
--------- 安装 apr-util ----------
# cd /usr/local/src/
# wget http://mirrors.ocf.berkeley.edu/apache/apr/apr-util-1.6.1.tar.gz
# tar -zxvf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1
# ./configure --with-apr=/usr/local/apr
# make
# make install
--------- 安装 Apache ----------
# cd /usr/local/src/
# wget http://archive.apache.org/dist/httpd/httpd-2.4.38.tar.gz
# tar -zxvf httpd-2.4.38.tar.gz
# cd httpd-2.4.38
# ./configure --prefix=/usr/local/apache --with-layout=Apache --enable-rewrite --enable-so --enable-expires --enable-proxy --enable-headers --enable-info --with-apr=/usr/local/apr --with-pcre=/usr/local/pcre
# make
# make install
--------- 设置开机自启动 ----------
systemctl 脚本存放在 /usr/lib/systemd/ 目录中,
Apache 设置为开机不登录即可启动,
# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
# ls /etc/init.d/ | grep httpd
# vim /etc/init.d/httpd
在第一行 #!/bin/sh 下面添加两行,三个数字代表运行、启动、停止的级别
#chkconfig: 345 85 15
#description: Start and stop the Apache HTTP Server
# chkconfig --add /etc/init.d/httpd
# service httpd start
3、遇到的问题
Q1:configure: error: You need a C++ compiler for C++ support.
A1:yum -y install gcc-c++
Q2:xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
A2:yum install expat-devel
Q3:collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] Error 1
make[2]: Leaving directory `/usr/local/src/httpd-2.4.38/support'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/httpd-2.4.38/support'
make: *** [all-recursive] Error 1
A3:# cp -r apr-1.6.5 httpd-2.4.38/srclib/apr
# cp -r apr-util-1.6.1 /usr/local/src/httpd-2.4.38/srclib/apr-util
Q4:AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.26.160.216. Set the 'ServerName' directive globally to suppress this message
A4:将 conf 的 #ServerName localhost:80 注释去掉即可。
二、安装 pgsql
1、安装包 - https://ftp.postgresql.org/pub/source/v11.2/postgresql-11.2.tar.gz
2、创建用户
# useradd postgres
# id postgres
# passwd postgres
3、安装
# cd /usr/local/src/
# wget https://ftp.postgresql.org/pub/source/v11.2/postgresql-11.2.tar.gz
# tar -zxvf postgresql-11.2.tar.gz
# chown -R postgres:postgres postgresql-11.2
# su postgres
$ cd postgresql-11.2
$ ./configure --prefix=/usr/local/postgresql-11.2
$ make
$ su root
# make install
# ln -s /usr/local/postgresql-11.2 /usr/local/pgsql
---------- 设置环境变量 --------------
# su - postgres
$ cd ~
$ vim .bash_profile
添加下面三行,路径改为自己的
export PGHOME=/usr/local/pgsql
export PGDATA=/usr/local/pgsql/data
export PATH=$PATH:$HOME/.local/bin:$PGHOME/bin
$ source .bash_profile
----------- 初始化数据库 ------------------
$ initdb
---------- 启动 psql 服务 ------------
$ pg_ctl -D /usr/local/pgsql/data -l logfile start
----------- 设置开机自启动 ----------
# cd /usr/local/src/postgresql-11.2/contrib/start-scripts
# chmod a+x linux
# cp linux /etc/init.d/postgresql
# chkconfig --add pgsql
# service pgsql start
------------- 连接测试 --------------------
$ psql
4、遇到的问题
Q1:configure: error: readline library not found
A1:$ rpm -qa | grep readline
$ yum -y install -y readline-devel
Q2:configure: error: zlib library not found
A2:yum install zlib-devel
Q3:bash: initdb: command not found
A3:initdb 的路径不对。应该写全路径或设置环境变量
Q4:-bash: psql: command not found
A4:确保 pgsql/bin/ 在环境变量中
三、安装 PHP
1、安装包 - https://www.php.net/distributions/php-7.3.4.tar.gz
2、安装
# cd /usr/local/src/ # wget https://www.php.net/distributions/php-7.3.4.tar.gz # tar -zxvf php-7.3.4.tar.gz # cd php-7.3.4 # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-pgsql=/usr/local/postgresql-11.2/bin --enable-sigchild --enable-mbstring --enable-mbregex --enable-bcmath --enable-sockets --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir --with-cdb --with-openssl --with-curl=/usr/lib/curl-7.62.0 --with-iconv # make # make install --------------- 配置环境变量 --------------------- # vim ~/.bashrc 添加下面三行 PATH=$PATH:$HOME/bin export PATH alias php=/usr/local/php/bin/php # source ~/.bashrc ------------------ 配置文件 -------------------- # cd /usr/local/php # cp /usr/local/src/php-7.3.4/php.ini-development ./lib/php.ini ----------------- httpd.conf 配置 ------------------ mime_module 中追加下面两行 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
# service httpd stop
# service httpd start
3、遇到的问题
Q1:configure: error: libxml2 not found. Please check your libxml2 installation.
A1:yum install libxml2-devel
Q2:configure: error: Cannot find OpenSSL's <evp.h>
A2:yum install openssl openssl-devel
Q3:configure: error: cURL version 7.15.5 or later is required to compile php with cURL support
A3:# cd /usr/local/src
wget https://curl.haxx.se/download/curl-7.62.0.tar.gz
# tar -zxvf curl-7.62.0.tar.gz
# cd curl-7.62.0
# ./configure --prefix=/usr/lib/curl-7.62.0
# make
# make install
Q4:configure: error: jpeglib.h not found.
A4:yum install libjpeg libjpeg-devel
Q5:configure: error: png.h not found.
A5:yum install libpng libpng-devel
Q6:Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
A6:yum install autoconf
四、配置域名,测试
。。