ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Ubuntu 20.04 LNMP 环境编译安装

2021-11-18 12:58:01  阅读:225  来源: 互联网

标签:enable http -- Ubuntu LNMP mysql php data 20.04


文章目录

一、环境

软件版本安装目录
Ubuntu20.04.3
Nginx1.20.2/data/nginx
MySQL5.7.35/data/mysql
Redis5.0.5/data/redis
PHP5.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 multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb 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-devel zlib1g-dev libbz2-dev libcurl4-gnutls-dev libjpeg-dev libpng-dev libgmp-dev libgmp3-dev libmcrypt-dev mcrypt libedit-dev libreadline-dev libxslt-dev libpcre3 libpcre3-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

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

freetype

cd /usr/local/src
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.8.1.tar.gz
tar zxvf freetype-2.8.1.tar.gz 
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 && make && make install
mv /usr/bin/openssl /usr/bin/openssl/openssl_bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

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

4、编译安装

cd php-5.6.40/

编译配置

./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/ssl \
--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

2、编译安装

cd redis-5.0.5/
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

2、编译配置

cd nginx-1.20.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_80/conf/mime.types;
    default_type        application/octet-stream;

    include /data/nginx/conf/vhosts/*.conf;
}

代理 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

标签:enable,http,--,Ubuntu,LNMP,mysql,php,data,20.04
来源: https://blog.csdn.net/qq_39680564/article/details/121387170

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有