不止LNMP的後端開發環境搭建

前言

本次目標是在新安裝在虛擬機中的CentOS7.5系統中安裝一系列後端開發一般用到的程序服務(這裏不介紹CentOS的安裝),並以phpMyAdmin爲例子部署一個網站.php

  • Nginx(1.16)
  • MySQL(8.0,開機啓動)
  • PHP(7.3)
  • Redis(1.5)
  • memcached(1.4)
  • Composer(1.8)
  • phpMyAdmin(4.8)
  • nodejs(10.15)
  • yarn(1.15)

重要提示:若是以爲一個個安裝和配置太麻煩那推薦使用寶塔可視化管理工具進行操做,基本實現一鍵操做極大提升效率,簡言之一個字,爽!(固然也不是完美的,如當版本該工具不支持在ubuntu安裝MySQL8.0)css

約定

虛擬機ip是192.168.8.15,
管理員用戶名sorgo,
服務程序執行用戶名www,
網站根除目錄/data/wwwroot,
安裝和配置時除特別說明則root用戶操做,
執行編輯文件命令後,下一行開始向右縮進4個空格爲本次編輯的內容html

CentOS

vmware虛擬機安裝不到20分鐘能夠完成(基礎網頁服務器1810版本,選中文環境,yum源默認是163.com)node

用戶設置

useradd www -s /usr/sbin/nologin
useradd -G www sorgo
passwd sorgo
#賦予sorgo用戶root權限,且切換root時不用輸密碼, `-l`查看已有權限
visudo
    #編輯內容:
    #添加一條,表示sorgo可以使用`sudo`執行root權限
    sorgo ALL=(ALL) NOPASSWD: ALL

全局命令別名設置

vim /etc/bashrc
    # 添加內容:
    alias s-start='systemctl start'
    alias s-stop='systemctl stop'
    alias s-restart='systemctl restart'
    alias s-enable='systemctl enable'
    alias s-disable='systemctl disablep'
    alias s-status='systemctl status'
    alias vi='vim'
    alias ll='ls -laph'
    alias ..='cd ..'
    alias nrd='npm run dev'
    alias nrh='npm run hot'
    alias nrp='npm run production'
    alias nrw='npm run watch'
    alias nrww='npm run watch-poll'
    alias yrd='yarn run dev'
    alias yrh='yarn run hot'
    alias yrp='yarn run production'
    alias yrw='yarn run watch'
    alias yrwp='yarn run watch-poll'
    alias pa='php artisan'
    alias phpspec='vendor/bin/phpspec'
    alias phpunit='vendor/bin/phpunit'
#使修改當即生效
source /etc/bashrc

網站目錄及權限

#項目目錄
mkdir -p /data/wwwroot/
#日誌目錄
mkdir -p  /data/wwwlogs/nginx/
#網站基礎應用的安裝目錄
mkdir /data/server/
#賦權
chown -R sorgo:www /data/
chmod -Rf g+s /data/

網卡配置

#查看網卡名,左側一欄那個就是
ifconfig
#編輯網卡配置,使nat模式的ip固定下來
vi /etc/sysconfig/network-scripts/ifcfg-ens33
    #編輯內容:
    #配置文件關鍵內容,僅供參考
    NAME=ens33
    DEVICE=ens33
    DEFROUTE=yes
    ONBOOT=yes
    #設置爲static時要帶`IPADDR`
    BOOTPROTO=static
    IPADDR=192.168.8.15
    NETMASK=255.255.255.0
    
#重啓生效
systemctl restart network

yum源配置

阿里源mysql

cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

163源
官方使用幫助linux

cd /etc/yum.repos.d/  
mv CentOS-Base.repo CentOS-Base.repo.backup  
wget -O CentOS-Base.repo https://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all
yum makecache

#更新系統全部yum安裝的程序,選作
yum update -y

yum的一些命令nginx

