文章目录

  • 一、环境
  • 二、服务器初始化
    • 1、设置主机名
    • 2、配置 apt 源
    • 3、关闭防火墙
    • 4、安装基本工具
    • 5、允许 root 远程登录
  • 三、安装 MySQL
    • 1、下载源码包
    • 2、编译安装
    • 3、后续配置
    • 4、权限设置
  • 四、安装 PHP
    • 1、安装依赖软件
    • 2、创建 www 用户
    • 3、下载源码包
    • 4、编译安装
    • 5、后续配置
  • 五、安装 Redis
    • 1、下载源码包
    • 2、编译安装
    • 3、创建配置文件
    • 4、创建启动脚本
  • 六、安装 Nginx
    • 1、下载源码包
    • 2、编译配置
    • 3、编译安装
    • 4、后续配置
    • 5、启动脚本
  • 七、配置环境变量

一、环境

软件 版本 安装目录
Ubuntu 20.04.3
Nginx 1.20.2 /data/nginx
MySQL 5.7.35 /data/mysql
Redis 5.0.5 /data/redis
PHP 5.6.40 /data/php
项目目录 /data/www

二、服务器初始化

1、设置主机名

hostnamectl set-hostname test.server

2、配置 apt 源

cat > /etc/apt/sources.list << EOF
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
EOF

更新软件源列表

apt-get update

3、关闭防火墙

ufw disable

4、安装基本工具

apt-get install -y wget vim net-tools bash* build-essential cmake bison libncurses5-dev libssl-dev pkg-config libxml2-dev zlib1g-dev libbz2-dev libcurl4-gnutls-dev libjpeg-dev libpng-dev libgmp-dev libgmp3-dev libmcrypt-dev mcrypt libedit-dev libreadline-dev libxslt1-dev libpcre3 libpcre3-dev libfreetype6-dev
source /usr/share/bash-completion/bash_completion

5、允许 root 远程登录

vim /etc/ssh/sshd_config

添加以下配置

PermitRootLogin yes

设置 root 用户密码

sudo passwd

三、安装 MySQL

1、下载源码包

wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.35.tar.gz

解压

tar -zxvf mysql-boost-5.7.35.tar.gz;cd mysql-5.7.35/

2、编译安装

编译配置

cmake . \
-DCMAKE_INSTALL_PREFIX=/data/mysql \
-DSYSCONFDIR=/data/mysql/ \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_BOOST=boost

查看CPU线程数

cat /proc/cpuinfo | grep processor | wc -l

根据线程数 设置 -j 的数值,例如:我的 CPU 为 16 线程,就设置为 16,这样可以加快编译速度

make -j 16 && make install

3、后续配置

cd /data/mysql/;mkdir mysql-files;chmod 750 mysql-files/

创建配置文件

vim my.cnf

添加以下内容

[mysqld]
port=3306
basedir=/data/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysqld.log

创建 mysql 普通用户

useradd -r -s /sbin/nologin mysql
chown -R mysql:mysql /data/mysql/

初始化设置

bin/mysqld --defaults-file=/data/mysql/my.cnf --initialize --user=mysql --basedir=/data/mysql
bin/mysql_ssl_rsa_setup --datadir=/data/mysql/data

创建启动脚本

cp support-files/mysql.server /etc/init.d/mysql

设置开机自启

update-rc.d mysql defaults

启动 MySQL

service mysql start && service mysql status

获取初始密码

grep -r root@localhost: mysqld.log
2021-11-17T14:02:38.114708Z 1 [Note] A temporary password is generated for root@localhost: -dlsNg?aW6mn

4、权限设置

登录 MySQL

bin/mysql -u root -p

运行以下 SQL

set password for root@localhost = password('123456Aa.');
grant all privileges on *.* to 'root'@'%' identified by '123456Aa.';
flush privileges;

四、安装 PHP

1、安装依赖软件

curl

ln -s /usr/include/x86_64-linux-gnu/curl/ /usr/local/include/curl

gmp

ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

freetype

cd /usr/local/src
wget https://nchc.dl.sourceforge.net/project/freetype/freetype2/2.8.1/freetype-2.8.1.tar.bz2
tar -xvf freetype-2.8.1.tar.bz2;cd freetype-2.8.1/
./configure --prefix=/usr/local/freetype
make && make install

openssl

cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar -zxvf openssl-1.0.2k.tar.gz;cd openssl-1.0.2k/
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make && make install
echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf && ldconfig

2、创建 www 用户

useradd -r -s /sbin/nologin www
mkdir /data/www;chown -R www:www /data/www

3、下载源码包

wget https://www.php.net/distributions/php-5.6.40.tar.gz
tar -zxvf php-5.6.40.tar.gz;cd php-5.6.40/

4、编译安装

编译配置

