玩转Linux:常用命令实例指南
1.概述Lnmp
名称 | 架构信息 |
---|---|
Lnmp | Linux(CentOS7)+Nginx(1.18)+Mysql(5.7.30)+php(7.3.18) |
2.下载Nginx+Mysql+php源包
#安装下载工具
yum install wget -y
#下载nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#下载mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.30.tar.gz
#下载php
wget https://www.php.net/distributions/php-7.3.18.tar.gz
下载源包比较慢,建议用迅雷下载
3.下载epel扩展库(额外附加的存储库)的repo
#下载epel
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#清除repo链接,才可以自动加载epel的库
yum clean all
4.安装处理编译文件包
#处理编译源文件包
yum install gcc gcc-c++ make cmake -y
5.源码编译nginx1.18
#安装nginx的依赖包
yum install zlib-devel openssl-devel pcre-devel -y
#解压Nginx源包
tar -zxvf /root/nginx-1.18.0.tar.gz
#创建nginx用户
useradd -s /sbin/nologin -c "Web Nginx" -M nginx
参数说明:
-s 新帐户的登录shell,/sbin/nologin表示禁止用户登录shell
-c 注释说明
-M 不创建家目录
#查看解压的目录
ls /root/nginx-1.18.0
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
#切换到上一次历史纪录的路径
cd !$
#查看当前目录
pwd
/root/nginx-1.18.0
#检查编译环境
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-pcre --with-http_stub_status_module --with-http_dav_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module
模块名称 | 模块说明 |
---|---|
--with-cpp_test_module | 测试头文件的C ++兼容性 |
--with-debug | 启用调试日志 |
``–``with-google_perftools_module | 允许使用Google Performance工具库 |
--with-http_addition_module | 在响应之前和之后添加文本 |
--with-http_auth_request_module | 根据子请求的结果实现客户端授权 |
-- with-http_dav_module | 使用WebDAV协议启用文件管理自动化 |
--with-http_degradation_module | 当内存大小超过定义的值时,允许返回错误 |
--with-http_flv_module | 为Flash Video(FLV)文件提供伪流服务器端支持 |
--with-http_geoip_module | 启用创建其值取决于客户端IP地址的变量。该模块使用MaxMind GeoIP数据库。要改为作为单独的动态模块进行编译,请将选项更改为–with-http_geoip_module = dynamic |
--with-http_gunzip_module | 对于不支持_zip_编码方法的客户端,使用Content-Encoding:gzip解压缩响应 |
--with-http_gzip_static_module | 允许发送扩展名为.gz的预压缩文件,而不是常规文件 |
--with-http_image_filter_module | 转换JPEG,GIF和PNG格式的图像。该模块需要LibGD库。要编译为单独的动态模块,请将选项更改为–with-http_image_filter_module=dynamic |
--with-http_mp4_module | 为MP4文件提供伪流服务器端支持 |
--with-http_perl_module | 用于在Perl中实现位置和变量处理程序,并将Perl调用插入SSI。需要PERL库。要编译为单独的动态模块,请将选项更改为–with-http_perl_module=dynamic |
--with-http_random_index_module | 处理以斜杠字符(’/’)结尾的请求,并在目录中选择一个随机文件作为索引文件 |
--with-http_realip_module | 将客户端地址更改为在指定的标头字段中发送的地址 |
--with-http_secure_link_module | 用于检查请求的链接的真实性,保护资源免受未经授权的访问,并限制链接的生存时间 |
-- with-http_slice_module | 允许将请求分为多个子请求,每个子请求返回一定范围的响应。提供对大文件的更有效的缓存 |
--with-http_ssl_module | 启用HTTPS支持。需要SSL库,例如OpenSSL |
--with-http_stub_status_module | 提供对基本状态信息的访问。请注意,NGINX Plus客户不需要此模块,因为它们已经提供了扩展状态指标和交互式仪表板 |
--with-http_sub_module | 通过将一个指定的字符串替换为另一个指定的字符串来修改响应 |
--with-http_xslt_module | 使用一个或多个XSLT样式表转换XML响应。该模块需要Libxml2和XSLT库。要编译为单独的动态模块,请将选项更改为–with-http_xslt_module=dynamic |
--with-http_v2_module | 启用对HTTP / 2的支持。有关详细信息,请参见NGINX博客上NGINX中的HTTP / 2模块 |
--with-mail | 启用邮件代理功能。要编译为单独的动态模块,请将选项更改为–with-mail=dynamic |
--with-mail_ssl_module | 提供对邮件代理服务器使用SSL / TLS协议的支持。需要SSL库,例如OpenSSL |
--with-stream | 启用TCP和UDP代理功能。要编译为单独的动态模块,请将选项更改为–with-stream=dynamic |
--with-stream_ssl_module | 提供对流代理服务器使用SSL / TLS协议的支持。需要SSL库,例如OpenSSL |
--with-threads | 使NGINX可以使用线程池。有关详细信息,请参见NGINX Boost Performance 9x中的线程池!在NGINX博客上 |
参考官方Nginx文档:请点击这里
#编译nginx
make
#安装nginx
make install
#查看安装后的文件
ll /usr/local/nginx/
total 16
drwxr-xr-x. 2 root root 4096 Jun 11 15:24 conf
drwxr-xr-x. 2 root root 4096 Jun 11 15:24 html
drwxr-xr-x. 2 root root 4096 Jun 11 15:24 logs
drwxr-xr-x. 2 root root 4096 Jun 11 15:24 sbin
#赋予所属用户和所属用户组
chown -R nginx:nginx /usr/local/nginx/
6.配置nginx支持php
#复制备份nginx.conf配置
cp /usr/local/nginx/conf/nginx.conf{,.bak}
#编辑nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
user nginx; #设置用户
......
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #File not found.php模块引导设置这里
include fastcgi_params;
}
......
#检查配置文件的是否有错误
nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#查看Nginx配置
grep -vE '#|^$' /usr/local/nginx/conf/nginx.conf
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
}
grep的参数说明:
-v Not操作,取反的参数
-E And操作,可以同时使用多个正则表达式的参数
-e Or操作,可以-e一个参数使用,例如:grep -ve '#' -e '^$' /usr/local/nginx/conf/nginx.conf同上面的查看是一致的
-v '#' 就是不要查看带有#号的字符
-v '^$' 就是不要查看带有空白符
#编辑nginx.sh文件,设置nginx环境变量
vi /etc/profile.d/nginx.sh
export PATH=/usr/local/nginx/sbin:$PATH
环境变量说明:
/etc/profile #全局的环境变量,所有用户都加载
/etc/profile.d/ #全局的环境变量,因为在/etc/profile中使用一个for循环语句来调用这些脚本,这个方便管理
~ .bash_profile #局部的环境变量,只有当前用户加载
~ .bashrc #这个也是局部的环境变量,只有当前用户加载
#生成环境变量
source /etc/profile.d/nginx.sh
#启动nginx
nginx
#查看nginx版本
nginx -v
nginx version: nginx/1.18.0
#查看nginx加载的模块
nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-pcre --with-http_stub_status_module --with-http_dav_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module
#设置nginx开机自动启动
echo '/usr/local/nginx/sbin/nginx' >> /etc/rc.d/rc.local
#赋予权限
chmod +x /etc/rc.d/rc.local
7.源码编译mysql5.7
参考Mysql官方文档,请点击以下链接:
请点击这里
#装了mariadb数据库的先要卸载
yum remove mariadb* -y
#安装mysql的依赖包
yum install bison ncurses-devel -y
#创建一个mysql组
groupadd mysql
#创建一个mysql用户
useradd -s /sbin/nologin -c "mysql data" -r -M -g mysql mysql
参数说明:
-s 新帐户的登录shell,/sbin/nologin表示禁止用户登录shell
-c 注释说明
-M 不创建家目录
--system 或 -r 创建一个系统帐户
-g 新建主组的名称
#下载Boost
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
#解压Boost
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
#创建mysql的存放数据的目录和安装目录
mkdir -p /var/lib/mysql/data
#赋予mysql所属用户和所属用户组权限
chown -R mysql:mysql /var/lib/mysql/
#解压mysql源码包
tar -zxvf /root/mysql-5.7.30-el7-x86_64.tar.gz
#切换到mysql目录
cd /root/mysql-5.7.30/
#检查mysql编译环境变量
cmake -DCMAKE_INSTALL_PREFIX=/var/lib/mysql \
-DMYSQL_DATADIR=/var/lib/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost_1_59_0
#编译mysql
make
#安装mysql
make install
#赋予mysql所属用户和所属用户组权限
chown -R mysql:mysql /var/lib/mysql/
参数名称 | 参数说明 |
---|---|
-DCMAKE_INSTALL_PREFIX | 指定MySQL程序的安装目录,默认MySQL使用为/usr/local/mysql |
-DMYSQL_DATADIR | 指定MySQL 程序的数据存放目录 |
-DSYSCONFDIR | 指定默认my.cnf选项文件目录 |
-DWITH_XXX_STORAGE_ENGINE | 静态编译到 mysql的存储引擎,InnoDB, MyISAM, MERGE, MEMORY以及 CSV 四种引擎默认即被编译至服务器,不需要特别指定 |
-DWITH_READLINE | 使用readline功能 |
-DMYSQL_UNIX_ADDR | 指定unix套接字目录,默认MySQL使用为 /tmp/mysql.sock |
-DMYSQL_TCP_PORT | 服务端口号,默认端口3306 |
-DENABLED_LOCAL_INFILE | ENABLED_LOCAL_INFILE控制客户端LOCAL功能的默认设置,对于服务器,local_infile系统变量控制服务器端LOCAL功能,默认值为OFF |
-DEXTRA_CHARSETS | 额外的编码,请使用ALL来编译 |
-DDEFAULT_CHARSET | 默认字符集,默认MySQL使用 latin1(cp1252西欧)字符集 |
-DDEFAULT_COLLATION | 服务器排序规则,默认MySQL使用 latin1_swedish_ci,使用该" show collation "语句确定每个字符集可以使用哪些排序规则 |
-DDOWNLOAD_BOOST | 是否下载Boost库,默认值为OFF |
-DWITH_BOOST | 指定Boost库目录位置 |
更详细的参数信息参考mysql官方文档,请点击以下链接:
请点击这里
8.设置mysql
#编辑mysql参数配置
vi /etc/my.cnf
[mysqld]
user=mysql
basedir=/var/lib/mysql
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
port=3306
character-set-server=utf8
log-error=/var/log/mysqld.log
pid-file=file=/tmp/mysqld.pid
[mysql]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
#设置mysql的环境变量
vi /etc/profile.d/mysql.sh
export PATH=/var/lib/mysql/bin:$PATH
#生效mysql的环境变量
source /etc/profile.d/mysql.sh
#复制启动脚本
cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld
#赋予权限
chmod +x /etc/init.d/mysqld
#设置开机mysql自动启动
echo '/var/lib/mysql/bin/mysqld &' >> /etc/rc.d/rc.local
#赋予权限
chmod +x /etc/rc.d/rc.local
#初始化数据
mysqld --user=mysql --initialize-insecure --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data
#赋予mysql所属用户和所属用户组权限
chown -R mysql:mysql /var/log/mysqld.log
#用/var/lib/mysql/bin/mysqld的二进制文件启动mysql
mysqld &
#查看mysql状态
/etc/init.d/mysqld status
注意:如果需要重新初始化数据
#停掉mysql
/etc/init.d/mysqld stop
#删除初始化数据的所有文件
rm -rf /var/lib/mysql/data/*
#重新初始化数据
mysqld --user=mysql --initialize-insecure --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data
9.修改mysql的数据库root密码
#登录mysql数据库
mysql
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
#修改root数据库密码
mysql> set password for root@localhost=password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)
#刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#退出数据库
mysql> exit
Bye
#测试密码是否修改成功
mysql -u root -p123456
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
10.源码编译php7.3
#卸载之前安装的php
yum remove php* -y
#安装php依赖包
yum install libmcrypt-devel libxml2-devel curl-devel libjpeg-devel libpng-devel freetype-devel -y
#下载cmake
wget http://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1.tar.gz
#卸载之前安装的cmake
yum remove cmake -y
#解压cmake
tar -zxvf /root/cmake-3.18.0-rc1.tar.gz
#切换到cmake目录下
cd /root/cmake-3.18.0-rc1
#检查cmake的编译环境变量
./configure --prefix=/usr/local/cmake
#编译cmake和安装cmake
make && make install
#设置cmake的环境变量
vi /etc/profile.d/cmake.sh
export PATH=/usr/local/cmake/bin:$PATH
#生成cmake的环境变量
source /etc/profile.d/cmake
#查看cmake版本信息
cmake --version
cmake version 3.18.0-rc1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
#下载libzip
wget https://libzip.org/download/libzip-1.7.1.tar.gz
#卸载之前安装过的libzip
yum remove libzip -y
#解压libzip
tar -zxvf /root/libzip-1.7.1.tar.gz
#切换到解压的libzip目录下
cd /root/libzip-1.7.1
#检查libzip环境变量
cmake
#编译libzip和安装libzip
make && make install
#添加搜索路径到配置文件
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.confl
#更新配置
ldconfig -v
#解压php7.3源码
tar -zxvf /root/php-7.3.18.tar.gz
#切换到php目录下
cd /root/php-7.3.18
#检查php7.3的环境变量
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/ \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--with-gd \
--with-curl \
--with-openssl \
--with-mhash \
--with-gettext \
--with-xmlrpc \
--without-pear \
--enable-fpm \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-pcntl \
--enable-sockets \
--enable-zip \
--enable-soap \
--enable-maintainer-zts \
--disable-fileinfo \
--disable-rpath
#编译php7.3
make
#安装php7.3
make install
参数名称 | 参数说明 |
---|---|
--prefix | 指定安装的路径 |
--with-config-file-path | 设置 php.ini 的搜索路径 |
--with-mysqli | mysqli 扩展技术不仅可以调用 MySQL 的存储过程、处理MySQL 事务,而且还可以使访问数据库工作变得更加稳定,是一个数据库驱动 |
--with-pdo-mysql | PDO提供了PHP应用程序层API接口,而mysqlnd,libmysql则负责与mysql server进行网络协议交互(它并不提供php应用程序层API功能) |
--with-iconv-dir | 支持iconv函数,这个函数的作用就是字符编码强制转换 |
--with-freetype-dir | 打开对 freetype 字体库的支持 |
--with-jpeg-dir | 打开对 jpeg 图片的支持 |
--with-png-dir | 打开对 png 图片的支持 |
--with-zlib | 打开 zlib 库的支持,实现 GZIP 压缩输出 |
--with-libxml-dir | 打开 libxml2 库的支持 ,libxml 是一个用来解析 XML 文档的函数库 |
--with-gd | 打开 gd 库的支持,是 php 处理图形的扩展库, GD 库提供 了 |
--with-curl | 打开 curl 浏览工具的支持 |
--with-openssl | 打开 ssl 支持 |
--with-mhash | 支持 mhash 算法扩展 |
--with-gettext | 打开gnu 的gettext 支持,编码库用到 |
--with-xmlrpc | 打开 xml rpc 的 c 语言 |
--without-pear | 禁用pear |
--enable-fpm | CGI 方式安装的启动程序,php-fpm 服务 |
--enable-xml | 支持 xml 文档 |
--enable-bcmath | 打开图片大小调整,用到 zabbix 监控的时候用到了这个模块 |
--enable-shmop | shmop 共享内存操作函数,可以与 c/c++ 通讯 |
--enable-sysvsem | 加上上面 shmop ,这样就使得你的 PHP 系统可以处理相关的 IPC 函数(活动在内核级别) |
--enable-inline-optimization | 优化线程 |
--enable-mbregex | 支持多字节正则表达式 |
--enable-mbstring | 多字节,字符串的支持 |
--enable-ftp | 打开ftp的支持 |
--enable-pcntl | freeTDS 需要用到的, pcntl 扩展可以支持 php 的多线程操 |
--enable-sockets | 打开 sockets 支持 |
--enable-zip | 打开对 zip 的支持 |
--enable-soap | 扩展库通过 soap 协议实现了客户端与服务器端的数据交互操 |
--enable-maintainer-zts | 启用线程安全 |
--disable-fileinfo | 关闭掉它是因为,经编译安装的时候服务器内存必须要大于1G |
--disable-rpath | 关闭额外的运行库文件 |
11.设置php7.3
#复制php.ini到编译安装后的目录下
cp /root/php-7.3.18/php.ini-production /usr/local/php/php.ini
#复制php-fpm。conf的配置文件
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.conf
#配置用户和用户组为nginx
vi /usr/local/php/etc/php-fpm.conf
......
user = nginx
group = nginx
......
#设置php的环境变量
vi /etc/profile.d/php.sh
export PATH=/usr/local/php/bin:$PATH
#生效php的环境变量
source /etc/profile.d/php.sh
#查看php的版本
php -v
PHP 7.3.18 (cli) (built: Jun 15 2020 17:34:12) ( ZTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.18, Copyright (c) 1998-2018 Zend Technologies
#复制php-fpm的启动脚本
cp /root/php-7.3.18/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#赋予执行的权限
chmod +x /etc/init.d/php-fpm
#设置开机自动启动php-fpm
chkconfig php-fpm on
#启动php-fpm
/etc/init.d/php-fpm start
12.测试配置是否成功
echo "" > /usr/local/nginx/html/index.php
13.解析index.php
#配置nginx的nginx.conf
vi /usr/local/nginx/conf/nginx.conf
......
location / {
root html;
index index.php index.html index.htm;
}
......
#重新加载nginx
nginx -s reload