Ubuntu 20.04 LNMP 环境编译安装
文章目录
- 一、环境
- 二、服务器初始化
- 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 环境编译安装相关推荐
- ubuntu 20.04 ROS 环境下 使用 velodyne
ubuntu 20.04 ROS 环境下 使用 velodyne 系统环境配置 硬件连接 网口配置 运行驱动程序 通过rviz可视化点云 系统环境配置 安装ROS依赖 sudo apt install ...
- Ubuntu 16.04源码编译安装Apache 2.4.25教程
这篇文章主要为大家详细介绍了Ubuntu 16.04源码编译安装Apache 2.4.25,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家介绍了Ubuntu 16.04源码编译安装Apa ...
- Ubuntu 16.04 源码编译安装 uhd gnuradio
Ubuntu 16.04 源码编译安装 uhd & gnuradio 环境介绍 UHD安装 1 安装依赖 2 编译 3 测试安装结果 4 配置 USB gnuradio安装 1 安装依赖 2 ...
- Ubuntu 20.04 系统最快安装WRF软件手册
前言 天气研究和预报(WRF)模型是一种中尺度数值天气预报系统,在全球范围内用于业务预报和研究目的. 这是在基于Intel的i7(12核)Linux Ubuntu 20.04 LTS系统上安装WRF ...
- Ubuntu 20.04 LTS 系统下 安装Nvidia 显卡驱动、CUDA、cuDNN, 并可进行CUDA版本切换
因为做深度学习的研究项目,为全新机器在Ubuntu 20.04 LTS 系统下 安装Nvidia 显卡驱动.Cuda.Cudnn.并进行CUDA版本切换 成功安装完成了,写个记录. 1. 安装Nvid ...
- 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1
目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...
- VMWare中Ubuntu 20.04.3 LTS编译、安装FFmpeg
记:准备入坑FFmpeg了,之前在Windows平台尝试编译FFmpeg源码,屡次失败,准备先在Ubuntu环境编译进行学习,之后再尝试在Windows环境下编译源码. 一.准备 Ubuntu 20. ...
- Ubuntu 20.04 源码编译Paddle2.2.2
做研发,总是要不停装新机器和新系统.今天尝试了一下编译Paddle2.2.2. 先说结果: (1)Ubuntu20.04 + Python3.8.10 + gcc-8 (2)cuda和cudnn的版本 ...
- 分布式起步:Linux之Ubuntu 20.04.2.0 LTS安装与配置
淘宝淘了两台ibm x61,加上原有的一台笔记本.台式机,准备搞个集群环境,模拟分布式部署.两个windows平台已经配置好.现把x61上安装linux过程记录如下: 一.准备操作系统 选择ubunt ...
- 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 ...
最新文章
- Windows服务BAT命令-安装、卸载、启动、停止
- 移动端html游戏开发,GitHub - PromeYang/GameBuilder: GameBuilder 是移动端轻量HTML5游戏快速开发框架,主要应用于活动推广。...
- 【拔刀吧少年】之shell编程规范与变量
- Spring Data JPA 从入门到精通~思维导图
- STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波
- 因遭做空机构指控存在金融欺诈 法拉第未来聘请律所展开调查
- html5表单与Jquery Ajax结合使用
- 操作系统总结之 输入输出系统(下)
- Android SDK 环境变量配置
- python爬虫出来空值_pandas | DataFrame基础运算以及空值填充
- FIL WORLD全球化应用,WORLD量化助推Filecoin生态落地
- 数据库开源项目_开源项目贴纸库
- 编译器怎么把多个源文件编译成一个程序
- 清华大学计算机系张昕,程序设计语言的研究与发展——如何推进国内程序设计语言的教育和研究?丨CNCC技术论坛...
- alt复制选区就会卡 ps_ps怎么把选区复制出来
- 2014福布斯中国富豪榜(名单)
- H5打开支付宝小程序
- Typora + PicGo + 七牛云图床
- 使用Apache搭建网站
- getDate方法的妙用(js判断闰年)
热门文章
- iKuai软路由模拟环境搭建
- 难得一读的古老的俗话
- 一图看懂西方哲学全脉络
- 嵌入式Linux入门-手把手教你初始化SDRAM(附代码)
- 离线安装linux的gcc,nvidia等错误
- 能不能算是PLSQL Developer的锅?
- python语句中print(type(1j))_Python语句 print(type(1/2))的输出结果是:______
- php 获取微博cookie,c#获取新浪微博登录cookie
- 储存卡数据丢失恢复方法
- 《Java解惑》系列——01表达式之谜——谜题09:半斤