LNMP搭建Discuz和Wordpress
1、LNMP
L:linux操作系统
N:nginx展示前端页面web服务
M:mysql数据库,保存用户和密码,以及论坛相关的内容
P:php动态请求转发的中间件
数据库的作用:
登录时验证用户名和密码
创建用户和密码
发布和评论帖子,需要保存到数据库
2、搭建论坛原理图
3、 编译安装nginx
安装前:
先rpm -q nginx,如果显示有这个软件,就yum -y remove nginx
如果显示没有这个软件,或者yum卸载了之后,再nginx -t 看一下有没有执行结果,
如果提示你没有这个命令,说明没有用源码安装过,接下来就可以搞今天的安装内容了;如果不放心,去/usr/local/目录找一下有没有nginx这个目录,有就删掉这个目录。
如果提示有结果,不管是OK还是失败,都说明之前用源码安装过了,这时候去/usr/local/目录下把nginx目录删了,再进行今天的步骤。源码安装只要删除安装目录就行。
准备:关闭防火墙及安全机制,准备接收文件
systemctl stop firewalld #关闭防火墙 setenforce 0 #关闭安全机制 rz -E //接收文件
第一步:把源码包放入到系统之中。
使用xshell终端的可以直接从本机拖进虚拟机
第二步:安装编译过程中需要的依赖环境。
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
第三步:创建Nginx程序运行需要的用户和组
useradd -M -s /sbin/nologin nginx #不创建家目录,指定/sbin/nologin
第四步:编译安装
解压源码包
tar -xf nginx-1.22.0.tar.gz cd 到解压出来的目录下进行下面的操作(nginx-1.22.0)
开始配置,配置程序的安装路径,安装基于程序需要的安装组件(在安装包的目录里进行这个操作,下面有不带注释的版本)
./configure --prefix=/usr/local/nginx \ #配置安装路径 --user=nginx \ #配置用户 --group=nginx \ #配置组 --with-http_ssl_module \ #支持https的加密功能ssl/tsl --with-http_v2_module \ #支持http2.0协议 --with-http_realip_module \ #支持Nginx获取客户端的真实IP地址 --with-http_stub_status_module \ #支持Nginx获取访问状态信息的功能 --with-http_gzip_static_module \ #支持页面压缩文本 --with-pcre \ #支持pcre库 --with-stream \ #支持4层代理的模块 --with-stream_ssl_module \ #支持对tcp连接的加密 --with-stream_realip_module #持从代理协议中获取客户端的真实ip地址
编译和安装
make -j 4 && make install #第一个make:编译;第二个make install:安装 #make -j 4 启动4个CPU进行处理
第五步:后续配置,设置权限和系统管理配置
配置权限
cd /usr/local chown -R nginx.nginx nginx #对/usr/local目录下nginx目录更改所属
/usr/local/nginx目录下的四个目录的解释
conf :配置文件目录,主配置文件nginx.conf
html :工作目录:50x.html默认的访问操作打开的页面,index.html
logs :日志目录:访问日志、报错日志
sbin :二进制启动脚本nginx
做一个软连接,让系统能够识别nginx的指令
ln -s /usr/local/nginx/sbin/nginx /usr/bin (/usr/sbin也行)
如果系统提示“该文件已存在”,没有关系,这一步也算完成了
设置系统控制,系统能够对nginx这个软件的运行状态进行控制。
vim /lib/systemd/system/nginx.service ----------------------------------------- [Unit] Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target #表示支持dns解析以及该软件依赖于网络。 Wants=network-online.target #先启动网络服务,才能启动nginx [Service] Type=forking PIDFile=/usr/local/nginx/run/nginx.pid #注意文件位置,如果不对 启动不了 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #注意启动文件位置 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target #支持多用户模
修改nginx的配置文件,把pid文件的位置指向到设置的位置
cd /usr/local/nginx mkdir run chown -R nginx.nginx /usr/local/nginx/run #递归修改run目录所属 cd /usr/local/nginx/conf vim nginx.conf #编辑要修改的配置文件
修改完后
nginx -t #检测nginx.conf当中的语法是否正确,提示OK则正常 systemctl daemon-reload #重新加载systemd守护进程 systemctl restart nginx #重启nginx服务 nginx -v #查看nginx版本号 systemctl stop nginx #停止nginx服务
在web页面访问虚拟机IP地址,可以看到“welcome to nginx”
4、安装mysql
本次安装使用的是绿色硬盘版本,无需额外安装依赖环境。
cd /opt tar -xf mysql安装包 mv 解压出的目录 /usr/local/mysql #创建程序用户 useradd -M -s /sbin/nologin mysql #mysql的主配置文件设定所属用户和组 chown -R mysql.mysql /usr/local/mysql/ chown mysql.mysql /etc/my.cnf
修改配置文件:
vim /etc/my.cnf [client] port = 3306 #客户端访问的端口 socket=/usr/local/mysql/mysql.sock #指定MySQL的通信套接字文件 [mysqld] user = mysql basedir=/usr/local/mysql #MySQL的安装目录 datadir=/usr/local/mysql/data #MySQL数据保存的目录 port = 3306 #服务端的端口 character-set-server=utf8 #字符集的编码 pid-file = /usr/local/mysql/mysqld.pid #pid文件位置 socket=/usr/local/mysql/mysql.sock bind-address = 0.0.0.0 #表示任意地址都可以访问数据库 skip-name-resolve max_connections=2048 default-storage-engine=INNODB #MySQL默认的存储引擎 max_allowed_packet=16M server-id = 1 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION #MySQL支持的数据类型和相关的模块
设置环境变量,声明/宣告MySQL命令便于系统识别:
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile source /etc/profile
初始化数据库:
cd /usr/local/mysql/bin/ ./mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data
设置系统识别,进行操作:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld systemctl daemon-reload systemctl restart mysqld
初始化数据库密码:
mysqladmin -u root -p password "123456" #在交互界面直接回车,不要输入!
进入数据库:
mysql -u root -p123456 #进入数据库交互界面 show databases; #创建用户并设置密码 create user 'root'@"%" identified by '123456'; #赋予远程连接的权限 grant all privileges on *.* to 'root'@'%'; #刷新生效 flush privileges; #修改加密方式,可以进行远程连接 alter user 'root'@'%' identified with mysql_native_password by "123456"; exit;
数据库安装完成。
5、安装php
1、安装依赖环境:
yum -y install gd \ libjpeg libjpeg-devel \ libpng libpng-devel \ freetype freetype-devel \ libxml2 libxml2-devel \ zlib zlib-devel \ curl curl-devel \ openssl openssl-devel \ oniguruma-devel \ sqlite-devel
2、编译安装:
tar -xf php-8.1.27.tar.gz cd php-8.1.27 ./configure \ --prefix=/usr/local/php \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-mysqli \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-pdo-mysql \ --with-openssl \ --with-sqlite-devel \ --with-oniguruma-devel \ --enable-fpm \ --enable-mbstring \ --enable-xml \ --enable-session \ --enable-ftp \ --enable-pdo \ --enable-tokenizer \ --enable-zip make -j 4 && make install
--with-mysqli: 启用MySQLi扩展,用于支持MySQL数据库。
--with-zlib: 启用Zlib库,用于压缩和解压缩数据。
--with-curl: 启用cURL库,用于支持对URL的操作,如下载文件等。
--with-gd: 启用GD库,用于处理图像。
--with-jpeg-dir: 指定JPEG库的路径,用于GD库对JPEG格式图片的处理。
--with-png-dir: 指定PNG库的路径,用于GD库对PNG格式图片的处理。
--with-freetype-dir: 指定FreeType库的路径,用于GD库对字体的支持。
--with-openssl: 启用OpenSSL库,用于支持SSL加密和HTTPS协议。
--enable-fpm: 启用PHP-FPM(FastCGI Process Manager),用于提供更高效的PHP进程管理和请求处理。
--enable-mbstring: 启用多字节字符串支持,用于处理多字节字符集的操作。 --enable-xml: 启用XML支持,用于处理XML文档和数据。
--enable-session: 启用会话支持,用于在不同页面间保持用户会话状态。
--enable-ftp: 启用FTP支持,用于对FTP服务器进行操作。
--enable-pdo: 启用PDO(PHP Data Objects),用于支持数据库访问的统一接口。
--enable-tokenizer: 启用Tokenizer扩展,用于对字符串进行分词处理。
--enable-zip: 启用Zip扩展,用于对ZIP文件进行操作。
3、路径优化:使系统能识别到PHP:
ln -s /usr/local/php/bin/* /usr/local/bin/ ln -s /usr/local/php/sbin/* /usr/local/sbin/
4、调整PHP配置文件:
PHP有三个配置文件:
php.ini :主配置文件
php_fpm.conf :进程服务配置文件
www.conf :扩展配置文件,在安装包目录下的/php_fpm.d目录下
调整主配置文件
cp /opt/php-8.1.27/php.ini-development /usr/local/php/lib/php.ini vim /usr/local/php/lib/php.ini #--976行--取消注释,修改 date.timezone = Asia/Shanghai #--1181行--修改 mysqli.default_socket = /usr/local/mysql/mysql.sock #修改完成,退出并验证安装的模块 php -m
调整进程服务配置文件
cd /usr/local/php/etc/ cp php-fpm.conf.default php-fpm.conf vim php-fpm.conf #--17行--去掉";"注释 pid = run/php-fpm.pid
调整扩展配置文件
cd /usr/local/php/etc/php-fpm.d/ cp www.conf.default www.conf
5、启动php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。
cd /opt/php-8.1.27/sapi/fpm cp php-fpm.service /usr/lib/systemd/system/php-fpm.service systemctl daemon-reload systemctl restart php-fpm.service netstat -anpt | grep 9000 #直接看9000端口是不是PHP占用中
6、 配置 Nginx 支持 PHP 解析
在nginx.conf中修改
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; #把当前Nginx的工作目录,作为处理动态请求的目录,访问.php文件就会转发到PHP进行处理 include fastcgi_params; }
systemctl restart nginx.service #重启
7、验证PHP测试页
vim /usr/local/nginx/html/index.php
8、验证数据库工作是否正常
进入数据库,创建专门用来保存论坛信息的用户和库
mysql -u root -p123456 #进入数据库交互界面 create database bbs; create user 'bbsuser'@'%' identified by 'admin123'; #创建用户 bbsuser ,密码 admin123 grant all privileges on bbs.* to 'bbsuser'@'%'; flush privileges; CREATE USER 'bbsuser'@'localhost' IDENTIFIED BY 'admin123'; grant all privileges on bbs.* to 'bbsuser'@'localhost'; flush privileges; exit
修改测试页:
vim /usr/local/nginx/html/index.php
测试页面返回Success!则成功,失败则返回Fail!!
6、部署Discuz
unzip /opt/Discuz_X3.5_SC_UTF8.zip -d /opt/dis cp -r /opt/dis/upload/ /usr/local/nginx/html/bbs/ cd /usr/local/nginx/html/ #调整论坛目录的权限:懒人版 chown -R nginx.nginx bbs/ chmod -R 777 bbs/ #实际需要调整权限的目录 cd /usr/local/nginx/html/bbs/ chown -R nginx ./config/ chown -R nginx ./data/ chown -R nginx ./uc_client/ chown -R nginx ./uc_server/ #以及 chmod -R 777 ./config/ chmod -R 777 ./data/ chmod -R 777 ./uc_client/ chmod -R 777 ./uc_server/ 浏览器访问 http://192.168.10.10/bbs/install/index.php 安装discuz 访问 192.168.10.10/bbs/index.php 访问 192.168.10.10/bbs/admin.php
7、部署Woedpress
进入数据库,创建专门用来保存论坛信息的用户和库
mysql -u root -p123456 #进入数据库交互界面 create database wordpress; #创建数据库wordpress create user 'wdpuser'@'%' identified by 'admin123'; #创建用户 wdpuser ,密码 admin123 grant all privileges on wordpress.* to 'wdpuser'@'%'; flush privileges; CREATE USER 'wdpuser'@'localhost' IDENTIFIED BY 'admin123'; grant all privileges on wordpress.* to 'wdpuser'@'localhost'; flush privileges; exit
解压WordPress的压缩包命名为wordpress,复制解压缩的包到/usr/local/nginx/html下
cd /usr/local/nginx/html/wordpress cp wp-config-sample.php wp-config.php vim wp-config.php #把对应的数据库名称、用户名、用户密码改成和数据库中的设定一致 #对wordpress目录递归赋权和改变所属 cd .. chmod -R 777 wordpress chown -R nginx.nginx wordpress
浏览器访问http://20.0.0.10/wordpress/index.php