CentOS 7 装lnmp一键安装包
服务器 CentOS 系统搭建 lnmp 并配置 tp5 项目
-
官方网站地址:https://lnmp.org
-
服务器上下载完整版安装包(下载版本为1.5)
wget http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz
==注意在服务器上下载时一定要用 root 账户下载并解压缩,不然会提示无法解压。(建议直接下载到 root 账户目录下)==
-
下载完成之后,安装 lnmp
-
解压缩:
tar zxf lnmp1.5.tar.gz
-
切换到 lnmp 目录
cd lnmp1.5
-
使用脚本开始安装
./install.sh
-
按照提示选择 mysql 版本以及设置 mysql 密码、PHP 版本
-
使用命令检查是否安装完成
lnmp status //会出现以下样子,则代表安装成功! [root@iZuf6aig35m8ho0xq75ijnZ ~]# lnmp status +-------------------------------------------+ | Manager for LNMP, Written by Licess | +-------------------------------------------+ | https://lnmp.org | +-------------------------------------------+ nginx (pid 7850 7848) is running... php-fpm is runing! SUCCESS! MySQL running (2915)
-
现在可以在浏览器中输入 IP 地址来访问一下,但是一般来说是访问不了的,因为阿里云默认关闭了80端口,此时需要进入阿里云管理后台设置安全组配置,添加安全组规则,将入方向的80端口设置,并且将数据库的3306端口也一并设置。此时再次访问 IP 地址就会显示 lnmp 安装成功界面!
-
服务管理
lnmp status //查看环境状态 lnmp start //开启服务 lnmp stop //关闭 lnmp reload //重加载 lnmp restart //重启
-
默认项目根目录在 /home/wwwroot/default
PHP的配置文件在:/usr/local/php/etc/php.ini
Nginx的配置文件在:/usr/local/nginx/conf
-
将项目移动到项目根目录下面(使用 git 或者其他任何方式都可以)
-
访问项目时可能会提示
scandir() has been disabled for security reasons //表示 lnmp 这个安装包禁用了 scandir() 这个(危险)函数
于是我们就要打开这个函数,打卡方式如下:
-
答:修改/usr/local/php/etc/php.ini 查找disable_functions 将后面要使用的函数删掉,保存,然后执行:/etc/init.d/php-fpm restart 重启后即可(lnmp 官方解答)==建议直接用 “;” 将 disable_functions 这一行全部注释掉,然后重启==
-
解决完以上危险函数报错之后可能会出现
file_put_content 权限不足 //解决方式如下:chmod 0777 -R runtime
-
出现 404 not found 是因为 url 重写的缘故
//进入 nginx 的配置目录 cd /usr/local/nginx/conf/
//用 vim 创建一个该项目的配置文件 注意:必须要用 .conf 为后缀 vim my_cake_test.conf
文件中要写如下内容:(因为 tp5 的访问会基于 public 目录下,因此我们要参考 nginx 的二级目录)
tp5.0 参考网址:架构-> url 访问->最底端 "url 重写"->nginx二级目录
https://www.kancloud.cn/manual/thinkphp5/177576
复制 tp5.0 手册一下内容
```
location /youdomain/ {
if (!-e $request_filename){
rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=/$1 last;
}
}
```
修改成
```
location /my_cake_test/public/ {
if (!-e $request_filename){
rewrite ^/my_cake_test/public/(.*)$ /my_cake_test/public/index.php?s=/$1 last;
}
}
```
==注意这里的 youdomain 必须修改成 基于项目根目录的项目地址。 比如我的项目文件夹 my_cake_test 在 /home/wwwroot/default/ 下面 但是需要访问到 my_cake_test 目录下的 public 目录 才可以访问我的项目 于是修改就是以上的配置==
之后保存 my_cake_test.conf 配置文件的修改
再打开 nginx的配置文件 nginx.conf
vim nginx.conf
在 nginx.conf 文件中找到 include enable-php.conf; 这一行
在 include enable-php.conf; 这一行下面 新增一行
include my_cake_test.conf;
然后保存并退出
重启 nginx 命令为: lnmp nginx restart
-
使用 Navicat 远程连接数据库 由于 lnmp 默认设置了 iptables 防火墙,于是还需要进一步修改
//将所有iptables以序号标记显示,执行: iptables -L -n --line-numbers //比如要删除INPUT里序号为8的规则(要删除OUTPUT的话就改成OUTPUT,以此类推),执行: iptables -D INPUT 8 //我们可以看到 num = 6 就是3306端口 于是我们就直接删除 num = 6 按照以下操作 [root@iZuf6aig35m8ho0xq75ijnZ phpmyadmin]# iptables -L -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 6 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 7 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination [root@iZuf6aig35m8ho0xq75ijnZ phpmyadmin]# iptables -D INPUT 6
-
再次使用 Navicat 测试连接,发现还是连不上去。是因为没有开启任意主机连接
我们就需要使用 phpmyadmin 添加账户
在 phpmyadmin 界面找到 “账户” 按钮,找到“新建”下面的“新增用户账号”,User name 设置为你想要用 Navicat 连接的用户名 比如我设置的为 alex 也可以使用 默认的 root 账户(不修改)
Host name 设置为 百分号 % 代表任意主机可以连接 之后设置密码 在下面的 "全局权限"按钮下 点击 “全选”按钮 再在最下面找到 “执行”按钮 并点击 就大功告成了!
-
添加虚拟主机,服务器和域名绑定
//01、使用添加虚拟主机的命令 [root@iZuf6aig35m8ho0xq75ijnZ vhost]# lnmp vhost add +-------------------------------------------+ | Manager for LNMP, Written by Licess | +-------------------------------------------+ | https://lnmp.org | +-------------------------------------------+ //02、这里要输入要添加网站的域名,这里我以 www.drling.xin 为例子,回车 Please enter domain(example: www.lnmp.org): www.drling.xin Your domain: www.drling.xin //03、这里询问是否添加更多域名,直接再输入要绑定的域名,这里我们将 drling.xin 也绑上,多个域名空格隔开,如不需要绑其他域名就直接回车 //(注:带www和不带www的是不同的域名,如需带www和不带的www的域名都 //访问同一个网站需要同时都绑定) //在这里也就是说 访问 drling.xin 和访问 www.drling.xin 都访问的是同一个目录 Enter more domain name(example: lnmp.org *.lnmp.org): drling.xin domain list: drling.xin Please enter the directory for the domain: www.drling.xin //04、这里是告诉我们 默认的项目根目录位置,直接回车即可 Default directory: /home/wwwroot/www.drling.xin: Virtual Host Directory: /home/wwwroot/www.drling.xin //05、是否使用伪静态 选择使用 Allow Rewrite rule? (y/n) y Please enter the rewrite of programme, wordpress,discuzx,typecho,thinkphp,laravel,codeigniter,yii2 rewrite was exist. //06、是否写入其它框架啥的 直接回车 表示不用 (Default rewrite: other): You choose rewrite: other //07、这个不知道是啥意思 直接选择的 y Enable PHP Pathinfo? (y/n) y Enable pathinfo. //08、是否开启日志 选择开启 y Allow access log? (y/n) y Enter access log filename(Default:www.drling.xin.log): You access log filename: www.drling.xin.log //09、是否创建 mysql 选择不创建 n Create database and MySQL user with same name (y/n) n //10、是否使用 SSL 也就是 https 选择不要使用,因为可能会需要使用到证书 Add SSL Certificate (y/n) n //11、现在就创建成功了,等待提示即可 Press any key to start create virtul host... Create Virtul Host directory...... set permissions of Virtual Host directory...... You select the exist rewrite rule:/usr/local/nginx/conf/rewrite/other.conf Test Nginx configure file...... nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful Reload Nginx...... Gracefully shutting down php-fpm . done Starting php-fpm done ================================================ Virtualhost infomation: Your domain: www.drling.xin Home Directory: /home/wwwroot/www.drling.xin Rewrite: other Enable log: yes Create database: no Create ftp account: no ================================================ //12、切换到项目根目录 [root@iZuf6aig35m8ho0xq75ijnZ vhost]# cd /home/wwwroot [root@iZuf6aig35m8ho0xq75ijnZ wwwroot]# ls //13、可以看到和默认的项目根目录平级有一个 刚刚系统默认创建的文件夹 default www.drling.xin //14、切换到 www.drling.xin 文件夹,并创建 index.php 文件,浏览器访问 www.drling.xin 网址的时候就是 index.php 中的内容 直接使用服务器的 IP 地址,会直接访问到 default 文件夹下的内容 [root@iZuf6aig35m8ho0xq75ijnZ wwwroot]# cd www.drling.xin/ [root@iZuf6aig35m8ho0xq75ijnZ www.drling.xin]# vim index.php
-
配置此时的配置文件
//01、切换到 nginx 的配置目录 [root@iZuf6aig35m8ho0xq75ijnZ www.drling.xin]# cd /usr/local/nginx/conf //02、选择进入到 vhost 文件夹 [root@iZuf6aig35m8ho0xq75ijnZ conf]# cd vhost/ //03、可以看到系统已经默认创建了配置文件 [root@iZuf6aig35m8ho0xq75ijnZ vhost]# ls www.drling.xin.conf //04、打开 www.drling.xin.conf 配置文件 [root@iZuf6aig35m8ho0xq75ijnZ vhost]# vim www.drling.xin.conf //05、找到 include enable-php-pathinfo.conf; //这一行,并在这一行下面添加之前写的 my_cake_test.conf //配置文件(这里 my_cake_test.conf 配置文件虽然和 vhost //文件夹属于平级目录,但是写法就是如下),也可以自己重新在写一次 include enable-php-pathinfo.conf; include my_cake_test.conf; //06、重启 nginx [root@iZuf6aig35m8ho0xq75ijnZ vhost]# lnmp nginx restart +-------------------------------------------+ | Manager for LNMP, Written by Licess | +-------------------------------------------+ | https://lnmp.org | +-------------------------------------------+ Stoping nginx... done Starting nginx... done //07、此时项目虽然可以访问,但是项目网址中还含有 public //这一级文件夹,可以复制一份 my_cake_test.conf 配置文件 [root@iZuf6aig35m8ho0xq75ijnZ conf]# cp my_cake_test.conf www.drling.xin.conf //08、修改伪静态,将 www.drling.xin.conf 文件中删除 /public [root@iZuf6aig35m8ho0xq75ijnZ conf]# vim www.drling.xin.conf //09、切换到 vhost 文件夹 并修改 www.drling.xin.conf //配置文件,找到 root /home/wwwroot/www.drling.xin; //这一行在之后加上 public 这一级目录 //变成:root /home/wwwroot/www.drling.xin/public; [root@iZuf6aig35m8ho0xq75ijnZ conf]# cd vhost/ [root@iZuf6aig35m8ho0xq75ijnZ vhost]# vim www.drling.xin.conf //10、重启 nginx [root@iZuf6aig35m8ho0xq75ijnZ vhost]# lnmp nginx restart +-------------------------------------------+ | Manager for LNMP, Written by Licess | +-------------------------------------------+ | https://lnmp.org | +-------------------------------------------+ Stoping nginx... done Starting nginx... done