开发者社区> 问答> 正文

超级小白 自行学习安装、配置LNMP 最新最详细教程


写在最前:此篇文章是耗时两天时间,自行搜索、试验、整理出来的,在此记录以备查看!同时感谢网络上所有乐于分享地人的分享!!如有任何误导请理解,并请指正!!


原文链接:http://www.513624.com/archives/910.html


########################
系统环境
Centos 6.5  64位纯净系统

########################
更新第三方源和系统
安装centos第三方yum源(CentOS默认的标准源里没有nginx软件包)
yum install wget  #安装下载工具wget
wget http://www.atomicorp.com/installers/atomic  #下载atomic yum源
sh ./atomic  #安装
yum check-update  #更新yum软件包
yum update  #更新系统

########################
安装MySQL
yum install mysql mysql-server #输入Y即可自动安装,直到安装完成
/etc/init.d/mysqld start   #启动MySQL
chkconfig mysqld on   #设为开机启动
cp /usr/share/mysql/my-medium.cnf   /etc/my.cnf  #拷贝配置文件
(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可(命令-f))
为root账户设置密码
mysql_secure_installation
# 回车,根据提示输入Y,输入2次密码,回车,根据提示一路输入Y,最后出现:Thanks for using MySQL!
MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld restart #重启
/etc/init.d/mysqld stop #停止
/etc/init.d/mysqld start #启动

########################
安装nginx
yum install nginx      #安装nginx,根据提示,输入Y安装
service nginx start    #启动
chkconfig nginx on    #设为开机启动

########################
安装php+php扩展+fpm
yum install php php-cli php-curl php-fpm php-intl php-mcrypt php-mysqlnd php-gd php-mbstring php-xml php-dom
/etc/rc.d/init.d/php-fpm start  #启动php-fpm
chkconfig php-fpm on  #设置开机启动
/etc/init.d/php-fpm restart  #重启pfm

########################
配置nginx支持php
1,cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak
#备份原有配置文件
vi /etc/nginx/nginx.conf #编辑
user nginx nginx; #修改nginx运行账号为:nginx组的nginx用户
:wq #保存退出
2,cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.confbak
#备份原有配置文件
vi /etc/nginx/conf.d/default.conf  #编辑
index index.php index.html index.htm;  #增加index.php
取消FastCGI server部分location的注释,如下所示:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
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;
#注意fastcgi_param行的参数,/scripts$fastcgi_script_name改为$document_root$fastcgi_script_name,或者使用绝对路径,要不然浏览器访问,不能解析,会显示“ File not found.”
service nginx restart #重启nginx

########################
php 配置
vi /etc/php.ini  #编辑
1, date.timezone = PRC
#在946行 把前面的分号去掉,改为date.timezone = PRC
#(命令:vi +/date.timezone  /etc/php.ini)
2, disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,osix_getrlimit, posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

########################
配置php-fpm
cp /etc/php-fpm.d/www.conf  /etc/php-fpm.d/www.confbak
#备份原有配置文件
vi /etc/php-fpm.d/www.conf #编辑
user = nginx #修改用户为nginx
group = nginx #修改组为nginx
:wq #保存退出

