微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ubuntu虚拟机搭建LNMP

下载虚拟机

注意是下载VMware-workstation-Pro 而不是 VMware-workstation-play
我下载的是:VMware-workstation-full-14.1.3-9474260.exe

下载Ubuntu的镜像

注意下载无桌面版的
中科大地址 http://mirrors.ustc.edu.cn/ubuntu-releases/ubuntu-18.04.1-live-server-amd64.iso

安装步骤

...

Ubuntu添加远程登录的root账号

Ubuntu中的root帐号认是被禁用了的

sudo passwd -u root # 创建root用户
sudo passwd root  # 为root账户设置密码 输入两次
su -  # 测试root账号  输入root密码进入终端
vim /etc/ssh/sshd_config  # 找到ssh的配置文件
## 找到 PermitRootLogin yes 添加这一行到对应位置
service ssh restart  # 重启ssh服务

时区调整

tzselect # 选择Asia-->选择China--> Beijing-->然后选1(Yes)
TZ='Asia/Shanghai'
export TZ
## 设置时区永久为上海
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

自定义Vim配置

cd ~
cp /usr/share/vim/vim80/vimrc_example.vim .vimrc
vim .vimrc


##### 取消backup备份文件,找到如下这行注释
"  set backup       " keep a backup file (restore to prevIoUs version)