yum list all               #列出全部安轉包
yum list installed         #列出已經安裝的
yum list available         #列出沒有安裝的
yum remove software        #卸載軟件
yum install software       #安裝軟件
yum search 關鍵字           #搜索與關鍵字相關的軟件
yum whatprovides 文件       #搜索包含此文件的包
yum reinstall software     #重新安裝軟件
yum localinstall 第三方軟件 #安裝該軟件並解決依賴關係
yum info software          #查詢軟件信息
yum groups list            #列出軟件組
yum groups install         #安裝組
yum groups remove          #卸載組
yum groups info            #查看組信息
yum repolist               #查看已安裝的源

關閉防火牆

在centos7.5中,防火牆是默認開機啓動的,在開發環境中爲了方便起見這裏直接把防火牆關閉laravel

#查看狀態
systemctl status firewalld
#取消開機啓動
systemctl disable firewalld
#關閉防火牆
systemctl stop firewalld
#關閉selinux,不然影響samba的使用
vi /etc/selinux/config
    #編輯內容:
    SELINUX=disabled

pstree

yum install psmisc -y
#查看目前在運行的進程
pstree

編譯安裝程序用到的工具

#centos1810已默認安裝
yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

好用的命令

#按進程名查看pid
pidof nginx
#按進程名終止
pkill redis-server
killall redis-server

ssh

ssh鏈接工具推薦使用MobaXterm,其自帶ftp文件傳輸功能c++


Nginx(1.16+)

本次安裝的是stable版(當前是1.16.*)
官方安裝指導文檔git

增長nginx源文件

#建立源文件
vi /etc/yum.repos.d/nginx.repo
    #添加如下內容
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key

若是要將主線版本設爲默認安裝的版本,可執行yum-config-manager --enable nginx-mainline

安裝

yum install yum-utils
#下面命令會安裝前面源文件設置的stable版本
yum install -y nginx
#查看安裝好的版本
nginx -v

網站目錄配置

全局配置

#配置執行用戶名
vi /etc/nginx/nginx.conf
    #編輯內容:
    user www;

爲新項目添加一個nginx站點配置,這是一個php網站的配置模板,從此其它網點的配置都會以這個模板爲基礎進行修改匹配.

#vi /etc/nginx/conf.d/your_project_name.conf
    #編輯內容:
    #添加
    server
    {
      listen 1700;
      #listen 443 ssl http2;
      #listen [::]:443 ssl http2;
      #listen [::]:80;
      #server_name domain.com;
      
      #字符集設置只能在server塊內
      charset utf-8;
      
      index index.php index.html index.htm default.php default.htm default.html;
      root /data/wwwroot/your_project_name/public;
      
      #access_log  /data/wwwlogs/nginx/your_project_name.log;
      #error_log  /data/wwwlogs/nginx/your_project_name.error.log;
    
      #laravel、thinkPHP路由配置
      location / {
       try_files $uri $uri/ /index.php?$query_string;
      }
      
      #運行php文件
      location ~ \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
      }
    
      #禁止訪問的文件或目錄
      location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
      {
        return 404;
      }
      
      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
      {
        expires      30d;
        error_log off;
        access_log /dev/null;
      }
      
      location ~ .*\.(js|css)?$
      {
        expires      12h;
        error_log off;
        access_log /dev/null; 
      }
    }

運行

#測試配置信息是否有語法問題,經過後才能啓動
nginx -t
#啓動
nginx

所有指令

nginx -t #測試配置信息
nginx #默認啓動方式 start
nginx -v #顯示版本信息,-V(大V)顯示編譯時的參數
nginx -s stop #快速中止服務
nginx -s quit #正常中止服務
nginx -s reload #重啓

PHP(7.3)

PHP7.3

安裝

