LNMP 是互联网最常用架构之一.
WordPress是一款个人博客系统,主要由php写的. 后面我们参考该博客用flask(python)再写个
介绍:
LNMP即:Linux Nginx Mysql/Mariadb PHP/Python
Linux : 主要还是Redhat/Centos用得多点. Centos官网: https://www.centos.org/
nginx: 可以提供web服务,也可做4/7层转发.官网:http://nginx.org/
Mysql/Mariadb : Mysql被Sun收购了,Sun又被oracle收购了. Mysql分为社区版和企业版,也就是收不收费的区别. Mysql之父(Michael Widenius) 在oracle感觉不爽, 就出来创建了Mariadb (名字来源于他的女儿Maria). Mysql主要由oracle提供支持,Maria主要由社区提供支持. Mysql官网:https://www.mysql.com/ Mariadb官网:https://mariadb.org/
PHP/Python : python的web项目实际上并不算多, 所以这里的P主要还是指php. php官网:https://www.php.net/
php的帮助文档是真的不错,而且还有中文: https://www.php.net/distributions/manual/php_enhanced_zh.chm
1.Linux 安装:
linux安装上一篇已经讲了. 这里就不重复了,版本为Centos7.8, 直接用上一篇定制的镜像自动安装.
2. Nginx安装
Nginx是一个高性能的web服务器, 源码压缩后仅1M..... 不过我们本环境本次不使用编译安装. 使用官方的rpm安装, 比较它已经把我们常用的功能都编译好了,还配置了轮转日志之类的.后续会专门再讲nginx的编译安装和基于官方的.src.rpm制作rpm包的.
特别说明:nginx被F5收购了.
nginx目前(2020.10.24)最新版本为1.19.3 我们使用稳定版本 1.18 官方下载地址:http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm
执行如下命令安装nginx (记得先配置好DNS和外网,不然就手动下载下来再安装)
代码语言:javascript复制yum install http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm -y
安装完之后,启动并验证一下:
代码语言:javascript复制systemctl start nginx
curl 127.0.0.1
3. Mysql安装
官网下载mysql太麻烦了,网速又慢,我就选择国内源下载.
本次环境安装mysql用5.7.32 glibc2.12的安装, 不编译安装了,太慢了,而且也没必要,反正我要的大部分功能都是编译好的.
mysql下载: https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
mysql5.7 官方教程: https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
本次教程和官方的基本上一样.
3.1 创建mysql配置文件 /etc/my.cnf和相应目录 (如果该文件存在,则系统可能已经安装了Mysql,必须得先卸载掉)
mysql配置文件优先级:
/etc/my.cnf > /etc/mysql/my.cnf > ~/.my.cnf
代码语言:javascript复制cat << EOF > /etc/my.cnf
[mysqld]
datadir=/mysqldata
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/var/log/mysql/mysql-error.log
pid-file=/var/run/mysql/mysql.pid
EOF
mkdir /mysqldata
mkdir /var/log/mysql
mkdir /var/run/mysql
3.2 解压mysq并移动到 /usr/loca/mysql
代码语言:javascript复制groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown mysql:mysql /mysqldata /var/log/mysql /var/run/mysql
tar -xvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz && mv mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mysqldata #初始化后, 会有root密码,记录下来
bin/mysql_ssl_rsa_setup
bin/mysqld_safe --user=mysql &
# Next command is optional
cp support-files/mysql.server /etc/init.d/mysql #配置mysql服务. 拷贝过去的时候把后缀.server去掉.
3.3 使用mysql
把mysql加入PATH, 永久生效的加,把下面这句放到/etc/profile末尾
代码语言:javascript复制export PATH=/usr/local/mysql/bin/:$PATH
3.3.1 连接 mysql
代码语言:javascript复制mysql -uroot -p #然后输入刚才初始化之后的密码
第一次登录的时候并不能使用数据库,会报错如下,需要修改密码
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改mysql密码:
代码语言:javascript复制mysql> set password=password('123456');
4.安装php
下载最新稳定版本 7.4.11 https://www.php.net/distributions/php-7.4.11.tar.gz
本次环境使用编译安装php, 因为后面不会再讲php的安装了.
4.1解压php
代码语言:javascript复制tar -xvf php-7.4.11.tar.gz
cd php-7.4.11
4.2 配置php编译选项
代码语言:javascript复制./configure --help #查看php的配置选项
我们就选我们要用的功能就行,然后安装相应的依赖,比如:
代码语言:javascript复制yum install gcc openssl-devel libxml2-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel freetype-devel -y
依赖还是挺多的,尤其是很多-devel包, 生产环境建议提前编译好.
代码语言:javascript复制./configure --prefix=/usr/local/php
--with-config-file-path=/usr/local/php/etc
--with-config-file-scan-dir=/usr/local/php/etc/php.d
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql
--with-fpm-user=php
--with-fpm-group=php
--enable-mysqlnd
--enable-fpm
--enable-gd
--enable-xml
--enable-shmop
--enable-sysvsem
--enable-inline-optimization
--enable-mbregex
--enable-ftp
--enable-pcntl
--enable-sockets
--enable-soap
--enable-session
--enable-opcache
--enable-bcmath
--with-curl
--with-jpeg
--with-freetype
--with-openssl
--with-zlib
--disable-ipv6
4.3 编译并安装php (编译会比较慢)
代码语言:javascript复制make && make install
4.4 配置php
代码语言:javascript复制cp php.ini-development /usr/local/php/etc/php.ini
cp sapi/fpm/php-fpm /usr/local/php/bin
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
useradd php
修改/usr/local/php/etc/php.ini如下内容(分号开头为注释):
cgi.fix_pathinfo=0
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
4.5 配置php-fpm系统服务
代码语言:javascript复制cat << EOF > /etc/systemd/system/php-fpm.service
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/bin/php-fpm
PrivateTmp=True
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
4.6启停php-fpm
代码语言:javascript复制systemctl start php-fpm
systemctl stop php-fpm
systemctl status php-fpm
4.7 配置nginx处理php
先防火墙开放端口
代码语言:javascript复制firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload
修改nginx.conf配置添加一个如下server,然后重新加载nginx:
server {
listen 80;
index index.php index.html index.htm;
root /var/www/html;
location ~ .php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
systemctl reload nginx
5. 安装WordPress
官网现在比较卡(今天程序员节,github也很卡,好多网站今天都好卡...),我就直接去github下载了
github:https://github.com/WordPress/WordPress
官网:https://wordpress.org/latest.tar.gz
还是用之前下载的吧
5.1 解压并设置权限:
代码语言:javascript复制tar -xvf wordpress-5.4.2-zh_CN.tar.gz
mv wordpress /var/www/html/wordpress
chown -R php:php /var/www/html/wordpress/
5.2安装:
浏览器打开并输入(ip换成你自己的):http://192.168.1.31/wordpress
代码语言:javascript复制mysql> create database wordpress;
mysql> create user 'wp'@'%' identified by '123456' ;
mysql> grant all privileges on wordpress.* to wp@"%";
mysql> flush privileges;
6. 使用wordpress
6.1发表文章
6.2 添加用户 虽然是个人博客,但并不是只能一个人使用
其实这中文界面大家随便瞎点两下就会了
6.3设置语言:
下一篇讲讲zabbix(5.0)吧, 既然网站都有了, 就该监控了, siege压测流量, nginx做负载, sysbench测cpu内存IO等,顺便再做个证书吧,,好像要做的还挺多的..... 看来开发博客系统有点远了.......