./configure \
--prefix=/data/php \
--with-config-file-path=/data/php/etc \
--enable-fpm \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-soap \
--with-libxml-dir \
--with-xmlrpc \
--with-openssl \
--with-mcrypt \
--with-mhash \
--with-pcre-regex \
--with-sqlite3 \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl=/usr/local/openssl \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-freetype-dir=/usr/local/freetype \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
-enable-mbstring \
--enable-mbregex \
--enable-mbregex-backtrack \
--with-libmbfl \
--with-onig \
--enable-pdo \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--enable-mysqlnd-compression-support \
--with-fpm-group=www \
--with-fpm-user=www \
--enable-pcntl \
--with-mysql

多线程编译安装

make -j 16 && make install

5、后续配置

创建 php.ini 配置文件

cp php.ini-production /data/php/etc/php.ini

创建启动脚本

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

设置开机自启

update-rc.d php-fpm defaults

创建 php-fpm.conf 配置文件

cd /data/php/etc/
cp php-fpm.conf.default php-fpm.conf

编辑 php.ini 文件

vim php.ini

更改配置

post_max_size = 64M
upload_max_filesize = 64M
date.timezone = PRC
cgi.fix_pathinfo=1
max_execution_time = 300

编辑 php-fpm 文件

vim php-fpm.conf

追加以下配置

pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 100
pm.max_requests = 500

启动 php-fpm 服务

service php-fpm start && service php-fpm status

五、安装 Redis

1、下载源码包

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxvf redis-5.0.5.tar.gz;cd redis-5.0.5/

2、编译安装

make && make install PREFIX=/data/redis

3、创建配置文件

mv redis.conf /data/redis/redis.conf

4、创建启动脚本

vim /usr/lib/systemd/system/redis.service

内容

