LNMP搭建;带三个站点(Typecho、discuz、dedecms)

摘要: 准备工作,下好所需的包 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz nginx-1.12.1.tar.gz php-5.6.30.tar.bz2 安装msyql 解压mysql mysql 是二进制免编译包,所以省去的编译的过程 移动到/usr/local/下,更名为mysql tar -zxvf mysql-5.6.35-linux-glibc2.5-x86_64.....

下好所需的包

002UASMrzy7605pjKJv15&690.jpg

mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz nginx-1.12.1.tar.gzphp-5.6.30.tar.bz2 安装msyql

解压mysql

mysql是二进制免编译包,所以省去的编译的过程

移动到/usr/local/下,更名为mysql

tar-zxvfmysql-5.6.35-linux-glibc2.5-x86_64.tar.g mvmysql-5.6.35-linux-glibc2.5-x86_64/usr/local/mysql

初始化

进入所在目录进行

cd/usr/local/mysql

初始化前,记得确定是否有data目录

./scripts/mysql_install_db--user=mysql--datadir=/data/mysql

安装缺少的依赖包,否则不能成功初始化

yuminstall-yperl-Data-Dumper.x86_64 yuminstall-ylibaio

都是在mysql目录下进行的

拷贝配置文件

cpsupport-files/my-default.cnf/etc/my.cnf

拷贝启动脚本

cpsupport-files/mysql.server/etc/init.d/mysqld

更改配置文件

vim/etc/my.cnf

在[mysqld]下 增加

datadir=/data/mysql socket=/tmp/mysql.sock

更改启动脚本

vim/etc/init.d/mysqld

找到下面两个项,添加上路径

basedir=/usr/local/mysql datadir=/data/mysql

检查开启服务

/etc/init.d/mysqldstart

屏幕输出

StartingMySQL.Loggingto\'/data/mysql/ip-172-31-45-37.us-east-2.compute.internal.err\'. SUCCESS!

将mysql加入到服务列表

chkconfig--addmysqld

配置mysql服务,开机启动

chkconfigmysqldon 安装php-fpm

安装依赖包

yuminstall-ygcc yuminstall-ylibxml2-devel.x86_64 yuminstall-yopenssl-devel.x86_64 yuminstall-ybzip2-devel.x86_64 yuminstall-ylibjpeg-devel yuminstall-ylibpng-devel yuminstall-yfreetype-devel yuminstall-ylibcurl-devel.x86_64

安装第三方yum源//因为是亚马逊的主机不支持安装拓展源,使用安装第三方源

wgethttp://www.atomicorp.com/installers/atomic shatomic yuminstallphp-mcryptlibmcryptlibmcrypt-devel

初始化

./configure--prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --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 --with-pear --with-curl --with-openssl --disable-fileinfo//编译错误之后新加入

编译

make&&makeinstall

出错

make:***[ext/fileinfo/libmagic/apprentice.lo]Error1

当配置PHP时出现make:***[ext/fileinfo/libmagic/apprentice.lo]Error1时
是因为服务器内存不足1G。
只需要在配置命令中添加--disable-fileinfo即可

拷贝主配置文件

cpphp.ini-production/usr/local/php-fpm/etc/php.ini

新增配置文件