#安裝源
yum install -y epel-release
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
#搜索符合條件的包
yum search php73
#安裝php7.3及其擴展
#包含redis、memcached、msgpack和yaf框架等php擴展
yum install -y php73-php php73-php-fpm php73-php-pear php73-php-bcmath php73-php-mbstring php73-php-cli php73-php-pdo php73-php-pecl-mysql php73-php-mysqlnd php73-php-pecl-redis4 php73-php-pecl-memcached php73-php-pecl-msgpack php73-php-pecl-yaf php73-php-pecl-jsond-devel php73-php-gd php73-php-common php73-php-intl php73-php-xml php73-php-opcache php73-php-pecl-apcu php73-php-gmp php73-php-process php73-php-pecl-imagick php73-php-devel php73-php-zip php73-php-ldap php73-php-imap php73-php-pecl-mcrypt

#程序的安裝路徑:`/opt/remi/php73/`;
#配置文件路徑:`/etc/opt/remi/php73/php.ini`;

配置

cp /etc/opt/remi/php73/php.ini /etc/opt/remi/php73/php.ini.bak
#修改php時區和擴展文件目錄路徑
vi /etc/opt/remi/php73/php.ini
    #編輯內容:
    date.timezone = PRC
    extension_dir = "/opt/remi/php73/root/usr/lib64/php/modules/"
    
#修改php-fpm執行用戶
vi /etc/opt/remi/php73/php-fpm.d/www.conf
    #編輯內容:
    user=www
    group=www
    
#賦權
chown -R root:www /var/opt/remi/

#軟鏈到通常目錄
ln -s /etc/opt/remi/php73/php.ini /etc/php.ini
ln -s /opt/remi/php73/root/usr/bin/php /usr/bin/php
ln -s /opt/remi/php73/root/usr/sbin/php-fpm /usr/bin/php-fpm
ln -s /opt/remi/php73/root/usr/bin/php-cgi /usr/bin/php-cgi
ln -s /opt/remi/php73/root/usr/bin/pear /usr/bin/php-pear
ln -s /opt/remi/php73/root/usr/bin/phar.phar /usr/bin/php-phar

#查看安裝的php版本
php -v
#查看已經安裝的php擴展模塊
php -m

運行php-fpm

#啓動
php-fpm
#終止
kill -QUIT `cat /var/opt/remi/php73/run/php-fpm/php-fpm.pid`
#重啓
kill -USR2 `cat /var/opt/remi/php73/run/php-fpm/php-fpm.pid`

MySQL(8.0)

官方安裝指南

yum安裝

安裝

#下載源
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
#安裝源
yum localinstall -y mysql80-community-release-el7-1.noarch.rpm
  #列出可用的mysql包
  #yum repolist enabled | grep mysql
  #若是打算安裝5.7,那執行下面兩句,切換默認版本
  #yum-config-manager --disable mysql80-community
  #yum-config-manager --enable mysql57-community
#安裝
yum install -y mysql-community-server
    #更新版本
    #yum update mysql-server

# 查看版本
mysql -V

配置

vi /etc/my.cnf
    #編輯內容
    [mysqld]
    # 設置3301端口
    port=3301
    # 容許最大鏈接數
    max_connections=200
    # 容許鏈接失敗的次數。這是爲了防止有人從該主機試圖攻擊數據庫系統
    max_connect_errors=10
    # 服務端使用的字符集默認爲UTF8
    #character-set-server=utf8
    # 建立新表時將使用的默認存儲引擎
    default-storage-engine=INNODB
    # 默認使用「mysql_native_password」插件認證,以mysql5.7的密碼處理方式保存,以兼容較舊的鏈接程序,8.0默認是caching_sha2_password方式
    default_authentication_plugin=mysql_native_password
    #設置默認時區
    default-time_zone = '+8:00'

運行

# 啓動
systemctl start mysqld
# 開機啓動
systemctl enable mysqld
# 狀態
systemctl status mysqld
# 查看root初始密碼
grep 'temporary password' /var/log/mysqld.log

# 登陸
mysql -uroot -p
# 必須修改初始密碼,新密碼須包含大小字字母、數字和特殊字符至少8個字符
# 採用mysql_native_password方式處理密碼,以mysql5.7的密碼處理方式保存,以兼容較舊的鏈接程序,8.0默認是caching_sha2_password方式
  mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Sorgo123.';
