Ubuntu16.04 lnmp 环境搭建 每台电脑的环境的不完全一样,下面仅仅是个人经验总结,请勿照搬
1.nginx 安装
sudo apt-add-repository ppa:nginx/stable
sudo apt-add-repository ppa:ondrej/php
sudo apt update
sudo apt install -y nginx
sudo nginx
之后访问ip 出现nginx 欢迎界面
2.安装php
sudo apt install -y php7.1 php7.1-mysql php7.1-fpm php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json php7.1-gd php7.1-mbstring php7.1-zip php-mongodb php-memcached php-redis
注意:sudo apt-cache search php7* 可以查询PHP模块扩展
3.安装mysql
sudo apt –y install mysql-server mysql-client
注意:期间要设置密码,填两次密码,
如果自動安裝的是5.7版本可能沒有提示密碼輸入,安裝完成以後按照以下步驟改密碼:
1.进入到etc/mysql 目录下,查看debian.cnf文件
2.在debian.cnf文件中找到用户名,密码 ,使用此账号登录mysql
3.show databases;
use mysql;
update user setauthentication_string=PASSWORD("自定义密码") where user='root';
update user setplugin="mysql_native_password";
flush privileges;
quit;
4.重啓mysql/etc/init.d/mysql restart;
注意:查看nginx 和fastcgi通信有2种方式,一种是TCP方式,还有种是UNIX Socket方式。
查看命令如下:
sudo vim/etc/php/7.1/fpm/pool.d/www.conf
默认是socket方式 listen = /run/php/php7.1-fpm.sock
另外一种TCP方式 #listen = 127.0.0.1:9000
检查配置文件:
sudo php-fpm7.1 -t
修改重启下 php-fpm7.1:
sudo service php-fpm7.1 restart (/etc/init.d/php7.1-fpm restart)
修改nginx配置文件
sudo vim(或vi) /etc/nginx/sites-enabled/default
4.修改nginx配置文件
cd /etc/nginx/sites-enabled/
default为默认80端口,如需多开端口在sites_enabled下新建文件即可,eg csteaching
server {
listen 8080;
listen [::]:8080;
root /var/www/html/cs2019/CS2019/csteaching/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
error_page 404 /index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
然后 sudo service nginx restart (/etc/init.d/nginx restart)
注意:重启nginx失败 先ps -ef | grep nginx 后 pkill -9 nginx 然后重启
特注:csteaching是为laravel5.5 + lnmp 专写的server配置
5.新建index.php
cd /var/www/html
vim index.php
注意:腾讯云给的账号是ubutu,不是root,所以要设置root 密码
sudopasswd root ps:填两次密码sudo vim /etc/ssh/sshd_config将PermitRootLogin后面的prohibit-password改为yessudo service ssh restartsu -
然后就可以 vim index.php 不然会报权限不足
6.踩过的大坑
(1)无论是 3306 数据库端口 8080nginx新开的端口都一定要设置端口对外开放
一般情况下,ubuntu安装好的时候,iptables会被安装上,如果没有的话那就安装上吧
安装
在终端输入
sudo apt-get install iptables
添加规则
在终端输入
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
中间的80为所需要开放的端口
保存规则
在终端输入
iptables-save
完成上述命令我们就完成了开放指定的端口,但是如果此时服务器重启,上述规则就没有了,所以我们需要对规则进行一下持续化操作
持久化规则
这里我们需要在安装一下工具来帮我们实现,这里我们使用 iptables-persistent
安装iptables-persistent
sudo apt-get install iptables-persistent
持久化规则
sudo netfilter-persistent save
sudo netfilter-persistent reload
完成上述操作就可以永久打开我们需要的端口了
(2)文件夹权限一定要保证
(3)远程连接数据库
(1)、首先确定自己能以root连接服务器端数据库,如果不能则要在服务端查看是否开启了mysql的3306端口可以被其他ip地址访问,使用netstat -an | grep 3306
tcp 0 0 (服务器本地ip地址):3306 0.0.0.0:* LISTEN
如果出现上述结果则表示服务器端的mysql数据库没有对其他ip地址开放,可以通过使用命令 ser打开MySQL配置文件,将文件中的bind-address = (服务器本地ip地址) 这句话注释掉,或者改为0.0.0.0,表示允许所有的IP访问3306端口连接数据库
(2)、重启mysql服务
(3)、重启之后,在服务器端以root用户进入mysql,然后使用命令
grant all privileges on 数据库名.表名 to ‘用户名’@’%’ identified by ‘密码’ with grant option;
flush privileges;
提示成功后即表示成功添加用户,随后退出mysql,重启服务,然后便可以使用刚才添加的用户及密码进入mysql数据库进入操作!
具体说下grant all privileges on 数据库名.表名 to ‘用户名’@’%’ identified by ‘密码’ with grant option;
grant 命令就是用来创建用户,all表示授予新增用户操作数据库或者数据库下某个数据表的所有权限,如果不想给予太大权限,可以将此处改为select,update,insert,delete 中的一个或者多个to后面接的’用户名’表示新增的用户的名称,@’%’表示可以从任意主机进行连接,如果修改成@localhost则表示仅能从本机连接。