一、企业LNMP单点部署
LNMP是“Linux+Nginx+MySQL+PHP”的简称
服务器 | IP | 部署的应用 |
---|---|---|
web服务器 | 192.168.204.130 | Nginx+php-fpm+mysql-boost |
部署LNMP
Nginx版本:nginx-1.14.2
PHP版本:php-7.2.12
MySQL版本:mysql-boost-5.7.31
将所有需要的软件包上传到/opt目录
所有解压操作都在/opt目录下进行
关闭防火墙,关闭selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config
1.源码编译安装nginx
1.1创建运行worker进程的用户
useradd -M -s /sbin/nologin www
1.2解压源码包并进入解压后生成的目录
tar xf nginx-1.14.2.tar.gz
cd nginx-1.14.2
1.3安装环境依赖包
yum -y install gcc gcc-c++ make pcre-devel zlib-devel openssl
1.4编写配置脚本
vim mynginx.sh
./configure \
--prefix=/usr/local/nginx \
--user=www --group=www \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_rewrite_module \
--with-http_realip_module \
--with-http_gzip_static_module
:wq #按ESC返回命令模式,输入':'进入编辑模式,输入'wq'保存退出
选项 | 说明 |
---|---|
–prefix=/usr/local/nginx | 指定安装路径 |
–user=www --group=www | 指定运行worker进程用户和组 |
–with-http_ssl_module | 使用https协议进行通信,对通信的流量进行加密 |
–with-http_stub_status_module | 启用该模块以支持状态统计 |
–with-http_rewrite_module | 基于正则匹配实现重定向 |
–with-http_realip_module | 获取调度器转发的请求报文首部中真实客户端的IP |
–with-http_gzip_static_module | 对HTTP包的内容做gzip预压缩 |
1.5为脚本赋予执行权限并执行
chmod +x mynginx.sh
./mynginx.sh
1.6编译&&安装
make -j2 && make install #'-j2' 选项可以提升编译速度
1.7将nginx添加到环境变量
echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> /etc/profile
source /etc/profile
1.8配置nginx做为系统服务
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx web service
Documentation=http://nginx.org/en/docs/
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=default.target
:wq
1.9添加到开机启动项
systemctl enable nginx
2.源码编译安装MySQL
2.1删除系统自带的数据库
rpm -qa | grep mari*
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
2.2创建MySQL运行用户
useradd -M -s /sbin/nologin mysql
2.3解压源码包并进入解压后生成的目录
tar xf mysql-boost-5.7.31.tar.gz
cd mysql-boost-5.7.31
2.4安装环境依赖包
yum -y install \
cmake \
gcc gcc-c++ \
ncurses ncurses-devel \
libarchive \
libtirpc libtirpc-devel \
libaio-devel \
openssl openssl-devel
选项 | 说明 |
---|---|
cmake | mysql需要cmake编译 |
gcc gcc-c++ | C语言编译器和C++编译器 |
ncurses ncurses-devel | 字符终端下有图形互动功能的动态库和开发工具 |
libarchive | |
libtirpc libtirpc-devel | |
libaio-devel | |
openssl openssl-devel |
2.5编写配置文件
vim myconfig.sh
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/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
:wq
选项 | 说明 |
---|---|
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql | 指定MySQL安装路径 |
-DMYSQL_DATADIR=/usr/local/mysql/data | 指定数据库文件存储路径 |
-DMYSQL_TCP_PORT=3306 | 指定默认端口 |
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock | 指定套接字文件存储路径,数据库连接的文件 |
-DWITH_INNOBASE_STORAGE_ENGINE=1 | 安装INNOBASE存储引擎 |
-DWITH_PARTITION_STORAGE_ENGINE=1 | 安装PARTITION存储引擎 |
-DWITH_FEDERATED_STORAGE_ENGINE=1 | 安装FEDERATED存储引擎 |
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 | 安装BLACKHOLE存储引擎 |
-DWITH_MYISAM_STORAGE_ENGINE=1 | 安装MYISAM存储引擎 |
-DENABLED_LOCAL_INFILE=1 | 启动LOCAL_INFILE |
-DEXTRA_CHARSETS=all | 指定支持其他的字符集编码 |
-DDEFAULT_CHARSET=utf8mb4 | 指定默认使用的字符集编码 |
-DDEFAULT_COLLATION=utf8mb4_general_ci | 指定默认的字符集校对规则 |
-DWITH_SSL=system | 使用系统上的自带的SSL库 |
-DWITH_BOOST=boost | 指定boost路径,由于这次安装的版本自带boost,所以只需填上名称即可 |
2.6为脚本赋予执行权限并执行
chmod +x myconfig.sh
./myconfig
2.7编译&&安装
make -j2 && make install
MySQL编译时间较长,根据主机性能,一般在15~30分钟左右。进度条不动的时候,可以新建一条远程连接,使用top命令查看编译进程是否仍在运行。
2.8修改安装目录属主、属组
chown -R mysql.mysql /usr/local/mysql
2.9初始化数据库
cd /usr/local/mysql
bin/mysqld --initalize --user=mysql --basedir=/usr/local/mysql datadir=/usr/local/mysql/data
初始化成功后,会生成一个初始密码
2.10添加到环境变量
echo 'PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
2.11添加到service服务管理&&设置开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
2.12编写配置文件
vim /usr/local/mysql/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql
socket=/usr/local/mysql/mysql.sock
:wq
2.13启动数据库
service mysql start
2.14设置数据库管理员密码
/usr/local/mysql/bin/mysqladmin -uroot password '输入新密码' -p
Enter password:#输入初始密码(密码不会显示)
2.15登录数据库
mysql -uroot -p
Enter password:#输入设置的新密码
3.源码编译安装PHP
3.1安装环境依赖包
yum -y install \
gd \
libxml2 libxml2-devel \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
zlib zlib-devel \
curl-devel \
openssl-devel
3.2解压源码包并进入解压后生成的目录
tar xf php-7.2.12.tar.gz
cd php-7.2.12
3.3编写配置脚本
vim myphp.sh
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www --with-fpm-group=www \
--with-MySQL=/usr/local/mysql \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
:wq
选项 | 说明 |
---|---|
–prefix=/usr/local/php | 指定php安装路径 |
–with-config-file-path=/usr/local/php/etc | 指定php.ini文件的位置 |
–enable-fpm | 启用ftp模块,cgi方式安装 |
–with-fpm-user=www --with-fpm-group=www | 指定fpm运行用户和组 |
–with-MySQL=/usr/local/mysql | 指定mysql的安装位置,适用于集成环境,如果数据分离,则无需表明路径,启用mysql即可 |
–with-mysql-sock=/usr/local/mysql/mysql.sock | 指定mysql sock文件位置 |
–with-mysqli=/usr/local/mysql/bin/mysql_config | mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务, 而且还可以使访问数据库工作变得更加稳定 |
–with-zlib | 启用zlib库支持 |
–with-curl | 启用curl浏览工具支持 |
–with-gd | 启用gd库支持 |
–with-jpeg-dir | 启用jpeg图片支持 |
–with-png-dir | 启用png图片支持 |
–with-freetype-dir | 启用freetype字体库支持 |
–with-openssl | 启用openss |
–enable-mbstring | 启用多字节、字符串支持 |
–enable-xml | 启用xml支持 |
–enable-session | 启用session会话选项,使用非常广泛 |
–enable-ftp | 启用ftp支持 |
–enable-zip | 启用zip压缩支持 |
php还有很多模块,比如memcache,redis,zend等等。php5以上版本开启了灵活的安装方式,有些模块你现在不安装也没关系,需要的时候再安装也可以,基本上无需重新编译就可以安装扩展模块
3.4为脚本赋予执行权限并执行
chmod +x myphp.sh
./myphp.sh
3.5编译&&安装
make -j2 && make install
3.6复制模板文件作为php的配置文件
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.defult /usr/local/php/etc/php-fpm.d/www.conf
cp /opt/php-7.2.12/php.ini-development /usr/lcoal/php/etc/php.ini
3.7添加到service服务管理&&设置为开机自启
cp /opt/php-7.2.12/php/sapi/fpm/init.d/php-fpm /etc/init.d/php-fpm
chkconfig --add php-fpm
3.8添加到环境变量
echo 'PATH=$PATH:/usr/local/php/bin' >> /etc/profile
source /etc/profile
4.Nginx+php-fpm配置
4.1修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#在server段添加如下配置
root html;
#找到 'location /' 段,修改为如下
location / {
#root html;
index index.html index.htm;
}
#找到 'location ~ \.php$' 段,修改为如下
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
:wq
4.2重载nginx
service nginx reload
4.3编写测试文件
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
:wq
4.4启动php-fpm
service php-fpm start
4.5浏览器访问测试