# 進入MySQL數據庫
  mysql> use mysql;
# 設置root用戶可在任意主機登陸
  mysql> update user set host='%' where user='root' and host='localhost';
  mysql> FLUSH PRIVILEGES;   
# 查詢user表信息
  mysql> select user,host,plugin from user;

Redis(5.0)

推薦的使用手冊

安裝

cd /data/server/
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -zvxf redis-5.0.4.tar.gz && cd redis-5.0.4
make
#軟鏈成統一的目錄,方便多版本管理
ln -s /data/server/redis-5.0.4 /data/server/redis
ln -s /data/server/redis/redis.conf /etc/redis.conf
#軟鏈到命令目錄
ln -s /data/server/redis/src/redis-cli /usr/local/bin/redis-cli
ln -s /data/server/redis/src/redis-server /usr/local/bin/redis-server
ln -s /data/server/redis/src/redis-sentinel /usr/local/bin/redis-sentinel
#查看版本
redis-server -v

配置

# vi /etc/redis.conf
    #任意主機可訪問
    bind 0.0.0.0
    #密碼登陸
    requirepass Sorgo123.
    #後臺進程的方式運行
    daemonize yes

運行

#按配置文件開啓
redis-server /etc/redis.conf
#進入交互操做工具
redis-cli -h 127.0.0.1 -p 6379 -a Sorgo123.
#查看redis進程信息
info server
#關閉服務
shutdown

memcached(1.4)

yum安裝1.4

yum install -y memcached
#查看幫助信息及版本
memcached -h
#開啓,可按不一樣端口開啓多個進程
memcached -d -p 11211 -m 150 -u www
#關閉,會把進程名包含`memcached`的都關閉
pkill memcached
啓動選項:
-d 是啓動一個守護進程;
-m 是分配給Memcache使用的內存數量,單位是MB;
-u 是運行Memcache的用戶;
-l 是監聽的服務器IP地址,能夠有多個地址;
-p 是設置Memcache監聽的端口,,最好是1024以上的端口;
-c 是最大運行的併發鏈接數,默認是1024;
-P 是設置保存Memcache的pid文件。

編譯安裝,1.5

cd /data/server/
#先安裝依賴,不然沒法編譯
yum install -y libevent-devel
#下載源碼
wget http://www.memcached.org/files/memcached-1.5.13.tar.gz
#解壓和進入目錄
tar -zvxf memcached-1.5.13.tar.gz && cd memcached-1.5.13
#執行配置,這裏只設置安裝目錄
./configure --prefix=/data/server/memcached-1.5.13/
#編譯和安裝
make && make install
ln -s /data/server/memcached-1.5.13 /data/server/memcached
ln -s /data/server/memcached/bin/memcached /usr/local/bin/memcached
#查看安裝的版本
memcached -h

samba(4.8)

#安裝
yum install -y samba samba-client samba-common 
#添加samba用戶,用戶已存在的用戶名,專門給samba登陸的密碼:sorgo
smbpasswd -a sorgo
#查看已添加的用戶
pdbedit -L

#修改配置
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
vim /etc/samba/smb.conf
    #添加可經過samba訪問的目錄路徑
    [wwwroot]
             comment = website root
             path = /data/wwwroot
             valid users = sorgo
             writable = yes
             create mask = 0750
             directory mask = 0750
             
#檢測配置文件語法
testparm
#啓動
systemctl enable smb && systemctl enable nmb
systemctl restart smb && systemctl restart nmb
#查看狀態
smbstatus

# linux端使用
##測試鏈接
smbclient -L //192.168.8.15 -U smb_user_naem
##掛載到應用端
mount -t cifs //192.168.8.15/wwwroot/  /smb/ -o  username=smb_user_naem,password=1234
df -h /smb
##卸載
umount /smb

# windows端使用
\\${ip}

