1. 程式人生 > >Ubuntu虛擬機搭建LNMP

Ubuntu虛擬機搭建LNMP

htm ots 靜態ip df -h 如果 找不到 available config number

下載虛擬機

註意是下載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服務

Ubuntu虛擬機搭建LNMP