##### 结尾添加下面

 62 
 63 """"""""""""""""User set"""""""""""""""""""
 64 
 65 " no vim swap file
 66 set noswapfile
 67 set undodir=~/.undodir
 68 
 69 " show line number
 70 set number
 71 
 72 " tab-->4 space
 73 set ts=4
 74 set expandtab
 75 set autoindent

虚拟机共享Windows系统文件

虚拟机菜单栏 -> 虚拟机 -> 设置 -> 选项 -> 共享文件夹 -> 总是启用 -> 添加(找到要共享的文件夹) ->确定

上面正常的话不用重启 df -h就看到 /mnt/hgfs 了,ls /mnt/hgfs 发现刚共享的文件夹 我这里是share_file

虚拟机重启自动挂载共享文件

注意:虚拟机重启后 /mnt/hgfs找不到对应文件夹了,按如下执行一轮

虚拟机菜单栏 -> 虚拟机 -> 设置 -> 选项 -> 共享文件夹 ->禁用->确定

虚拟机菜单栏 -> 虚拟机 -> 设置 -> 选项 -> 共享文件夹 ->总是启用->确定

当然上面的有两轮操作,而且不是自动挂载,超级麻烦。下面是试了N次,重启N多次成功的方法

apt-get install open-vm-tools
apt-get install open-vm-tools-dkms

# 查看Nginx用户ID,这里Nginx暂时没安装,安装见后面步骤
# 由于我的共享文件夹是要挂载站点根目录的,所以有这步
ps -ef | grep Nginx  
# 查看启动Nginx用户的信息
id www-data  #uid=33 gid=33 

# 不用www-data用户挂载的话可以省略-o和后面的选项,这样就只有当前用户挂载了
vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid=33,gid=33  # 上面查到的
#如果报错 fuse: mountpoint is not empty 那重启机器再执行 
#如果执行没问题 
df -h  #查看挂载情况,然后访问下Nginx配置的站点是否能访问
reboot # 重启服务器

上面确认执行完成后配置开机自动挂载

vim /etc/fstab   # 下面一句加到后面,注意没有井号,以及uid和gid
# .host:/ /mnt/hgfs/  fuse.vmhgfs-fuse    allow_other,uid=33,gid=33   0   0
mount -a  # 一定要测试下,否则重启开不了机
reboot # 重启服务器,然后查看挂载情况

虚拟机网络桥接

如果内网IP富裕的话优先考虑网络桥接的方式

虚拟机关机后找到 虚拟机菜单栏 -> 虚拟机 -> 设置 -> 网络适配器 选择桥接模式

开机进去命令行配置

Ubuntu 18.04的网络管理程序改为netplan了,因此配置方式也需要改。如果按原来的话会遇到 /etc/init.d/networking: No such file or directory 问题

ifconfig -a  # 查看IP  认网卡为(机器不一样可能会不一致): ens33
vim cat /etc/netplan/50-cloud-init.yaml # 修改网络配置

如果要使用静态IP的话,需要修改为下面的样子:

# network: {config: disabled}
network:
    ethernets:
        ens33:
            addresses: [192.168.1.233/24]  // 前面是虚拟机ip /24 据说是掩码,照着抄
            gateway4: 192.168.1.1  // 网关,跟Windows一样
            dhcp4: no
            dhcp6: no
            nameservers:   // 最好配置一下,非动态获取ip时需要
                addresses: [114.114.114.114, 8.8.8.8]
    version: 2

刷新下网络配置

netplan apply
ping www.baidu.com  # 测试一下

PHP安装

首先更新apt-get源,不更新很多包没有

由于 ubuntu 认的 PHP 镜像是 PHP5.5.9 所以需要添加 PHP7 镜像

1、备份源文件

cp /etc/apt/sources.list /etc/apt/sources.list.bak # 备份

2、编辑源列表文件

vim /etc/apt/sources.list  # 将

3、将原来的列表删除添加如下内容(中科大镜像源)

deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

4、更新apt列表

apt-get update

备用: 下面的不一定需要,我之前安装的时候没有先改apt源才找到下面的解决问题

apt-get update
apt-get install -y language-pack-en-base
apt-get install software-properties-common
LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/PHP
apt-get update

安装PHP7.2

#安装PHP7.2
apt-cache search PHP7-* #搜索 PHP modouls
apt-get install -y PHP7.2 PHP7.2-cli PHP7.2-dev PHP7.2-fpm PHP7.2-mbstring PHP7.2-json PHP7.2-xml PHP7.2-MysqL # 安装自己需要的模块
PHP -v   #查看版本
PHP -m   #查看扩展

PHP -i|grep Configure
#报错 PHP Warning:  Module 'mbstring' already loaded in UnkNown on line 0

curl -sS https://getcomposer.org/installer | PHP
## 报错 PHP Warning:  Module 'mbstring' already loaded in UnkNown on line 0
# 因为之前我没更新源找不到 PHP7.2-mbstring 模块,自己改了PHP.ini测试忘记改回来了
# 知道问题就把PHP.ini上修改的还原
PHP -i|grep Configure  # 没有报警了

service PHP7.2-fpm start    # 启动PHP-fpm服务

安装Composer

PHP composer.phar  # 检查 Composer 是否正常工作 这将返回给你一个可执行的命令列表
mv composer.phar /usr/local/bin/composer # composer命令加到全局
composer config -g repo.packagist composer https://packagist.PHPcomposer.com  # 使用中国区镜像

安装Nginx

有源码安装和apt源安装两种安装方式 参考: https://www.cnblogs.com/EasonJim/p/7806879.html

apt安装

/usr/sbin/Nginx:主程序

/etc/Nginx:存放配置文件

/usr/share/Nginx:存放静态文件

/var/log/Nginx:存放日志

相关命令
service Nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

虚拟站点配置

vim /etc/Nginx/sites-available/www.mysite.com

##############输入内容如下#####################
server {
    listen 80;
    server_name www.mysite.com;
    root /mnt/hgfs/share_file/mysites/www;  # 自己对应的目录

    add_header x-frame-options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.PHP;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.PHP?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.PHP;

    location ~ \.PHP$ {
        fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
        # 这句得有,否则显示空白页
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        # 找到对应的PHP7.2-fpm.sock路径
        fastcgi_pass unix:/var/run/PHP/PHP7.2-fpm.sock;
        fastcgi_index index.PHP;
        include fastcgi_params;
    }

    location ~ /\.(?!well-kNown).* {
        deny all;
    }
}
##########www.mysite.com END####################

# 创建软链接
ln -s /etc/Nginx/sites-available/www.mysite.com /etc/Nginx/sites-enabled/www.mysite.com

/usr/sbin/Nginx -t     #修改配置文件后
service Nginx reload   #重启

最后修改windows的host文件

Docker安装

还有Docker安装方式稍复杂,以后研究

安装MysqL

sudo apt-get install MysqL-server-5.7 # 安装5.7版本

sudo netstat -tap | grep MysqL #可以看到有进程

MysqL -u root -p # 可以进入MySQL命令行

# 下面两个可以不安装
apt-get isntall MysqL-client
sudo apt-get install libMysqLclient-dev

配置MysqL的root密码和远程访问权限

MysqL 5.7版本安全变了
配置文件 /etc/MysqL/my.cnf
配置文件增加
[MysqLd]

port=3306
bind-address=0.0.0.0

cat /etc/MysqL/debian.cnf # 查看root用户的初始密码 

# MysqL -uroot -p 能进去,但改不了root的密码方式
MysqL -udebian-sys-maint -pISU7sh43XuyX4n78 # 密码是上面看到的,每个机器不同

MysqL> use MysqL;
MysqL> select host, user, plugin,authentication_string from user;
MysqL> UPDATE MysqL.user SET authentication_string=PASSWORD('root'), PLUGIN='MysqL_native_password' WHERE USER='root';
MysqL> select host, user, plugin,authentication_string from user; # 看到root用户的plugin方式变了
MysqL> flush privileges;
MysqL> exit;
# 重启MysqL服务
service MysqL restart 

安装Redis

安装Redis服务端

apt-get install redis-server

redis-cli # 进入Redis命令行表示安装成功

配置文件地址 /etc/redis/redis.conf

安装Redis PHP扩展

wget https://github.com/PHPredis/PHPredis/archive/develop.zip # 下载源码安装包
apt install zip          # 安装zip命令
unzip develop.zip        # 解压
cd PHPredis-develop/     # 进入文件PHPize   # 生成configure配置文件。 前面安装 PHP7.2-dev模块,正好这里有用
./configure      # 很多文章这里有--with-PHP-config参数,我们不用一样可以
make
make install  # 输出最后一句是 Installing shared extensions:/usr/lib/PHP/20170718/
ll /usr/lib/PHP/20170718/   # 检查下目录下面是不是很多.so文件包括redis.so

ll /etc/PHP/7.2/mods-available/   # 新版本PHP添加模块不用改PHP.ini,在这里一个对应的
cp /etc/PHP/7.2/mods-available/sockets.ini /etc/PHP/7.2/mods-available/redis.ini
vim /etc/PHP/7.2/mods-available/redis.ini # 参照修改为 redis.so
cd /etc/PHP/7.2/fpm/conf.d/  
ln -s /etc/PHP/7.2/mods-available/redis.ini 20-redis.ini   #fpm模式加载配置
cd /etc/PHP/7.2/cli/conf.d/
ln -s /etc/PHP/7.2/mods-available/redis.ini 20-redis.ini   #cli模式加载配置 
PHP -m     # 查看是否有redis模块
service PHP7.2-fpm reload    # 重启PHP-fpm服务

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