sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential autoconf libtool pkg-config \
libxml2-dev libssl-dev libcurl4-openssl-dev libonig-dev \
libsqlite3-dev libpng-dev libjpeg-dev libzip-dev \
libxslt1-dev libpcre2-dev zlib1g-dev
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar -xzvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-threads \
--with-file-aio
make
sudo make install
/lib/systemd/system/nginx.service
:[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx
wget https://www.php.net/distributions/php-8.2.10.tar.gz
tar -xzvf php-8.2.10.tar.gz
cd php-8.2.10
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--with-openssl \
--with-curl \
--with-zlib \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gd \
--with-jpeg \
--with-freetype \
--with-xsl \
--with-pear \
--enable-opcache
make
sudo make install
sudo cp php.ini-production /usr/local/php/etc/php.ini
sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
/lib/systemd/system/php-fpm.service
:[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
/etc/nginx/nginx.conf
,在 http 块中添加:server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
sudo mkdir -p /var/www/html
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/index.php
sudo systemctl restart nginx
http://your-server-ip
应该能看到 PHP 信息页面systemctl status nginx
systemctl status php-fpm
echo 'export PATH="/usr/local/php/bin:/usr/local/php/sbin:/usr/local/nginx/sbin:$PATH"' >> ~/.bashrc
source ~/.bashrc
sudo apt install -y php-mysql php-curl php-gd php-mbstring php-xml php-zip
这样就完成了在 Ubuntu 上从源码编译安装 PHP 和 Nginx 的全部过程。