Linux(Ubantu,Centos) 后端环境部署,问题解决[不定期更新]

一:node,npm环境部署

官网查看最新版本连接:https://nodejs.org/dist/v12.2.0/node-v12.2.0-linux-x64.tar.xz

https://nodejs.org/dist/v12.2.0/node-v12.2.0-linux-x64.tar.xz
tar xf  node-v10.11.0-linux-x64.tar.xz       // 解压
cd node-v10.11.0-linux-x64/                  // 进入解压目录

ln -s /xxx/node-vxxx-linux-x64/bin/node   /usr/local/bin/

ln -s /xxx/node-vxxx-linux-x64/bin/npm   /usr/local/bin/     【软连接需要绝对路径】

注: 如果出现npm已经存在,node 已经存在

root@ubuntu:~$ sudo rm -rf /usr/local/bin/node

root@ubuntu:~$ sudo rm -rf /usr/local/bin/npm

完成之后:

  root@ubuntu:~$ node -v v12.11.0                root@ubuntu:~$ npm -v 6.4.1

二:LNMP 、LAMP、LNMT、LNMH 全自动安装

全自动安装网址  https://oneinstack.com/auto/   

例:LNMP => Linux+nginx+mysql + php  (如下图)

        版本可以随意得选择,一键安装,超级方便(感谢 OneinStack 出了这么好一个部署脚本)

        选择完后复制命令执行即可,重启后生效。

Linux(Ubantu,Centos) 后端环境部署,问题解决[不定期更新]_第1张图片

三:ngnix隐藏index.php 