vim/usr/local/php-fpm/etc/php-fpm.con [global] pid=/usr/local/php-fpm/var/run/php-fpm.pid error_log=/usr/local/php-fpm/var/log/php-fpm.log include=etc/php-fpm.d/*.conf//可以自定义pool

拷贝启动脚本

cp/usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm/etc/init.d/php-fpm

将php-fpm加入到服务列表里

chkconfig--addphp-fpm

配置开机启动php-fpm

chkconfigphp-fpmon

开启服务器

servicephp-fpmstart

查看进程,服务是否开启

psaux|grepphp-fpm Nginx安装

./configure--prefix=/usr/local/nginx

给Nginx创建启动脚本

vim/etc/init.d/nginx #!/bin/bash #chkconfig:-3021 #description:httpservice. #SourceFunctionLibrary ./etc/init.d/functions #NginxSettings NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" RETVAL=0 prog="Nginx" start() { echo-n$"Starting$prog:" mkdir-p/dev/shm/nginx_temp daemon$NGINX_SBIN-c$NGINX_CONF RETVAL=$? echo return$RETVAL } stop() { echo-n$"Stopping$prog:" killproc-p$NGINX_PID$NGINX_SBIN-TERM rm-rf/dev/shm/nginx_temp RETVAL=$? echo return$RETVAL } reload() { echo-n$"Reloading$prog:" killproc-p$NGINX_PID$NGINX_SBIN-HUP RETVAL=$? echo return$RETVAL } restart() { stop start } configtest() { $NGINX_SBIN-c$NGINX_CONF-t return0 } case"$1"in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo$"Usage:$0{start|stop|reload|restart|configtest}" RETVAL=1 esac exit$RETVAL

自定义nginx.conf文件

usernobodynobody; worker_processes2; error_log/usr/local/nginx/logs/nginx_error.logcrit; pid/usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile51200; events { useepoll; worker_connections6000; } http { includemime.types; default_typeapplication/octet-stream; server_names_hash_bucket_size3526; server_names_hash_max_size4096; log_formatcombined_realip\'$remote_addr$http_x_forwarded_for[$time_local]\' \'$host"$request_uri"$status\' \'"$http_referer""$http_user_agent"\'; sendfileon; tcp_nopushon; keepalive_timeout30; client_header_timeout3m; client_body_timeout3m; send_timeout3m; connection_pool_size256; client_header_buffer_size1k; large_client_header_buffers84k; request_pool_size4k; output_buffers432k; postpone_output1460; client_max_body_size10m; client_body_buffer_size256k; client_body_temp_path/usr/local/nginx/client_body_temp; proxy_temp_path/usr/local/nginx/proxy_temp; fastcgi_temp_path/usr/local/nginx/fastcgi_temp; fastcgi_intercept_errorson; tcp_nodelayon; gzipon; gzip_min_length1k; gzip_buffers48k; gzip_comp_level5; gzip_http_version1.1; gzip_typestext/plainapplication/x-javascripttext/csstext/htm application/xml; includevhost/*.conf;//新增这一行,定义默认虚拟主机的目录 }

检查一下是否存在语法问题

/usr/local/nginx/sbin/nginx-t

重启服务

/usr/local/nginx/sbin/nginx-sreload

报错:

nginx:[error]invalidPIDnumber""in"/usr/local/nginx/logs/nginx.pid"

原来服务器没有启动

servicenginxstart

更改配置文件权限

chmod755/etc/init.d/nginx

将nginx加入到服务列表里

chkconfig--addnginx

配置开启启动nginx服务

chkconfignginxon 搭建blog、cms、bbs

下好所需文件
解压,丢解压好的包到/data/wwwroot/目录
为了保证访问,给目录权限

chmod755/data/wwwroot/ blog《Typecho》

配置vhost

vim/usr/local/nginx/conf/vhost/build.conf

内容如下:

server { listen80; server_nameblog.in-86.com; indexindex.htmlindex.htmindex.php; root/data/wwwroot/build; access_log/tmp/build.com.logcombined_realip;//访问日志 if(!-e$request_filename){ rewrite^(.*)$/index.php$1last; } location~.php(/.*)*$ { set$path_info""; set$real_script_name$fastcgi_script_name; if($fastcgi_script_name~"^(.+?.php)(/.+)$"){ set$real_script_name$1; set$path_info$2; } fastcgi_paramSCRIPT_FILENAME$document_root$real_script_name; fastcgi_paramSCRIPT_NAME$real_script_name; fastcgi_paramPATH_INFO$path_info; includefastcgi_params; fastcgi_passunix:/tmp/php-fcgi.sock; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME/data/wwwroot/build$fastcgi_script_name; } }

高亮为Typecho这个程序的必要配置,如不这样配置会导致管理内页访问404

创建pool配置文件

vim/usr/local/php-fpm/etc/php-fpm.d/blog.conf

内容如下:

[blog] listen=/tmp/php-fcgi.sock listen.mode=666 user=php-fpm group=php-fpm pm=dynamic pm.max_children=50 pm.start_servers=20 pm.min_spare_servers=5 pm.max_spare_servers=35 pm.max_requests=500 rlimit_files=1024

配置好记得检查语法,重新加载服务

nginx

/usr/local/nginx/sbin/nginx-t /usr/local/nginx/sbin/nginx-sreload

php-fpm

/usr/local/php-fpm/sbin/php-fpm-t /etc/init.d/php-fpmreload

关闭selinux防火墙

getenforce//检查防火墙状态 setenforce0//临时关闭 vim/etc/selinux/config//改配置文件永久关闭

检查iptables

iptables-F iptables-IINPUT-ptcp--dport80-jACCEP//放行80 iptables-nvL//查看规则 netstat-lntp//查看nginx是否开始监听80端口

检查是否通

curl-x127.0.0.1:80blog.in-86.com-I

出错:
curl返回码200,证明本地访问没有问题,但是浏览器访问不到
检查了80端口的连通性
Windows
telnet主机IP80
发现80端口不通的,多次检查,才发现域名解析的主机名错了;调整解析的主机名以后,就能正常访问了。

浏览器安装Typecho 再次出现问题。mysql不能进入,不然就进入了创建不了数据库 方法操作很简单,如下:

#/etc/init.d/mysqldstop//停止MySQL服务的运行 #mysqld_safe--user=mysql--skip-grant-tables--skip-networking&//跳过受权表访问 #mysql-urootmysql//登录mysql

在mysql5.7以下的版本如下:

mysql>UPDATEuserSETPassword=PASSWORD(\'newpassword\')whereUSER=\'root\'andhost=\'127.0.0.1\'orhost=\'localhost\';//把空的用户密码都修改成非空的密码就行了。

在mysql5.7版本如下:

updatemysql.usersetauthentication_string=password(\'newpassword\')whereuser=\'root\'andhost=\'127.0.0.1\'orhost=\'localhost\';

mysql>FLUSHPRIVILEGES; mysql>quit#/etc/init.d/mysqldrestart//离开并重启mysql #mysql-uroot-p Enterpassword:<输入新设的密码newpassword>

这时就能正常进入了

mysql-uroot-p//登录 createdatabasetypecho;//创建数据库 grantallon*.*toroot@127.0.0.1identifiedby\'newpassword\';

然后就可以成功的配置安装Typecho

重Typecho的安装步骤,即可完成discuz、dedecms的安装(mysql除外)数据库统一使用root密码newpassword

安装discuz的需要对几个特殊的目录给予写的权限,在解压好所有文件的时候,我就直接执行的chmod755-R,所有就省去了这个步骤(因为是测试,权限的不是特别重要)