Ubuntu 16.04 系统编译部署lamp服务。
壹 下载Apache 和 PHP源码包:
Apache:http://httpd.apache.org/download.cgi
PHP:http://php.net/downloads.php
贰 安装依赖:
一、养成update,upgrade的好习惯,以免之后因为系统没更新而报错。
1、sudo apt-get update
这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。我们在新立得软件包管理器里看到的软件列表,都是通过update命令更新的。
update后,可能需要upgrade一下。
2、sudo apt-get upgrade
这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新。如果你的软件都是最新版本,会提示:升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
***总而言之,update是更新软件列表,upgrade是更新软件。
二 、需要的依赖:可能不是都需要,都装了也没啥错。
sudo apt-get install build-essential (这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。)
sudo apt install libapr1-dev libaprutil1-dev
sudo apt install libpcre3-dev zlib1g-dev
apt-get install libxml2-dev (以免这个报错:在某些平台上,您可能需要安装相应的-dev包,以允许httpd与您安装的APR和APR-Util进行构建。)
apt-get install libexpat-dev
apt-get install openssl libssl-dev
apt-get install make
apt-get install curl libcurl4-gnutls-dev
apt-get install libfreetype6-dev
apt-get install libjpeg-dev libpng12-dev
apt-get install libmcrypt-dev
apt-get install libreadline6 libreadline6-dev
PCRE:wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz (手动装一下)
叁 先装mysql。
因为装php需要设置和它相关的参数,不用编译装了,麻烦。
sudo apt-get update
sudo apt-get install mysql-server
测试:
systemctl status mysql.service
您将看到类似于以下内容的输出:
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en Active: active (running) since Wed 2016-11-23 21:21:25 UTC; 30min ago Main PID: 3754 (mysqld) Tasks: 28 Memory: 142.3M CPU: 1.994s CGroup: /system.slice/mysql.service └─3754 /usr/sbin/mysqld
如果MySQL没有运行,您可以启动它:
sudo systemctl mysql start
肆 编译安装apache:
一、编译安装大体流程都是:
1、解压源码包: tar -zxvf httpd-2.4.34.tar.gz
2、cd到解压的目录下: cd httpd-2.4.34
3、在上面的目录下执行编译: ./configure --prefix=/opt/apache2 --with-pcre=/opt/pcre --with-included-apr --enable-so
(👆泪与汉而得出的参数配置~~)
(--prefix=/opt/apache2:--prefix=后面接你指定的安装目录)
(--enable-so:让apache核心装载DSO,和php相关,必要的!)
(--with-included-apr:让之前不需要编译安装apr,apr-util,但要把他们解压到apache解压包的srclib目录下。)
4、make clean make clean (清理之前的安装环境,以免后面莫名其妙的报错)
5、make make
6、make install make install
二、检验Apache网站是否开通:
打开浏览器,输入网址:http://localhost/ 或者 localhost:80 或者你服务器的IP, 看到 It works 就行了 。
肆、安装php:
1、编译的主要参数:
./configure --prefix=/opt/php --with-apxs2=/opt/apache2/bin/apxs --with-mysql=mysqlnd --enable-mysqlnd --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --enable-fpm
2、php的配置文件需要手动调试一下:
i、cp php.ini-production /opt/php/lib/php.ini (配置文件要手动复制改名一份才有。)
ii、/opt/php/etc
cp php-fpm.conf.default php-fpm.conf (配置文件要手动复制改名一份才有。)
root@ubuntu:/opt/php/sbin# ./php-fpm (启动php)
*****这时遇到2个报错:
1、[30-Jul-2018 18:10:24] WARNING: Nothing matches the include pattern '/opt/php/etc/php-fpm.d/*.conf' from /opt/php/etc/php-fpm.conf at line 125.
[30-Jul-2018 18:10:24] ERROR: No pool defined. at least one pool section must be specified in config file
大概意思就是说找不到 opt/php7/etc/php-fpm.d/目录下的配置文件。 进入里面的目录,会有一个www.conf.default文件。执行下面命名复制一份。
关于找不到 nobody,除了创建一个nobody用户,还有一种方法
复制好之后,编辑该文件
root@ubuntu:/opt/php7/etc/php-fpm.d/# nano www.conf
定位到里面文件的 user = nobody 和 group = nobody ,调整为 www-data。这一步和5版编译安装一样。最后启动PHP-FPM
root@ubuntu:~# /opt/php7/sbin/php-fpm
root@ubuntu:~#
3、改/opt/apache2/conf/httpd.conf配置文件,让ahache和php关联起来:
配置文件是:/opt/apache2/conf/httpd.conf
加一句:AddType application/x-httpd-php.php.html
改这里:<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
*****又报错:
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
1、以为是端口问题:
root@iZj6c68y2crcy0uxvcavk9Z:/opt/php/sbin# netstat -lntup | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3645/php-fpm.conf)
root@iZj6c68y2crcy0uxvcavk9Z:/opt/php/sbin# killall php-fpm
2、杀进城,重启也不行。
root@iZj6c68y2crcy0uxvcavk9Z:/opt/php/sbin# service php-fpm start
Failed to start php-fpm.service: Unit php-fpm.service not found.
3、直到瞎摸索重启apache这个报错才知道,是不是php服务处问题,而是apache转发服务给php出问题,转发配置设置的不对,少了空格!!!
root@iZj6c68y2crcy0uxvcavk9Z:/opt/apache2/bin# ./apachectl stop
AH00526: Syntax error on line 390 of /opt/apache2/conf/httpd.conf:
AddType requires at least two arguments, a mime type followed by one or more file extensions
注意:要有空格的:AddType application/x-httpd-php .php .html
没有空格的:AddType application/x-httpd-php.php.html
4、在apache默认的网页目录下创建一个php文件:
vi /opt/apache2/htdocs/ 里创建一个文件info.php
// 文件内容
<?php
phpinfo();
?>
启动apache服务器测试一下:
/opt/apache2/bin# ./apachectl restart
打开浏览器:输入网址:ip+info.php回车 :
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了