LNMP 编译安装
nginx 编译安装
# yum install openssl openssl-devel gcc gcc-c++ pcre pcre-devel
# groupadd www
# useradd -g www www -s /sbin/nologin
# tar zxf nginx-1.10.0.tar.gz
# cd nginx-1.10.0
# ./configure --prefix=/usr/local/nginx --user=www --group=www --pid-path=/run/nginx.pid --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-stream --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-file-aio --with-pcre
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_v2_module --with-stream --with-http_gzip_static_module --with-file-aio --with-http_stub_status_module --with-pcre=../pcre-8.38 \\ GS代码
# make && make install
# /usr/local/nginx/sbin/nginx \\ 启动
# ss -tnl \\ 80端口被监控 注意 防火墙放行 关闭selinux
# /usr/local/nginx/sbin/nginx -V \\ 查看nginx 版本 及 编译参数
# /usr/local/nginx/sbin/nginx -s reload \\ 重新加载
# /usr/local/nginx/sbin/nginx -s stop \\ 停止
# cp /data/soft/nginx /etc/init.d/nginx \\ 复制启动脚本
# chmod +x /etc/init.d/nginx \\ 添加执行权限 注意pid路径是否与主配置文件路径相同...添加启动脚本 nginx
# chkconfig --add /etc/init.d/nginx \\ 添加到service 管理
# chkconfig nginx on \\ 添加开启启动
# service nginx start \\ 启动
# systemctl restart nginx \\ 重启
# ss -tnl \\ 80端口被监听
php 编译安装
# tar xzf php-7.3.4.tar
# yum install epel*
# yum install libjpeg-devel libpng-devel freetype-devel libicu-devel openldap-devel openssl-devel libxml2-devel bzip2-devel libmcrypt-devel libmcrypt php-mcrypt mcrypt curl curl-devel php-ldap gcc gcc-c++
# ./configure --prefix=/usr/local/php --enable-fpm --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --enable-sockets --enable-opcache --enable-zip --with-zlib --enable-bcmath --with-libxml-dir --with-gd --with-mysqli --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-gettext
# make -j4 \\ 快速 安装 编译7.3.11的时候会报错 mcrypt 忽略即可
# make install \\ --disable-fileinfo 1G以下内存要使用此命令编译 不然要报错
php 5.6及以下
# cp /data/soft/php-5.6.16/php.ini-production /etc/php.ini
# cp /data/soft/php-5.6.16/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# vim /usr/local/nginx/conf/nginx.conf \\ 在nginx 指向 php
location ~ \.php$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
# vim /usr/local/nginx/conf/fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; \\ 主要修改这项
# /usr/local/nginx/sbin/nginx -s reload
# vim /data/www/index.php
<?php
phpinfo();
?>
# chmod +x /etc/init.d/php-fpm
# chkconfig --add php-fpm
# service php-fpm start
# chkconfig php-fpm on
# ss -tnl \\ 127.0.0.1:9000端口被监听
php 7.3及以上
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
# vim php-fpm.conf
pid = /run/php-fpm.pid \\ 指定pid文件位置
# vim /usr/local/nginx/conf/nginx.conf \\ 在nginx 指向 php
location ~ \.php$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
# vim /usr/local/nginx/conf/fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; \\ 主要修改这项
# /usr/local/nginx/sbin/nginx -s reload \\ 重新加载
# vim /var/www/index.php
<?php
phpinfo();
?>
# /usr/local/php/sbin/php-fpm \\ 启动 如果提示curl.so等不能加载 删除/etc/php.d/*.ini即可
# kill -INT `cat /run/php-fpm.pid` \\ 关闭 没有大用处
# kill -USR2 `cat /run/php-fpm.pid` \\ 重启 没有大用处
# cp /data/soft/php-fpm /etc/init.d/php-fpm \\ 复制启动脚本 ... ... 添加启动脚本 php-fpm
# chmod +x /etc/init.d/php-fpm
# chkconfig --add php-fpm
# service php-fpm start
# chkconfig php-fpm on
# ss -tnl \\ 127.0.0.1:9000端口被监听
Mariadb 编译安装 \\ 已测试 Mysql 5.6.47 Mariadb 5.5 Mariadb 10.4.10 会报错先看注释01解决
# rpm -qa | grep mariadb
# rpm -qa | grep mysql
# yum remove mariadb-libs.x86_64
# yum install openssl-devel libxml2-devel bzip2-devel libmcrypt-devel libmcrypt php-mcrypt mcrypt
# yum install libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel
# yum install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel
# tar zxf mysql-5.6.47.tar.gz
# groupadd mysql
# useradd -g mysql mysql -s /sbin/nologin
# mkdir -p /data/mysqldb/{3306,innodb,mysql-bin,logs,run,relay-bin}
# chown -R mysql:mysql /data/mysqldb
# cd mysql-5.6.47
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/data/mysqldb/run/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysqldb
# make
# make install
# chown -R root:mysql /usr/local/mysql
# mkdir /etc/mysql
# rz \\ 复制进去my.cnf
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
# source /etc/profile
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb/3306
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
# systemctl restart mysqld
# ln -s /data/mysqldb/run/mysql.sock /tmp/mysql.sock \\ 由于配置文件修改了mysql.sock位置 安全初始化 会提示找不路径 方法一
# vim /usr/local/mysql/bin/mysql_secure_installation \\ 安全初始化 修改了mysql.sock路径 会提示找不到路径 需要修改此文件 方法二
write_file($config, \\ 此为方法二 但是 有的数据库版本 没有此行语句
...
...
"connect-expired-password", \\ 此项去掉 ")" 改成","
"socket=/data/mysqldb/run/mysql.sock"); \\ 大概在157行 插入此语句即可
}
# mysql \\ 如果提示找不到mysql.sock 可以用-S指明路径 # mysql -S /data/mysqldb/run/mysql.sock
mysql> use mysql
mysql> select user,host,password from user;
# /usr/local/mysql/bin/mysql_secure_installation \\ 设置密码y 删除匿名用户y 禁止root远程登录n 删除测试数据库y 重载授权表y
❷ Mariadb 编译安装 旧安装方法
# rpm -qa | grep mariadb
# rpm -qa | grep mysql
# yum remove mariadb-libs.x86_64
# yum install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel
# yum install libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel
# groupadd mysql
# useradd -g mysql mysql -s /sbin/nologin
# tar zxf mariadb-5.5.63.tar.gz
# cd mariadb-5.5.63
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DENABLE_DOWNLOADS=1 -DEXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_DATADIR=/data/mysql/ -DMYSQL_USER=mysql -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQL_MAINTAINER_MODE=0
\\ mariadb 5.5 使用上面代码进行编译
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
\\ mariadb 10.4 使用上面代码进行编译
# make && make install
# cd /usr/local/mysql
# chown -R root:mysql ./*
# mkdir -p /data/mysql/mysql \\ 多创建一个mysql目录是 主数据库 如果后创建 属主是root 执行./scripts/mysql_...命令会报权限错误
# chown -R mysql:mysql /data/mysql
# ./scripts/mysql_install_db --user mysql --datadir=/data/mysql \\ 创建主数据库等文件 一定要在/usr/local/mysql/目录下执行
# cd /usr/local/mysql/support-files
# cp my-large.cnf /etc/my.cnf \\ 10.4版本 # cp wsrep.cnf /etc/my.cnf 主配置文件最好放在/etc目录
# vim my.cnf
thread_concurrency = 8 \\ cup核心数乘以2
datadir = /data/mysql \\ 加 数据库目录
innodb_file_per_table = on \\ 加 独立表空间开启
skip_name_resolve = on \\ 加 跳过名称反解
# ./mysql.server start \\ 如果启动不起来 注意 mysql.server 中的数据库位置是否与配置文件位置相同
# cp mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list mysqld
# chkconfig mysqld on
# service mysqld restart
# vim /etc/profile.d/mysql.sh \\ 建立环境变量 指向mysql 才可以用mysql命令进入数据库
export PATH=/usr/local/mysql/bin:$PATH
# source /etc/profile \\ 重新加载环境变量 使之生效
# mysql
use mysql \\ 使用 mysql 数据库
select user,host,password from user; \\ 查询 user表中 这些字段 user表中保存 用户名密码
# /usr/local/mysql/bin/mysql_secure_installation \\ 安全初始化 需要在mysql运行时 管理员现在密码
\\ 要不要设置管理员密码 要不要删除匿名用户 要不要禁止管理员远程登录 要不要删除测试数据库 要不要授权表重载一下
注:
❶. 如果提示内存不足 需要创建交换分区
# dd if=/dev/zero of=/swapfile bs=8M count=256 \\ 创建 swap分区为2G 内存不够用时可用此分区做为内存使用
\\ 在编译10.4的时候内存低于1G会报错 要创建swap分区
# mkswap /swapfile \\ 格式化交换分区 bs=bytes:同时设置读入/输出的块大小为bytes个字节
\\ count=blocks:仅拷贝blocks个块,块大小等于ibs/bs指定的字节数
# swapon /swapfile \\ 启用/挂载 交换分区 # swapoff /swapfile 关闭 交换分区后可用rm删除
# swapon -s \\ 查看
# vim /etc/fstab \\ 开机自动 挂载 可使用 df -h 挂载的盘符
/swapfile swap swap defaults 0 0
❷. 如果安装其他软件后 mysql启动不起来,查看是否安装了 mariadb-libs 此程序会在/etc/下生成my.cnf 耽误正常启动,删除即可.
可使用 find / -name my.cnf* 或者 lsof -c mysqld|grep sock$ 命令查询,如zabbix等软件.
❸. 使用 Zabbix 连接数据库时 最好把mysql.sock目录设置在/var/lib/mysql/mysql.sock 可以在my.cnf中修改.要给此目录777权限
及mysql的属组权限,否则mysql启动不了.最好使用 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock建立软连接.
否则安全初始化会提示找不到/tmp/mysql.sock文件,注意权限问题.
[client]
socket = /var/lib/mysql/mysql.sock
[mysqld]
socket = /var/lib/mysql/mysql.sock
❹. php测试用连接数据库 \\ 需要端口 3306
<?php
$servername = "127.0.0.1";
$username = "root"; \\ 在Mariadb10.4.10中 不能使用root 需要创建测试账户 LNMP的注解01
$password = "123456";
$conn = new mysqli($servername, $username, $password);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "CREATE DATABASE teoDB";
if ($conn->query($sql) === TRUE) {
echo "数据库创建成功";
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
?>
❺. 安装wordpress 5.2.4以上的版本 页面排版错误需修改nginx配置文件location *.css 删除
❻. 安装wordpress 5.2.4以上的版本 安装不了主题提示ftp 需要修改WordPress权限为www 及 wp-content目录777权限