# 注意事項
* 絕對不要在配置文件裏寫中文,即便是中文註釋,不然windows沒法進入該目錄!!!
* 若是服務器在windows裏ping不通(不是由於服務器禁止ping,而是未知緣由),那也是連不上的.
* phpstrom在打開samba項目文件時變得異常卡頓

Composer(1.8)

安裝

#生成composer.phar
php73 -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php73 composer-setup.php
php73 -r "unlink('composer-setup.php');"
#移至命令目錄
mv composer.phar /usr/local/bin/composer
#版本等信息
composer

設置

#設置源爲國內鏡像,下面二選一
composer config -g repo.packagist composer https://packagist.phpcomposer.com
composer config -g repo.packagist composer https://packagist.laravel-china.org
#解除上面的設置
composer config -g --unset repos.packagist
#查看全局配置
composer config -gl

phpMyAdmin

phpMyAdmin其實就是一個php寫的網站, 到官網把php文件包下載到服務器, 設置好nginx指向根目錄便可.

cd /data/server/

#獲取方式1: 使用composer下載(有時速度不理想)
#composer create-project phpmyadmin/phpmyadmin
#獲取方式2: wget直接從官網下載(這是本次演示的方式)
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip
#獲取方式3: 在其它地方下載好,而後經過ftp上傳到本服務器,原則上哪一個便利採用哪一種

#解壓到當前目錄
unzip phpMyAdmin-4.8.5-all-languages.zip
#軟鏈方便版本控制
ln -s phpMyAdmin-4.8.5-all-languages phpmyadmin

#編輯配置文件
cp phpmyadmin/config.sample.inc.php phpmyadmin/config.inc.php
vi phpmyadmin/config.inc.php
    #下面是編輯內容: 
    #設置任意32位以上長度的密鑰
    $cfg['blowfish_secret'] = 'dNE9GVnon3LWSVGvhGPuZdBhb7c7RtQ3'; 

#賦權
chmod -R 770  phpmyadmin/

#nginx網站配置,利用sed命令來替換一個模板配置中的關鍵值
#主要改變了監聽的端口`8888`和日誌文件名`phpmyadmin`
cat /etc/nginx/conf.d/your_project_name.conf | sed 's/1700/8888/g' | sed 's/your_project_name\./phpmyadmin\./g' | sed 's/wwwroot\/your_project_name\/public/server\/phpmyadmin\//g' > /etc/nginx/conf.d/phpmyadmin.conf

#檢查配置文件無誤方可啓動
nginx -t
#重啓nginx
nginx -s reload
#訪問
http://192.168.8.15:8888/

node.js(10.15lts)

中文API文檔
node.js的安裝方式有:

  1. epel源yum安裝(目前是6.16版);
  2. 二進制文件安裝;
  3. 源碼編譯安裝;

如今介紹後兩種方法,也是版本選擇較爲豐富的方法

二進制文件安裝(10.15.3)(推薦)

這個是下載下來就能用的

cd /data/server/
#下載二進制文件包,大概12M
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz
#解壓,注意這個解壓命令與解壓`.gz`結尾的文件不一樣
tar -xJvf node-v10.15.3-linux-x64.tar.xz
#軟鏈
ln -s node-v10.15.3-linux-x64 node
ln -s /data/server/node/bin/node /usr/local/bin/node
ln -s /data/server/node/bin/npm /usr/local/bin/npm
ln -s /data/server/node/bin/npx /usr/local/bin/npx

#查看版本
node -v
npm -v

編譯安裝(10.15.3)

編譯的過程很慢,親測一個小時左右

cd /data/server/
#下載源碼,大概35M
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3.tar.gz
tar -zvxf node-v10.15.3.tar.gz && cd node-v10.15.3
#執行配置腳本
./configure
#編譯和安裝
make && make install
#查看版本
node -v
npm -v

yarn(1.15)

官方安裝文檔

#添加yarn的yum源
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
#安裝,須確保nodejs已經安裝好
yum install -y yarn
#查看版本
yarn -v
相關文章
相關標籤/搜索