编译安装lnmp 环境

一、lnmp环境介绍

lnmp 环境是指(linux、nginx、mysql、php)组成的服务端环境

二、linux

这里使用ubuntu

三、编译安装nginx

安装ubuntu  C编译环境:

sudo apt update
sudo apt install build-essential

安装必要的依赖包

sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
sudo apt-get install openssl libssl-dev

nginx 下载地址:https://nginx.org/en/download.html   选择适当的版本进行下载

下载完成后解压:

tar -xzvf nginx-1.24.0.tar.gz

 进入解压目录,编译安装nginx

./configure --prefix=/home/lyh/lnmp/nginx124 \    # 指定安装目录
--with-http_ssl_module                 \         #启用对https的支持
--with-http_v2_module                 \         #提供对 HTTP/2 的支持
--with-http_stub_status_module    \         #启动nginx监控模块,用于查看一些连接数等信息
--with-http_mp4_module              \          #运行nginx播放mp4文件

make    #编译
make install    #安装

 创建一个nginx的用户和用户组,且该用户不可登录

sudo useradd -s /sbin/nologin  nginx

修改nginx的安装目录所属用户和用户组为nginx

sudo chown -R nginx:nginx nginx124/

修改nginx的启动用户为nginx,编辑配置文件

#在全景配置项中添加改行配置
user  nginx;

重新加载配置文件(热加载)

sudo nginx -s reload

配置nginx 使用systemd启动 

cd /ect/systemd/system
touch nginx.server
chmod 644 nginx.service

添加一下内容(根据集体情况修改):

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/home/lyh/lnmp/nginx124/sbin/nginx -c /home/lyh/lnmp/nginx124/conf/nginx.conf
ExecReload=/home/lyh/lnmp/nginx124/sbin/nginx -s reload
ExecStop=/home/lyh/lnmp/nginx124/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target

设置开机启动

systemctl enable nginx.service

四、安装mysql

这里下载mysql5.7的社区版本(编译好的压缩版本),下载网页:https://dev.mysql.com/downloads/mysql/

下载完成后解压缩

tar -xzvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

ubuntu安装mysql5.7所需的依赖

sudo apt install -y libaio1 libmecab2

创建一个mysql的用户和用户组,且该用户不可登录

sudo useradd -s /sbin/nologin  mysql

修改mysql的安装目录所属用户组为mysql

sudo chown -R mysql:mysql  mysql57/

在 /etc/mysql 目录创建配置文件 my.cnf ,添加如下内容,配置内容参考官网:https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-post-install.html

[mysqld]
datadir=/home/lyh/lnmp/mysql57/data
socket=/tmp/mysql.sock
port=3306
log-error=/home/lyh/lnmp/mysql57/log/error.log
user=mysql
secure_file_priv=/home/lyh/lnmp/mysql57/mysql-files
local_infile=OFF

 初始化数据库,不然会报错缺少某些表的错误:

./bin/mysqld --defaults-file=/etc/mysql/my.cnf --initialize

 配置使用systemd 来启动mysql服务(参见:https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html)

cd /etc/systemd/system
touch mysqld.service
chmod 644 mysqld.service

添加一下配置内容(根据具体情况自行修改):

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

# Have mysqld write its state to the systemd notify socket
Type=notify

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Start main service
ExecStart=/home/lyh/lnmp/mysql57/bin/mysqld --defaults-file=/etc/mysql/my.cnf $MYSQLD_OPTS

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 10000

Restart=on-failure

RestartPreventExitStatus=1

# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1

PrivateTmp=false

 允许mysqld服务自动启动或重启

systemctl enable mysqld.service

使用systemctl启动mysql:

systemctl start mysqld

如果登录mysql报错:Access denied for user 'root'@'localhost' (using password:NO)

停止mysqld 服务,在 /etc/mysql/my.cnf 文件末尾添加:skip-grant-tables ,这样就允许了root用户无面登录。(生产环境不推荐)

 编译安装php

安装php所需依赖

apt install -y php-dev php-pear php-fpm php-mysql php-curl php-json php-xml php-zip php-gd php-mbstring libxml2 libxml2-dev libpcre2-dev sqlite3 libsqlite3-dev libcurl4-openssl-dev libpng-dev libwebp-dev libjpeg-dev

 编译安装

./configure --prefix=/home/lyh/lnmp/php8 \
--enable-fpm \ # 搭建lnmp,php后台进程 fastcgi,还可以通过参数指定fastcgi的启动用户
--with-openssl \ --with-external-pcre \ --with-zlib \ --enable-calendar \ --with-curl \ --enable-ftp \ --enable-gd \ --with-webp \ --with-jpeg \ --with-mysqli \ --enable-sockets \ --enable-soap make make install

 拷贝解压目录下的配置文件到安装目录

cp /home/lyh/download/php-8.3.2/php.ini-development /home/lyh/lnmp/php8/lib/php.ini

 配置fastcgi ,进入php安装目录下的 etc目录

cd /home/lyh/lnmp/php8/etc

拷贝一份配置文件

cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d/
cp www.conf.default www.conf

修改配置文件中的启动用户为php用户:

vim  www.conf

修改以下配置:

user = php
group = php

创建php用户

 useradd -s /sbin/nologin  php

修改php的安装目录所属用户好用户组为:php

chown -R php:php  php8/

启动php-fpm 进程

cd /home/lyh/lnmp/php8/sbin
./php-fpm
查看php后台进程端口号

root@lyh-2:/home/lyh/lnmp/php8/sbin# netstat -tunlp |grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1497/php-fpm: maste

 配置nginx支持php代码

进入nginx安装目录下的conf目录,编辑nginx.conf,去掉一下几行注释

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;

# 注意 下面一行原本是这样,fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; ,由于会报错,才改成了下面的这一行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

 重启nginx

systemctl restart  nginx

到此,nginx支持php代码配置完成。lnmp环境搭建完成

posted @ 2024-01-31 23:00  远洪  阅读(70)  评论(0)    收藏  举报