########################
安装FTP
1、查看是否安装了 vsftpd
rpm -qa | grep vsftpd
2、CentOS系统使用yum方式安装 vsftpd
yum install vsftpd
3、安装完成后,设置开始自动启动
chkconfig vsftpd on
service vsftpd start
4、查看ftp端口是否在侦听了
netstat –tl
5、配置vsftpd
vi /etc/vsftpd/vsftpd.conf  #编辑
将anonymous_enable=YES 改为
anonymous_enable=NO  #不允许匿名用户访问
在下面添加一行:
chroot_local_user=YES
表示把FTP用户都限制在你设置的目录中
注意:(vsftpd的配置文件有三个,分别是
    /etc/vsftpd/vsftpd.conf
    /etc/vsftpd.ftpusers
    /etc/vsftpd.user_list
其中,/etc/vsftpd/vsftpd.conf是主配置文件。
/etc/vsftpd.ftpusers中指定了哪些用户不能访问FTP服务器。
/etc/vsftpd.user_list中指定的用户默认情况(即在/etc/vsftpd/vsftpd.conf中设置了userlist_deny=YES)下也不能访问FTP服务器,当在/etc/vsftpd/vsftpd.conf中设置了userlist_deny=NO时,仅仅允许/etc/vsftpd.user_list中指定的用户访问FTP服务器。
/etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list,#设置不能登陆FTP的用户)
6、设置FTP目录(自行修改目录,本次测试目录是/usr/share/nginx/html)
mkdir /usr/share/nginx/html  //创建FTP目录
chmod -R 777 /usr/share/nginx/html  //递归地给此目录下所有文件和子目录的读、写、执行权限
chgrp -R ftp /usr/share/nginx/html  //递归地把此目录及该目录下所有文件和子目录的组属性设置成ftp组
注:如果在ftp用户的主目录中的子目录无法进行上传、删除等操作,需要重新使用 chmod 命令授权,比如:chmod -R 777 /home/ftproot/子目录
7、增加FTP用户
adduser -d /home/ftproot -g ftp -s /sbin/nologin user
增加用户,组是FTP,目录是/home/ftproot (注意将user 改为你要设置的用户名,下同),为FTP用户设定密码
passwd user
输入两次密码
8、重启vsftpd
service vsftpd restart
9、FTP用户管理
userdel 选项 用户名 #删除用户。
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如: userdel –r cmhello 表示删除cmhello这个ftp用户,同时删除cmhello上传的主目录
passwd 选项 用户名 #修改口令
passwd -l 用户名 锁定口令,即禁用账号。
passwd -u 用户名 口令解锁。
passwd -d 用户名 使账号无口令。
passwd -f 用户名 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
如果是超级用户,可以用下列形式指定任何用户的口令:
passwd 用户名
passwd -d 用户名 此命令将用户的口令删除,这样用户下一次登录时,系统就不再询问口令

########################
配置phpmyadmin
下载phpmyadmin到/usr/share/nginx/html下,然后解压访问(可以官网下载,之后通过ftp上传到相应目录),会出现类似这样的错误提示:
phpMyAdmin – ErrorCannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.
从错误提示看到,php没有正确保存session。导致上面的错误提示原因在于没有给php正确设置session的临时目录导致。
在php.ini文件搜索查找session.save_path
(命令:vi +/session.save_path  /etc/php.ini)
php.ini文件中显示 session.save_path = “N;/path”
需要将它修改为
session.save_path = "/var/lib/php/session"
修改/var/lib/php/session目录的所有权和属主
chown -R nobody:nobody /var/lib/php/session
修改此目录的属主为nobody
解决登录问题还应该修改/var/lib/php/session目录权限
chmod 777 /var/lib/php/session
然后重新启动php和nginx到服务即可正常登录phpMyAdmin,
phpmyadmin需要配置权限为755,不然会提示配置错误。

########################
绑定域名
cd /etc/nginx/conf.d  # Nginx配置文件存放目录
vi default.conf  #编辑
#修改相关条目
server {
listen 80;
server_name bjjcmy.com; #绑定域名
index index.htm index.html index.php; #默认文件
root  /usr/share/nginx/html; #网站根目录
rewrite ^/(.*) http://www.bjjcmy.com/$1 permanent;  #301跳转(可选)
error_page 404 /404.html;  #404页面
include *.conf; #调用其他规则(可选)
}
注:一个文件添加多个域名的规则也是一样,把单个域名重复写下来就ok了


Service nginx restart  #重启nginx

########################
安装网站程序
正常通过ftp上传网站程序WordPress
登陆phpmyadmin新建数据库+用户名
安装
########################
WordPress  nginx 伪静态
vi *.conf  #编辑站点的配置文件
#在location / {  } 之间添加如下代码:
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}


Service nginx restart  #重启nginx


########################
WordPress 自动升级失败
文件权限问题
现象:点击更新提示,要求输入FTP账号、密码什么的,linux主机较多出现。
原因:出现这个提示,一般是指文件夹没有写入权限。
处理方案:赋予网站目录nginx用户权限:
命令是chown -R nginx /usr/share/nginx/html  #本次配置的用户是nginx


########################


########################
大功告成!!

展开
收起
bjjcmy 2015-04-29 11:12:48 13721 0
6 条回答
写回答
取消 提交回答
  • Re超级小白自行学习安装、配置LNMP最新最详细教程
    不错,收藏
    2015-06-01 15:38:34
    赞同 展开评论 打赏
  • Re超级小白自行学习安装、配置LNMP最新最详细教程
    不是很明白这个是干嘛的。mkdir /usr/share/nginx/html  //创建FTP目录
    chmod -R 777 /usr/share/nginx/html  //递归地给此目录下所有文件和子目录的读、写、执行权限
    chgrp -R ftp /usr/share/nginx/html  //递归地把此目录及该目录下所有文件和子目录的组属性设置成ftp组
    没有这个也行啊。
    而且设定的ftp目录是用户的目录啊。
    adduser -d /home/ftproot -g ftp -s /sbin/nologin user
    2015-06-01 11:14:59
    赞同 展开评论 打赏
  • Re超级小白自行学习安装、配置LNMP最新最详细教程
    2015-05-09 15:20:02
    赞同 展开评论 打赏
  • 那就到云市场去看看吧: http://market.aliyun.com/
    2015-04-30 17:55:57
    赞同 展开评论 打赏
  • 回楼主bjjcmy的帖子
    这么麻烦,菜鸟需要的是一键安装。
    2015-04-29 13:01:42
    赞同 展开评论 打赏
  • Re超级小白自行学习安装、配置LNMP最新最详细教程
    楼主的模板不错,能分享吗?
    2015-04-29 12:57:40
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
《Java开发手册》2019最新版发布! 立即下载
冬季实战营第二期:Linux操作系统实战入门 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载