不止LNMP的后端开发环境搭建

栏目: PHP · 发布时间: 5年前

内容简介:本次目标是在新安装在虚拟机中的CentOS7.5系统中安装一系列后端开发通常用到的程序服务(这里不介绍CentOS的安装),并以phpMyAdmin为例子部署一个网站.重要提示:如果觉得一个个安装和配置太麻烦那推荐使用[宝塔]()可视化管理工具进行操作,基本实现一键操作极大提高效率,简言之一个字,爽!(当然也不是完美的,如当版本该工具不支持在ubuntu安装MySQL8.0)虚拟机ip是

前言

本次目标是在新安装在虚拟机中的CentOS7.5系统中安装一系列后端开发通常用到的程序服务(这里不介绍CentOS的安装),并以phpMyAdmin为例子部署一个网站.

  • 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安装 MySQL 8.0)

约定

虚拟机ip是 192.168.8.15 ,

管理员用户名 sorgo ,

服务程序执行用户名 www ,

网站根除目录 /data/wwwroot ,

安装和配置时除特别说明则 root 用户操作,

执行编辑文件命令后,下一行开始向右缩进4个空格为本次编辑的内容

CentOS

vmware虚拟机安装不到20分钟可以完成(基础网页服务器1810版本,选中文环境,yum源默认是163.com)

用户设置

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
    GATEWAY=192.168.8.2
    DNS1=192.168.8.2

yum源配置

阿里源

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
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

关闭防火墙

在centos7.5中,防火墙是默认开机启动的,在开发环境中为了方便起见这里直接把防火墙关闭

#查看状态
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 pcre pcre-devel zlib zlib-devel openssl openssl-devel

好用的命令

#按进程名查看pid
pidof nginx
#按进程名终止
pkill redis-server
killall redis-server

ssh

ssh连接工具推荐使用 MobaXterm ,其自带ftp文件传输功能

Nginx(1.16+)

本次安装的是 stable 版(当前是 1.16.* )

官方安装指导文档

增加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及其扩展
#包含 redismemcached 、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

配置

[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'

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]

# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

运行

# 启动
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 --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

以上所述就是小编给大家介绍的《不止LNMP的后端开发环境搭建》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

未来简史

未来简史

[以色列] 尤瓦尔·赫拉利 / 林俊宏 / 中信出版集团 / 2017-2 / 68.00元

进入21世纪后,曾经长期威胁人类生存、发展的瘟疫、饥荒和战争已经被攻克,智人面临着新的待办议题:永生不老、幸福快乐和成为具有“神性”的人类。在解决这些新问题的过程中,科学技术的发展将颠覆我们很多当下认为无需佐证的“常识”,比如人文主义所推崇的自由意志将面临严峻挑战,机器将会代替人类做出更明智的选择。 更重要的,当以大数据、人工智能为代表的科学技术发展的日益成熟,人类将面临着从进化到智人以来z......一起来看看 《未来简史》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具