[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target[Service]
PIDFile=/data/redis/redis.pid
ExecStart=/data/redis/bin/redis-server /data/redis/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
LimitNOFILE=655360
PrivateTmp=true
Type=notify
User=root
Group=root[Install]
WantedBy=multi-user.target

启动服务

systemctl start redis.service && systemctl enable redis.service

六、安装 Nginx

1、下载源码包

wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar -zxvf nginx-1.20.2.tar.gz;cd nginx-1.20.2/

2、编译配置

./configure \
--prefix=/data/nginx \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' \
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

3、编译安装

make -j 16 && make install

4、后续配置

配置vim语法高亮

cp -r contrib/vim/* /usr/share/vim/vim81/

nginx.conf 配置文件示例

vim /data/nginx/conf/nginx.conf
user  root;
worker_processes auto;events {worker_connections 1024;
}http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;client_max_body_size    200m;client_header_timeout   600s;client_body_timeout     600s;gzip on;gzip_min_length  1k;gzip_buffers     4 16k;gzip_http_version 1.0;gzip_comp_level 6;gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_vary on;include             /data/nginx/conf/mime.types;default_type        application/octet-stream;include /data/nginx/conf/vhosts/*.conf;
}

5、启动脚本

vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target[Service]
Type=forking
PIDFile=/data/nginx/logs/nginx.pid
ExecStart=/data/nginx/sbin/nginx -c /data/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /data/nginx/logs/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /data/nginx/logs/nginx.pid)"[Install]
WantedBy=multi-user.target

启动服务

systemctl start nginx.service && systemctl enable nginx.service

代理 php 服务配置(参考)

server {listen 80;server_name api.server.cn;rewrite ^(.*) https://$server_name$1 permanent;
}server {listen               443 ssl;server_name          api.server.cn;ssl_certificate      /data/nginx/ssl/api.server.cn.pem;ssl_certificate_key  /data/nginx/ssl/api.server.cn.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers          HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;index index.html index.php;root /data/www/html/api/web;rewrite (\/\.svn|.git\/) /404/;if ($http_user_agent ~* yahoo|bingbot) {return 403;}if ($query_string ~* ".*(insert|select|delete|update|count|master|truncate|declare|'|%27|%22|%3C|%3E|;|%20and%20|%20or%20).*"){return 404;}location / {add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';if ($request_method = 'OPTIONS') {return 204;}try_files $uri $uri/ /index.php$is_args$args;}location ~ .*\.(php|php5)?${fastcgi_pass  127.0.0.1:9000;fastcgi_param ENV 'prod';fastcgi_index index.php;include fastcgi.conf;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requested-With;add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;if ($request_method = 'OPTIONS') {return 204;}expires 30d;}location ~ .*\.(js|css)?${expires 1h;}#日志access_log  off;
}

七、配置环境变量

vim ~/.bashrc

追加以下内容

# MySQL
export PATH=$PATH:/data/mysql/bin# PHP
export PATH=$PATH:/data/nginx/sbin# Nginx
export PATH=$PATH:/data/php/sbin# Redis
export PATH=$PATH:/data/redis/bin
source ~/.bashrc

Ubuntu 20.04 LNMP 环境编译安装相关推荐

  1. ubuntu 20.04 ROS 环境下 使用 velodyne

    ubuntu 20.04 ROS 环境下 使用 velodyne 系统环境配置 硬件连接 网口配置 运行驱动程序 通过rviz可视化点云 系统环境配置 安装ROS依赖 sudo apt install ...

  2. Ubuntu 16.04源码编译安装Apache 2.4.25教程

    这篇文章主要为大家详细介绍了Ubuntu 16.04源码编译安装Apache 2.4.25,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家介绍了Ubuntu 16.04源码编译安装Apa ...

  3. Ubuntu 16.04 源码编译安装 uhd gnuradio

    Ubuntu 16.04 源码编译安装 uhd & gnuradio 环境介绍 UHD安装 1 安装依赖 2 编译 3 测试安装结果 4 配置 USB gnuradio安装 1 安装依赖 2 ...

  4. Ubuntu 20.04 系统最快安装WRF软件手册

    前言 天气研究和预报(WRF)模型是一种中尺度数值天气预报系统,在全球范围内用于业务预报和研究目的. 这是在基于Intel的i7(12核)Linux Ubuntu 20.04 LTS系统上安装WRF ...

  5. Ubuntu 20.04 LTS 系统下 安装Nvidia 显卡驱动、CUDA、cuDNN, 并可进行CUDA版本切换

    因为做深度学习的研究项目,为全新机器在Ubuntu 20.04 LTS 系统下 安装Nvidia 显卡驱动.Cuda.Cudnn.并进行CUDA版本切换 成功安装完成了,写个记录. 1. 安装Nvid ...

  6. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...

  7. VMWare中Ubuntu 20.04.3 LTS编译、安装FFmpeg

    记:准备入坑FFmpeg了,之前在Windows平台尝试编译FFmpeg源码,屡次失败,准备先在Ubuntu环境编译进行学习,之后再尝试在Windows环境下编译源码. 一.准备 Ubuntu 20. ...

  8. Ubuntu 20.04 源码编译Paddle2.2.2

    做研发,总是要不停装新机器和新系统.今天尝试了一下编译Paddle2.2.2. 先说结果: (1)Ubuntu20.04 + Python3.8.10 + gcc-8 (2)cuda和cudnn的版本 ...

  9. 分布式起步:Linux之Ubuntu 20.04.2.0 LTS安装与配置

    淘宝淘了两台ibm x61,加上原有的一台笔记本.台式机,准备搞个集群环境,模拟分布式部署.两个windows平台已经配置好.现把x61上安装linux过程记录如下: 一.准备操作系统 选择ubunt ...

  10. Ubuntu 20.04 搜索引擎环境搭建 (PostgreSQL 12.3, Redis 6, ELK[Elasticsearch 7.8, Logstash 7.8, Kibana 7.8])

    2021/02/04 更新redis安装步骤 在软件开发项目中,会遇到搜索引擎.日志收集等需求,本教程在阿里云选择公共镜像 Ubuntu 20.04 后,部署 apt-fast, java, axel ...

最新文章

  1. Windows服务BAT命令-安装、卸载、启动、停止
  2. 移动端html游戏开发,GitHub - PromeYang/GameBuilder: GameBuilder 是移动端轻量HTML5游戏快速开发框架,主要应用于活动推广。...
  3. 【拔刀吧少年】之shell编程规范与变量
  4. Spring Data JPA 从入门到精通~思维导图
  5. STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波
  6. 因遭做空机构指控存在金融欺诈 法拉第未来聘请律所展开调查
  7. html5表单与Jquery Ajax结合使用
  8. 操作系统总结之 输入输出系统(下)
  9. Android SDK 环境变量配置
  10. python爬虫出来空值_pandas | DataFrame基础运算以及空值填充
  11. FIL WORLD全球化应用,WORLD量化助推Filecoin生态落地
  12. 数据库开源项目_开源项目贴纸库
  13. 编译器怎么把多个源文件编译成一个程序
  14. 清华大学计算机系张昕,程序设计语言的研究与发展——如何推进国内程序设计语言的教育和研究?丨CNCC技术论坛...
  15. alt复制选区就会卡 ps_ps怎么把选区复制出来
  16. 2014福布斯中国富豪榜(名单)
  17. H5打开支付宝小程序
  18. Typora + PicGo + 七牛云图床
  19. 使用Apache搭建网站
  20. getDate方法的妙用(js判断闰年)

热门文章

  1. iKuai软路由模拟环境搭建
  2. 难得一读的古老的俗话
  3. 一图看懂西方哲学全脉络
  4. 嵌入式Linux入门-手把手教你初始化SDRAM(附代码)
  5. 离线安装linux的gcc,nvidia等错误
  6. 能不能算是PLSQL Developer的锅?
  7. python语句中print(type(1j))_Python语句 print(type(1/2))的输出结果是:______
  8. php 获取微博cookie,c#获取新浪微博登录cookie
  9. 储存卡数据丢失恢复方法
  10. 《Java解惑》系列——01表达式之谜——谜题09:半斤