搭建L(Ubuntu-server 16.04)N(Nginx)M(mysql)P(PHP)R(Redis)
安装虚拟机或开启Win10 Linux 子系统并安装Ubuntu(16.04.1)系统
安装虚拟机并安装Ubuntu
- 虚拟机
- VMware-workstation For Win 资源地址:http://download3.vmware.com/software/wkst/file/VMware-workstation-full-15.1.0-13591040.exe
- Ubuntu-server 16.04.1 资源地址:http://old-releases.ubuntu.com/releases/16.04.0/ubuntu-16.04.1-server-arm64.iso
- 配置虚拟机
- 配置网络
- 选择语宿主机共享网络
- 挂载宿主机共享目录
- 右键【设置】-> 选择上方【选项】-> 【共享文件夹】->
【总是启用】 -> 【添加】(选择宿主机共享的文件夹) - 虚拟机中挂载的共享文件位置
cd /mnt/hgfs/
- 右键【设置】-> 选择上方【选项】-> 【共享文件夹】->
- 安装VMWare Tools
虚拟机 -> 安装VMware Tools sudo su #切换为管理员账户 mkdir /mnt/vmtools #创建挂载的目录 mount -t iso9660 /dev/cdrom /mnt/vmtools #将文件挂载到创建的目录 mkdir /mnt/vmtools_install_file #创建新目录,用于存放挂载目录中拷贝出来的文件 #将挂载文件夹下的文件拷贝到新创建的目录 cp /mnt/vmtools/VMwareTools-10.1.15-6627299.tar.gz /mnt/vmtools_install_file/ umount /dev/cdrom #取消挂载 rm -rf /mnt/vmtools #删除挂载目录 chmod 777 VMwareTools-10.1.15-6627299.tar.gz #修改文件权限为读写执行 #解压安装文件包到当前目录下 tar zxf /mnt/vmtools_install_file/VMwareTools-10.***.tar.gz #跳转到解压后的vmware-tools-distrib文件夹 cd /mnt/vmtools-install_file/vmware-tools-distrib sudo chmod 777 vmware-install.pl #修改文件权限为读写执行 sudo ./vmware-install.pl #输入密码,一路回车 sudo reboot #重启系统
- 配置网络
开启Win10 Linux子系统并安装Ubuntu
- 设置 -> 更新和安全 -> 开发者选项 -> 针对开发人员 -> 开发人员模式 -> 启用开发者模式
- 控制面板 -> 程序 -> 启用或关闭 Windows 功能 -> 勾选[适用于 Linux 的 Windows 子系统]
- 下载安装 Ubuntu 子系统(ubuntu-server)
- Win键 输入 Microsoft Store 打开应用商店 -> 在打开的页面头部搜索 Ubuntu -> 选择对应版本的Ubuntu系统下载
- 安装完成后在页面左下方搜索处输入 ubuntu 可搜索已安装的系统
- 进入系统后
sudo apt-get update
更新软件包sudo ufw dia
关闭防火墙
Ubuntu 系统安装完成后常用命令
# 修改用户密码
sudo su #转为root用户
sudo passwd [username]
#输入新密码,确认密码
sudo shutdown -r now
lsb_release -a 查看安装版本信息
sudo apt-get update 更新软件包
# 下列命令只针对虚拟机安装的系统有效,对Win10 子系统无效
sudo poweroff 关机
sudo shutdown -r now 立即重启
sudo shutdown -h now 立刻关机
一分钟后重启:shutdown -r +1
定时关机:shutdown -h 20:30
安装常用软件
- 更新软件包
sudo apt-get update
- 安装 vim 编辑器
sudo apt-get install vim -y
- 安装 curl
sudo apt-get install curl -y
- 安装 wget
sudo apt-get install wget -y
- 安装 ssh
安装 SSH 服务: sudo apt-get install openssh-server -y 查看状态: ps -e|grep ssh 启动服务: sudo /etc/init.d/ssh start 停止服务: sudo /etc/init.d/ssh stop 重启服务: service ssh --full-restart ssh配置文件 vim /etc/ssh/sshd_config Port 22 //默认开启22端口 PasswordAuthentication yes //开启允许密码登录 远程登录SSH: ssh username@IP username:目标机器的用户名 IP:目标机器IP 相关问题: 在window CMD 中ping ubuntu 能ping通,但登录SSH(ssh username@ip) 报 Connection closed by 【IP】 port 22 检查ubuntu的sshd服务是否启动 检查sshd_config 配置是否开启 22 端口和允许密码登录 检查windows系统防火墙是否关闭 开启window的防火墙22端口 开启ubuntu的防火墙 使用telnet [IP] [22] 测试端口是否通
Composer 安装、配置
cd ~
- 由于网络原因,推荐大家,先在本地下载好:composer.phar, 通过ftp上传至服务器,或者
curl -O https://getcomposer.org/composer.phar
mv composer.phar /usr/local/bin/composer Composer
全局使用chmod +x composer
添加执行权限- 使用root,更换中国镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
- 添加用户操作composer命令。Ubuntu下建议使用
adduser xinhaonaner #根据提示 创建用户即可 su xinhaonaner #切换到新创建用户 composer config -g repo.packagist composer https://packagist.phpcomposer.com #设置国内镜像源composer self-update #记得常回来更新
搭建 LNMPR 环境
安装 Nginx
-
安装命令
sudo apt-get install nginx
-
安装完成后访问 127.0.0.1 查看是否安装成功
curl 127.0.0.1
,出现 Welcome to nginx! 证明安装成功 -
Nginx 常用信息
描述 命令 查看相关文件 dpkg -S nginx 查看Nginx 版本 nginx -v www 目录位置 /usr/share/nginx/html/ 默认配置文件 /etc/nginx/sites-available/default 查看80端口状态 sudo lsof -i :80 开启服务命令 sudo /etc/init.d/nginx start 或 sudo service nginx start 停止服务命令 sudo /etc/init.d/nginx stop 重启服务命令 sudo /etc/init.d/nginx restart 修改nginx配置文件后测试是否正切命令 nginx -t Nginx服务的运行日志在 /var/log/nginx/ 目录下
安装 Mysql
- 安装 mysql-server 服务命令
sudo apt-get install mysql-server #执行过程中会提示输入用户名和密码
- 安装 mysql-client 客户端命令
sudo apt-get install mysql-client
- 测试 mysql是否安装成功,登录MySQL
mysql -h root -p
- 查看端口监控信息
netstat -anp
- 修改mysql默认密码
- 查看mysql配置文件
sudo cat /etc/mysql/debian.cnf [client] host = localhost user = debian-sys-maint //默认用户名 password = iUYKxmfL7V7kEChV //默认密码 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = iUYKxmfL7V7kEChV socket = /var/run/mysqld/mysqld.sock
- 修改账号密码
mysql -udebian-sys-maint -piUYKxmfL7V7kEChV show databases; use mysql; update user set authentication_string=PASSWORD(123) where user='root'; update user set plugin="mysql_native_password"; flush privileges; quit;
- 如果数据库需要被远程访问
vim /etc/mysql/mysql.conf.d/mysqld.cnf 注掉 "bind-address = 127.0.0.1" mysql -uroot -p update mysql.user set Host='%' where HOST='localhost' and User='root' #任何主机都可访问 FLUSH PRIVILEGES #刷新权限
Redis
-
安装 Redis-server
sudo apt-get install redis-server -y #安装redis服务 sudo apt-get install redis-cli -y #安装redis-cli 客户端 ps -aux|grep redis #检查Redis服务器系统进程 netstat -nlt|grep 6379 #检查Redis端口状态 sudo /etc/init.d/redis-server status #检查Redis运行状态 redis-cli #访问Redis 客户端 dpkg -L redis-server #查看redis安装目录
-
开启允许外部链接
# redis在ubuntu安装后默认是只有本地访问,需要别的ip访问我们需要修改redis的配置文件 sudo vim /etc/redis/redis.conf 将 bind 127.0.0.1 改为 bind 0.0.0.0 任意Ip都能访问 sudo /etc/init.d/redis-server restart #重启 Redis
安装 PHP 及相关扩展
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update
#php 5.6 版本
sudo apt-get install php5.6 php5.6-fpm php5.6-mysql php5.6-gd php5.6-common php5.6-curl php5.6-cli php5.6-mcrypt php5.6-mbstring php5.6-dom php5.6-dev php5.6-json php5.6-zip php5.6-cgi php5.6-bcmath php5.6-enchant php5.6-xml php5.6-xmlrpc php5.6-bz2 php5.6-redis php5.6-xdebug -y
#php 7.0 版本
sudo apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-gd php7.0-common php7.0-curl php7.0-cli php7.0-mcrypt php7.0-mbstring php7.0-dom php7.0-dev php7.0-json php7.0-zip php7.0-cgi php7.0-bcmath php7.0-enchant php7.0-xml php7.0-xmlrpc php7.0-bz2 php7.0-redis php7.0-xdebug -y
dpkg -S php5.6-fpm #查看php安装信息
php.ini 文件位置: /etc/php/*.*/fpm/php.ini
Nginx + PHP 服务
Nginx 与 PHP-FPM集成
- 通过修改fastcgi_pass 启用不同的PHP版本
- PHP-FPM 与 Nginx 通信方式有两种,一种是基于TCP的 Internet domain socket 方式,一种是 UNIX domain socket 方式。
- UNIX domain socket 可以使同一台操作系统上的两个或多个进程进行数据通信。
- UNIX domain socket 的接口和 Internet domain socket 很像,但它不使用网络底层协议来通信。
- 服务器压力不大的情况下,这两种方式性能差别不大,但在压力比较满的时候,用UNIX domain socket方式,效果确实比较好。
UNIX Socket 方式
sudo vim /etc/php/*.*/fpm/pool.d/www.conf
将
listen = 127.0.0.1:9000
;listen.mode = 0660
改为
listen = /run/php/php5.6-fpm.sock #与 Nginx监听同一 sock
listen.mode = 0666 #设置 .sock 文件默认权限
//修改Nginx配置文件
sudo vim /etc/nginx/sites-enabled/default
root /var/www #修改nginx默认项目根目录
添加 index.php 文件访问 index index.php index.html index.htm index.nginx-debian.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
}
// 查看配置是否有误 sudo php5.6-fpm -t
sudo service nginx restart
sudo service php5.6-fpm restart
注意:php*.*-fpm.sock 文件默认是不存在的,需要配置好上面的路径后一定要重启nginx和php服务,否则不会自动生成sock文件
TCP 方式 (默认)
//默认情况下无需修改 www.conf 文件
sudo vi /etc/php/5.6/fpm/pool.d/www.conf
将
listen = /run/php/php5.6-fpm.sock
改为
listen = 127.0.0.1:9000 #与 Nginx监听同一IP端口
//修改Nginx配置文件
sudo vim /etc/nginx/sites-enabled/default
root /var/www #修改nginx默认项目根目录
添加 index.php 文件访问 index index.php index.html index.htm index.nginx-debian.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
}
// 查看配置是否有误 sudo php-fpm5.6 -t
sudo service nginx restart
sudo service php5.6-fpm restart
用sock文件会比访问9000端口快些,不管哪一种方式,通信方式一定要对应
修改nginx站点配置信息
#综合后台
Host:
sudo vim /etc/hosts
添加:
127.0.0.1 localhost-test.com
sudo vim /etc/nginx/sites-available/service
sudo chmod 777 /etc/nginx/sites-available/service
sudo ln -s /etc/nginx/sites-available/service /etc/nginx/sites-enabled/service
sudo vim /etc/nginx/sites-enabled/service
server {
#我挂载的是E盘
root /mnt/e/localhost-test.com/index.php;
index index.html index.php index.htm index.nginx-debian.html;
server_name localhost-test.com
location ~ \.php$ {
# Nginx默认使用的是TCP方式通信将下面两行打开就好了
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
//检查 Nginx 配置是否有误
sudo nginx -t
//重启 Nginx
sudo /etc/init.d/nginx restart
//重启 PHP
sudo /etc/init.d/php5.6-fpm restart
修改后
sudo nignx -t 检查nginx配置是否正确
sudo service nginx restart (重启)
开启OpenSSL扩展
vim /etc/php/**/fpm/php.ini
将 ;extension=php_openssl.dll 注释打开
遇到的问题
- 使用windows10 子系统模式时默认的网关无法访问
sudo vi /etc/resolvconf/resolv.conf.d/base //添加 nameservice 223.5.5.51. nameservice 223.6.6.6 sudo resolvconf -u sudo vi /etc/resolv.conf