在http{ server{ location {#代码处} }}里写代码

location / {

  if ( !-e $request_filename ) {

    rewrite ^/(.*)/index.php?s=/index.php?s=1 last;

    break;

  }

}

 

四:ngnix强制跳转https访问 (http->https)

server {  

    listen  192.168.x.xx:80;  

    server_name xxx.com;  

   rewrite ^(.*)$  https://$host$1 permanent;  //添加词句

}  

五:Ubuntu 完全彻底卸载Mysql

1:第一种

sudo rm /var/lib/mysql/ -R

删除mysql的数据文件

sudo rm /etc/mysql/ -R

删除mqsql的配置文件

sudo apt-get autoremove mysql* --purge

sudo apt-get remove apparmor

自动卸载mysql的程序

2:第二种

首先删除mysql:

sudo apt-get remove mysql-* [它会跳出一个对话框,你选择yes就好了 ]

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

 4:第三种 

a. sudo apt-get autoremove --purge mysql-server-5.0

b. sudo apt-get remove mysql-server

c. sudo apt-get autoremove mysql-server

d. sudo apt-get remove mysql-common (非常重要)

上面的其实有一些是多余的,建议还是按照顺序执行一遍

2. 清理残留数据

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

六:Apache服务器出现错误:AH00558: apache2: Could not reliably determine the server's fully .. 解决方法

 在Unbuntu中重启Apache服务器出现错误:AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1.等等。解决方法:     

 $ sudo vim /etc/apache2/apache2.conf

  最后加入一句: ServerName localhost:80

七:ubuntu/centos 松动安装Mysql并且关联PHP 

1.sudo apt-get install mysql-server-5.6

2.测试是否安装成功

   ps aux |grep mysql

   mysql -u root -p (进入数据库)

3:关联PHP

  apt-get install php5-mysql

八:Ubuntu开机自动启动脚本

 1:编写Shell 脚本 test.sh

 2: 将脚本权限   chmod -R 777  test.sh     并移至到/etc/init.rc 下

 3:

设置脚本启动

sudo update-rc.d ptt.sh  defaults 95.

卸载启动脚本

sudo update-rc.d -f test remove

注:

  

 脚本规则 :

#! /bin/bash

### BEGIN INIT INFO

# Provides:          land.sh

# Required-start:    $local_fs $remote_fs $network $syslog

# Required-Stop:     $local_fs $remote_fs $network $syslog

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: starts the svnd.sh daemon

# Description:       starts svnd.sh using start-stop-daemon

### END INIT INFO

.(做一些脚本工作)

九:Errors were encountered while processing的解决办法,sudo apt-get upgrade遇到问题,sudo apt-get install遇到问题 

 问题描述:在Ubuntu执行更新sudo apt-get upgrade或者利用sudo apt-get install安装软件包时遇到:Errors were encountered while processing,查看错误信息发现:2 not fully installed or removed,如下:

root@iZt4n7en5ngj5l9s7w90klZ:~# apt-get upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  linux-generic-lts-xenial linux-headers-generic-lts-xenial
  linux-image-generic-lts-xenial
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up php5-mysql (5.5.9+dfsg-1ubuntu4.29) ...
dpkg: error processing package php5-mysql (--configure):
 subprocess installed post-installation script returned error exit status 10
Setting up grub-pc (2.02~beta2-9ubuntu1.17) ...
dpkg: error processing package grub-pc (--configure):
 subprocess installed post-installation script returned error exit status 10
Processing triggers for libapache2-mod-php5 (5.5.9+dfsg-1ubuntu4.29) ...
Errors were encountered while processing:
 php5-mysql
 grub-pc
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@iZt4n7en5ngj5l9s7w90klZ:~# cd /var/lib/dpkg

解决方法: 
cd /var/lib/dpkg 
sudo mv info info.bak 
sudo mkdir info 
sudo apt-get upgrade 

 

 

十:输出PHP 编码时 500 (Internal Server Error) 具体错误

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

 出错的话,就可以弹出具体的错误位置!

十一:Ubuntu彻底删除/卸载mysql,php,apache

一、卸载删除 mysql

1 sudo apt-get autoremove --purge mysql-server-5.0
2 sudo apt-get remove mysql-server
3 sudo apt-get autoremove mysql-server
4 sudo apt-get remove mysql-common (非常重要)

清理残留数据:

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
sudo find /etc -name "*mysql*" |xargs rm -rf 

最后用 dpkg -l | grep mysql 检查,如无返回即干净卸载


二、卸载删除apache

sudo apt-get --purge remove apache-common
sudo apt-get --purge remove apache

找到没有删除掉的配置文件,一并删除

sudo find /etc -name "*apache*" |xargs rm -rf 
sudo rm -rf /var/www
sudo rm -rf /etc/libapache2-mod-jk
sudo rm -rf /etc/init.d/apache2
sudo rm -rf /etc/apache2

删除关联,

dpkg -l |grep apache2|awk '{print $2}'|xargs dpkg -P

删除svn
sudo apt-get remove subversion
sudo apt-get remove libapache2-svn

最后用 dpkg -l | grep apache 和 dpkg -l | grep apache2检查,如无返回即干净卸载


三、卸载删除php

sudo apt-get –purge remove libapache2-mod-php5 php5 php5-gd php5-mysql
sudo apt-get autoremove php5

删除关联,
sudo find /etc -name "*php*" |xargs rm -rf 

清楚残留信息
dpkg -l |grep ^rc|awk ’{print $2}’ |sudo xargs dpkg -P

最后用 dpkg -l | grep php 和dpkg -l | grep php5 检查,如无返回即干净卸载

脚本删除Mysql:

#!/bin/bash

list=`sudo find / -name mysql*`

for i in $list

do

sudo rm -rf $i

done

exit 0
  • 给这个脚本加上执行权限后执行

sudo chmod u+x deleteMysql.sh

sudo ./deleteMysql.sh

十一:Ubuntu node、npm升级到最新版本,直接安装

sudo apt update -y

sudo apt install -y nodejs nodejs-legacy npm

sudo npm config set registry https://registry.npm.taobao.org

sudo npm install n -g sudo n stable 

 n是一个Node工具包,它提供了几个升级命令参数:

n                              显示已安装的Node版本
n latest                       安装最新版本Node
n stable                       安装最新稳定版Node
n lts                          安装最新长期维护版(lts)Node
n                     根据提供的版本号安装Node

安装后,切换版本:

sudo n           方向键选择已安装的 node 版本,然后回车确认
node -v          检查当期版本

 

如果切换后,node的版本居然没有发生变化,解决方案如下:

export NODE_HOME=/usr/local
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH

十一:Ubuntu redis使用

Ubuntu 下安装

在 Ubuntu 系统安装 Redis 可以使用以下命令:

$sudo apt-get update
$sudo apt-get install redis-server

启动 Redis

$ redis-server

查看 redis 是否启动?

$ redis-cli

以上命令将打开以下终端:

redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。

redis 127.0.0.1:6379> ping
PONG

以上说明我们已经成功安装了redis。

 

redis启动和停止和后台运行

启动:

redis-server &  后台启动使用默认配置

redis-server 直接启动

redis-server  配置路径 如redis-server  /etc/redis.conf 不是后台启动 这时候要后台启动的话就需要配置redis.conf中的

daemonize on

改为yes

停止

 redis-cli -a 密码  -h 127.0.0.1 -p 6379 shutdown

没有密码

redis-cli   -h 127.0.0.1 -p 6379 shutdown

十二:Ubuntu 安装及更新 gcc 版本的方法

应该自带,如果不自带,不追求版本可以

apt-get install gcc

或者

apt-get install build-essential

用于更新所有已安装的库

apt-get upgrade
apt-get dist-upgrade //更新到发布的最新版本

 

操作步骤

安装两个依赖库

这两个依赖库安装完后,可以使用add-apt-repository命令了

apt-get install python-software-properties
apt-get install software-properties-common

更新apt-get的库源

add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update

然后就可以通过apt-get install安装gcc最新的版本了

安装gcc

apt-get install gcc-8
apt-get install g++-8//这是安装g++的,可以考虑一起安装上,万一用的着呢

检查是否安装成功

可以用locate命令来定位一下是否存在了gcc-8g++-8
定位之前需要刷新一下, 否则locate等命令是找不到的

updatedb && ldconfig
locate gcc | grep -E "/usr/bin/gcc-[0-9]"
locate g++ | grep -E "/usr/bin/g\+\+-[0-9]"

如果正确安装了,下面就会出现一个系统原来的和一个新安装的版本,图中安装的版本是gcc-6g++-6(图非笔者所截图,来自于网上,用于说明)

Linux(Ubantu,Centos) 后端环境部署,问题解决[不定期更新]_第2张图片

 

然而我们正常使用的gcc/g++其实都是/usr/bin/gcc和/usr/bin/g++, 他们指向了/usr/bin下真正版本的gcc/g++程序
所以我们接下来需要连接

建立连接

方法有两种

  • 通过ln建立连接
  • 通过update-alternatives建立连接

ln 方法

cd /usr/bin
sudo rm gcc
sudo ln -s gcc-6 gcc
sudo rm g++
sudo ln -s g++-6 g++

sudo可以按需要添加或者去掉

update-alternatives 方法

如果安装了同一个软件的不同版本,可以使用update-alternatives命令设置默认使用哪个版本,典型的如在Ubuntu里安装了gcc-4.8和gcc-8, 想让gcc命令自动使用gcc-8版

首先要让系统知道我们安装了多个版本的gcc

命令最后的 20和50是优先级,如果使用auto选择模式,系统将默认使用优先级高的

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 50

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 50

自此我们的系统就默认选择了优先级最高的gcc版本, 具体选择依配置而定, 可以使用update-alternatives --config修改配置

查询系统中安装有哪些版本

sudo update-alternatives --query gcc

使用交互方式的命令选择默认使用的版本

sudo update-alternatives --config gcc

Linux(Ubantu,Centos) 后端环境部署,问题解决[不定期更新]_第3张图片

十三:Ubuntu下安装cmake

1、查看当前cmake的版本:cmake --version
2、下载cmake安装包
            wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
3、执行
            cd cmake-3.9.2
           ./configure
            sudo make && make install
4、查看版本号,验证
            cmake --version

十四:Centos下安装 gcc-5.0以上

  • 直接安装
  1. yum install centos-release-scl-rh
  2. yum --enablerepo=centos-sclo-rh-testing install devtoolset-6-gcc devtoolset-6-gcc-c++
  3. source /opt/rh/devtoolset-6/enable
  • 源码编译

如果直接下载gcc6.3.0进行安装升级的话,会报错

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

接下来我们需要以此安装gmp,mpfr,mpc,这三个组件的顺序不能乱,因为后面的依次依赖前面

1、安装相关依赖

  • yum install "gmp-devel.x86_64"
  • yum install gcc-c++
  • yum install m4

2、安装gmp

  • wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
  • xz -d gmp-6.1.2.tar.xz
  • tar xvf gmp-6.1.2.tar
  • cd gmp-6.1.2
  • ./configure --prefix=/usr/local/gmp
  • make  && make install

 

3、安装MPFR

  • wget https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.gz
  • tar -zxvf mpfr-4.0.2.tar.gz
  • cd mpfr-4.0.2

在目录文件 src/mul.c 该行代码下面

#define MPFR_VERSION_STRING "4.0.2"

添加代码

#define mpfr_add_one_ulp(x,r) \
(mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
#define mpfr_sub_one_ulp(x,r) \
(mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))

然后执行

  • ./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
  • make  && make install

 

4、安装mpc

  • wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
  • tar -zxvf mpc-1.0.3.tar.gz
  • cd mpc-1.0.3
  • ./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
  • make  && make install

如果报错:mul.c:175:1: error: conflicting types for ‘mpfr_fmma’

则将 mpc/src/mul.c中的 mpfr_fmma函数改名为mpfr_fmma_mul,一共三处

4、安装GCC

  • wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.gz
  • tar -zxvf gcc-6.3.0.tar.gz
  • cd gcc-6.3.0
  • ./configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
  • make && make install

    如果几分钟后出现报错:

             cannot compute suffix of object files: cannot compile

     解决方法如下:

             vi /etc/profile

       添加

            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib

            source /etc/profile

        重新编译安装即可

5、建立软链接

  1. [root@centos]# ln -sf /usr/local/gcc/bin/gcc /usr/bin/gcc
  2. [root@centos]# ln -sf /usr/local/gcc/bin/c++ /usr/bin/c++
  3. [root@centos]# ln -sf /usr/local/gcc/bin/g++ /usr/bin/g++
  4. [root@centos]# ln -sf /usr/local/gcc/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6 

 

十四:.user.ini权限问题解决方法 

1、chattr解决权限问题,对.user.ini进行解锁

chattr -i /www/wwwroot/test/.user.ini

2.使用ftp或rm进行删除

总结,为了解决跨站安全问题,现在lnmp 宝塔linux面板 wdcp都对使用了chattr命令对.user.ini进行加锁,所以我们需要解锁。

你可能感兴趣的:(android,PHP,前端)