参考:http://blog.reetsee.com/archives/296

在开始前,先安装一些通常来说应该已经有的组件,不过以防没有可以检查并安装一下。对于使用CentOS的用户在root权限下输入命令:

yum -y install gcc automake autoconf libtool make gcc-c++ glibc

安装PHP

为了开启PHP的一些功能(例如对png格式的支持等),首先需要安装一些库,CentOS命令如下:

yum -y install libmcrypt-devel mhash-devel libxslt-devel \
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \
ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
krb5 krb5-devel libidn libidn-devel openssl openssl-devel

库已经安装好了,要注意的是在编译PHP时可能会说缺少其中的几个库,到时候请各位在百度(或者谷歌)搜一下这个库的官网,使用wget下载然后解压然后安装到你指定的一个目录,最后在编译PHP时指定这个库安装后的路径即可。为了方便演示,接下来碰到这个问题时,我默认使用以下的几个路径:

  • 所有下载的压缩包放在「/home/download/」这个文件夹下;
  • 所有的压缩包解压后的路径也是「/home/download/」,即如果压缩包名字是「openssl-1.0.1e.tar.gz」,那么解压后「/home/download/」下会有一个名字为「openssl-1.0.1e」的文件夹;
  • 所有的库安装路径都是「/usr/local/」,指定安装路径的方法下面会有。
首先先安装PHP用到的相关库:

下载并安装库——以mcrypt为例:

在搜索引擎得知mcrypt的官网,进入源码下载的页面,复制「libmcrypt-2.5.7.tar.gz」的下载地址,切换到目录「/home/download/」执行下载并安装的操作:

wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
tar zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure --prefix=/usr/local/mcrypt
make && make install

这样就把mcrypt安装到「/usr/local/mcrypt」下了。

下载PHP,在命令行下我先把当前目录切换到「/home/download/」

wget http://hk1.PHP.net/get/PHP-5.5.38.tar.gz/from/this/mirror

下载后执行解压操作,并切换到PHP的代码目录:

tar zxvf PHP-5.5.38.tar.gz
cd PHP-5.5.38/

执行以下命令对PHP的安装进行设置:

./configure --prefix=/usr/local/PHP \
--enable-fpm --with-mcrypt=/usr/local/mcrypt \
--enable-mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath \
--enable-inline-optimization --with-bz2  --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --enable-zip --with-pcre-regex --with-MysqL --with-MysqLi \
--with-gd --with-jpeg-dir --with-openssl --with-libdir=lib64

对上面的命令作一下简单的说明:

从总体来看就是设置安装的PHP需要或不需要哪些功能,安装目录是什么, 需要哪些库
–prefix=/usr/local/PHP :把PHP安装在「/usr/local/PHP」目录下
–enable-fpm :为了让Nginx和PHP能够互相「交谈」,需要一个叫做FastCGI的工具,因此PHP需要使用PHP-FPM来管理FastCGI。
–with-openssl :安装OpenSSL库
其它的「–with-xxx」即需要xxx库,「–enable-yyy」即开启yyy的支持,「–disable-zzz」即禁用zzz。

最后配置成功会出现「Thank you for using PHP.」

配置完就输入以下命令进行安装:

make && make install

安装完后还有一点收尾工作,首先是配置PHP-fpm,首先是切换到PHP的安装目录下的etc文件夹:

cd /usr/local/PHP/etc/

然后执行下面的命令:

cp PHP-fpm.conf.default PHP-fpm.conf

再对PHP-fpm.conf的内容进行修改,将「user = nobody」,「group = nobody」分别改为「user = www」,「group = www」

保存后需要保证名为「www-data」的用户以及组存在,因此在命令行执行下列语句:

groupadd www
useradd -g www www

这样PHP的安装配置工作就大体完成了。

不放心的可以编写一个简单的PHP脚本来测试一下有没有输出:

<?PHP
/** /usr/local/tmp/PHPinfo.PHP **/
echo PHPinfo();
?>

然后执行:

/usr/local/PHP/bin/PHP PHPinfo.PHP
如果看到PHP有关的信息,起码说明PHP本身的安装成功了。

但是还有一些手尾要做:

创建PHP.ini文件,这个文件是对PHP一些运行选项进行配置的文件,非常重要,以后肯定会用到。官方文档在这里:http://www.php.net/manual/zh/ini.php。方法是将PHP源码目录下的「PHP.ini-production」文件复制到PHP安装目录下的「lib/」文件夹,并且重命名为「PHP.ini」。在我的机器上,输入命令

cp /home/download/PHP-5.5.38/PHP.ini-production /usr/local/PHP/lib/PHP.ini

设置PHP-fpm.pid的路径,这个文件记录了PHP-fpm的进程id,以后你要重启PHP-fpm时可以通过命令(假设你在PHP的安装目录下)「kill -USR2 cat var/run/PHP-fpm.pid」。注意那两个引号是反引号「`」,不是单引号或者双引号。具体的做法是编辑PHP安装目录下的「etc/PHP-fpm.conf」文件,找到「pid = 」这一行,将前面的分号「;」去掉。

vim /usr/local/PHP/etc/PHP-fpm.conf

至此就大功告成了。在下面安装完Nginx后,会启动PHP-fpm,到时候在PHP安装目录下就能看到 「var/run/PHP-fpm.pid」文件了。

安装Nginx

安装Nginx前也有一些库需要下载,分别是pcre,zlib以及openssl 。这里要说明的是下载这3个库的压缩包后,对其进行解压缩即可,无需安装。openssl要下载是因为Nginx在安装时需要的是openssl的源码(与PHP的安装不同)。

下载并解压pcre:

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
tar zxvf pcre-8.39.tar.gz

下载并解压zlib:

wget http://zlib.net/zlib-1.2.11.tar.gz
tar zxvf zlib-1.2.11.tar.gz

下载并解压openssl:

wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar zxvf openssl-1.0.1g.tar.gz

好了,必要的库已经下载好,现在就正式开始下载Nginx并安装。首先下载Nginx并解压缩:

wget http://Nginx.org/download/Nginx-1.10.3.tar.gz
tar zxvf Nginx-1.10.3.tar.gz

切换到Nginx的源码目录 「/home/download/Nginx-1.10.3」进行安装前的配置,根据你pcre、zlib、openssl所在的源码目录以及Nginx的最终安装路径,输入配置命令,我的配置命令如下:

cd /home/download/Nginx-1.10.3

./configure --prefix=/usr/local/Nginx \
--with-http_ssl_module \ --with-pcre=/home/download/pcre-8.39 \ --with-zlib=/home/download/zlib-1.2.11 \ --with-openssl=/home/download/openssl-1.0.1g 

这里附上一个配置说明列表(参考自http://www.nginx.cn/install):

–prefix=path 定义一个目录,存放服务器上的文件 ,也就是Nginx的安装目录。默认使用 /usr/local/Nginx。
–sbin-path=path 设置Nginx的可执行文件的路径,默认为 prefix/sbin/Nginx.
–conf-path=path 设置在Nginx.conf配置文件的路径。Nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/Nginx.conf.
–pid-path=path 设置Nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在Nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/Nginx.pid.
–error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在Nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
–http-log-path=path 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在Nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
–user=name 设置Nginx工作进程的用户。安装完成后,可以随时更改的名称在Nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
–group=name 设置Nginx工作进程的用户组。安装完成后,可以随时更改的名称在Nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
–with-select_module –without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
–with-poll_module –without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
–without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
–without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
–without-http_proxy_module — 不编译http_proxy模块。
–with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
–with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 – 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
–with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
–with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 – 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
–with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:–with-cc-opt=”-I /usr/local/include。.如需要需要增加 select()支持的文件数量:–with-cc-opt=”-D FD_SETSIZE=2048″.
–with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:–with-ld-opt=”-L /usr/local/lib”.

执行configure成功后进行安装:

make && make install

要验证Nginx是否安装成功了,可以切换到Nginx的安装目录(我的是「/usr/local/Nginx」),然后启动Nginx:

cd /usr/local/Nginx
./sbin/Nginx

然后你在浏览器中访问你的机器的IP地址(有公网IP的可以访问公网IP,没有的可以打开CentOS的浏览器然后访问「127.0.0.1」),是不是就看到很漂亮的「Welcome to Nginx!」了?如果你访问时出现「403 Forbidden」,那么极其有可能你的Nginx下的html所在的绝对路径中的某些文件夹的权限没有r或者x,你是否将Nginx安装到你的个人文件夹下了?例如你的用户名叫「abc」,然后你安装到了「/home/abc」下的子目录中?如果是的话,那就是权限不够了,因为Nginx的worker进程默认用户为「nobody」。

解决方法有3个:

  1. 一个是把Nginx安装到其它目录,可以查看到效果(安装到其它目录后,记得先把原本运行的Nginx给kill掉);

  2. 第二个是将没有权限的目录加上r和x权限;

  3. 第三个是在Nginx安装目录下编辑「conf/Nginx.conf」,将「#user nobody」改为「user root」,如下图:

但是极其不建议使用第2种以及第3种方法,因为这样会有安全风险,如果你正在使用虚拟机测试或者仅仅是试用一下机器验证一下效果,那么就可以使用上面任何3种方法。

如果是通过ip访问,需要允许80端口访问:

vim /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

加到 22端口配置后面,重启防火墙

service iptables restart

下面就让Nginx通过PHP的FastCGI处理请求,首先到Nginx的安装目录下,修改「conf/Nginx.conf」文件

vim /usr/local/Nginx/conf/Nginx.conf

找到如下内容:

1# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
2# 
3#location ~ \.PHP$ {
4# root html;
5# fastcgi_pass 127.0.0.1:9000;
6# fastcgi_index index.PHP;
7# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
8# include fastcgi_params;
9#} 

将第3~第7个「#」去掉,就是取消注释,同时将「/scripts fastcgiscriptname document_root$fastcgi_script_name」,即变为下面这样:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.PHP$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.PHP;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

在Nginx的安装目录下,新增一个PHP文件「html/index.PHP」,文件内容如下:

<?PHP echo PHPinfo(); ?>

接下来就启动PHP-fpm以及重启Nginx:

/usr/local/PHP/sbin/PHP-fpm #启动PHP-fpm

/usr/local/Nginx/sbin/Nginx -s reload #重启Nginx

然后打开浏览器,访问一下「机器ip/index.PHP」,例如「127.0.0.1/index.PHP」,如果你看到PHP的输出信息了~恭喜就成功啦~那么Nginx的安装完成了。

另外是关于Nginx.conf中的「127.0.0.1:9000」,这个其实是PHP-fpm的监听端口,是可以在PHP-fpm.conf中设置的。没有特殊需要使用默认即可。

安装MysqL

下载链接:https://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.35-1.el6.src.rpm

可以用迅雷下载会比较快。下载后解压,把mysql-5.6.35.tar.gz复制到相关的下载目录

先安装cmake,CentOS下执行命令:

yum -y install cmake

下面输入命令添加名为「MysqL」的用户和组,为后续步骤作准备:

groupadd MysqL

useradd -r -g MysqL MysqL

解压下载好的MysqL:

tar zxvf mysql-5.6.35.tar.gz

接下来就要使用cmake对MysqL进行安装选项的设置(之前安装的PHP、Nginx都是使用源码目录下的configure文件),安装选项可以参考官方文档,同时这篇博客也有参考作用:http://www.blogjava.net/kelly859/archive/2012/09/04/387005.html。官方文档中列出的cmake选项,前面要加个D,例如「CMAKE_INSTALL_PREFIX」要变成「-DCMAKE_INSTALL_PREFIX」,参见下面我的cmake命令。

进入MysqL的源码目录,我的cmake命令如下:

cd mysql-5.6.35

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/MysqL \ -DINSTALL_DATADIR=/usr/local/MysqL/data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DMysqL_TCP_PORT=3306 \ -DMysqL_UNIX_ADDR=/usr/local/MysqL/run/MysqL.sock \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_SSL=yes 

然后就开始数据库的初始化操作,首先切换目录到MysqL的安装目录:

cd /usr/local/MysqL/

然后改变安装目录下所有文件的用户及组为「MysqL」(这个用户在上面安装MysqL前已经在系统中添加好了,没有添加的可以拉到上面看一下):

chown -R MysqL .
chgrp -R MysqL .

初始化数据库:

./scripts/MysqL_install_db --user=MysqL --basedir=/usr/local/MysqL

然后将目录的所有文件的所属用户改为「root」,接着将目录「data」的所属用户改为「MysqL」(这一步很重要,否则数据库可能无法对这个目录进行操作):

chown -R root .
chown -R MysqL data

将MysqL的配置文件拷贝到配置文件目录「/etc/」下,询问是否覆盖源文件输入「yes」即可:

cp support-files/my-default.cnf /etc/my.cnf

要对MysqL进行设置(例如日志文件路径,.pid文件的路径,MysqL.sock文件路径等),可以编辑「/etc/my.cnf」。

接下来很重要的一步,就是确认用户「MysqL」拥有「MysqL.sock」文件所在目录的所有控制权,「MysqL.sock」所在目录可以查看「/etc/my.cnf」中的配置,如果在cmake时没有设置过那么就是「/tmp/」目录。我自己设置为安装目录下的「run/」文件夹,因此要把这个文件夹的所属用户设置为「MysqL」:

chown -R MysqL ./run

接下来就是最有标志性的一步,运行MysqL的守护进程:

bin/MysqLd_safe --user=MysqL &

这个时候输入回车(Enter),应该不会出现任何信息,如果出来一个「Done」之类的,那么十有八九失败了。查看一些错误日志看看是什么原因,错误日志的路径在你运行上面的命令时会看到的,我的是在「data/centos-new.err」,个人碰到过的问题主要包括以下两个:

第1个:[ERROR] Fatal error: Can’t open and lock privilege tables: Table ‘MysqL.host’ doesn’t exist # 如果你正确设置了MysqL_install_db时的「–basedir」选项,应该不会出现这个情况,如果没有设置,重新从运行MysqL_install_db那里开始;

第2个:与MysqL.sock有关的错误提示,具体是什么内容忘记了,不过你检查一下my.cnf中MysqL.sock所在的目录的拥有着是否为「MysqL」,不是则更改目录的用户。

最后就是给MysqL数据库里的「root」账号一个密码:

./bin/MysqLadmin -u root password '123123'

建一个软链接到bin

ln -s /usr/local/MysqL/bin/MysqL MysqL

设置MysqL开机启动:

1、将MysqL安装目录下 support-files目录下的MysqL.server文件拷贝到/etc/init.d/目录下并改名为MysqLd,并更改权限

cp /usr/local/MysqL/support-files/MysqL.server /etc/init.d/MysqLd

2、设置开机启动

chkconfig MysqLd on

PHP-fpm开机启动

1、在/etc/init.d/目录下创建脚本

vim /etc/init.d/PHP-fpm

2、编写脚本内容 (将以下复制进去相应改动安装路径)

#!/bin/sh
      #
      # PHP-fpm - this script starts and stops the PHP-fpm daemin
      #
      # chkconfig: - 85 15
      # processname: PHP-fpm
      # config: /usr/local/PHP/etc/PHP-fpm.conf
      set -e
      PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
      DESC="PHP-fpm daemon"
      NAME=PHP-fpm
      DAEMON=/usr/local/PHP/sbin/$NAME                  
      CONfigFILE=/usr/local/PHP/etc/PHP-fpm.conf     
      PIDFILE=/usr/local/PHP/var/run/$NAME.pid          
      SCRIPTNAME=/etc/init.d/$NAME                             
      # If the daemon file is not found,terminate the script.
      test -x $DAEMON || exit 0
      d_start(){
          $DAEMON -y $CONfigFILE || echo -n " already running"
      }
      d_stop(){
          kill -QUIT `cat $PIDFILE` || echo -n " no running"
      }
      d_reload(){
          kill -HUP `cat $PIDFILE` || echo -n " Could not reload"
      }
      case "$1" in
          start)
              echo -n "Starting $DESC: $NAME"
              d_start
              echo "."
              ;;
          stop)
              echo -n "Stopping $DESC: $NAME"
              d_stop
              echo "."
              ;;
          reload)
              echo -n "Reloading $DESC configuration..."
              d_reload
              echo "Reloaded."
              ;;
          restart)
              echo -n "Restarting $DESC: $NAME"
              d_stop
              # Sleep for two seconds before starting again,this should give the Nginx daemon some time to perform a graceful stop
              sleep 2
              d_start
              echo "."
              ;;
          *)
              echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload)" >&2
              exit 3
              ;;
      esac
      exit 0

3、更改脚本权限

chmod 775 /etc/init.d/PHP-fpm

4、设置开机启动

chkconfig PHP-fpm on

Nginx 开机启动

1、在/etc/init.d/目录下创建脚本

vim /etc/init.d/Nginx

2、编写脚本内容 (将以下复制进去相应改动安装路径)

#!/bin/bash
#
# Startup script for Nginx - this script starts and stops the Nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server,HTTP(S) reverse proxy and IMAP/POP3 proxy server
# processname: Nginx
# config: /usr/local/Nginx/conf/Nginx.conf
# pidfile: /usr/local/Nginx/logs/Nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

Nginx="/usr/local/Nginx/sbin/Nginx"
prog=$(basename $Nginx)

Nginx_CONF_FILE="/usr/local/Nginx/conf/Nginx.conf"

[ -f /etc/sysconfig/Nginx ] && . /etc/sysconfig/Nginx

lockfile=/var/lock/subsys/Nginx

start() {
    [ -x $Nginx ] || exit 5
    [ -f $Nginx_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $Nginx -c $Nginx_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $Nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $Nginx -t -c $Nginx_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

3、更改脚本权限

chmod 775 /etc/init.d/Nginx

4、设置开机启动

chkconfig Nginx on

可用命令 chkconfig 查看开机启动服务列表。

当我们完成最后的这几件事,就真正宣告LNMP搭建成功,所有东西都能串起来了!

CentOS下LNMP环境搭建的更多相关文章

  1. ios – Xcode警告:“没有处理文件的规则”和“找不到目录”

    重命名我的项目文件夹后,我收到以下错误消息:什么可能出错?解决方法关于第一个警告,您可以在项目设置中的“构建阶段”中检查XCode,即头文件不会出现在“编译源”列表中.

  2. 你如何将xcode项目转换为cocoapod?

    我有一段代码,我发现我在多个不同的项目中重复使用,所以我想把它变成一个cocoapod并使用私人cocoapod仓库.我的问题是如何将xcode项目设置为cocoapod?它应该是一个静态库还是一个带有appdelegate的空“项目”?

  3. ios – 如何将文件添加到主包的/ Library / Sounds目录中?

    根据Apple’sdocumentation,/Library/Sounds中的声音文件将在尝试播放声音时由系统搜索.如何将声音文件添加到此文件夹?适用于iOS的正确文档应为here总之,您只需将声音文件作为应用程序包的非本地化资源添加到项目中.

  4. ios – 资产目录与文件夹参考:何时使用其中一个?

    我可以将文件放入Assets.xcassets,或者我可以将文件放入文件夹引用.我何时会选择一个而不是另一个?

  5. ios – 找不到lcrypto的库

    我正在尝试构建iOSAllJoyn项目,但我遇到了OpenSSL集成的问题.我一直在看这些方向:https://allseenalliance.org/docs-and-downloads/documentation/configuring-build-environment-ios-and-osx#unique_16我已经按照指示一直到XcodeIDEBuild,但现在我收到一个错误,上面写着:

  6. ios – 从icloud备份中限制sqlite-wal和sqlite-shm

    我是第一次使用coredata,我必须从文档目录中的iCloud备份限制sqlitedb文件,我使用下面的代码完成了它//阻止iCloud备份文档目录文件夹现在我不明白的是,我们还需要从icloud备份中限制sqlite-wal和sqlite-shm文件,如果是,那么如何从icloud备份限制sqlite-wal和sqlite-shm文件我想要一个解决方案,而无需从文档目录文件夹中更改sqlitedb位置…

  7. iOS:如何从文档目录中删除具有特定扩展名的所有现有文件?

    当我更新我的iOS应用程序时,我想删除Documents目录中的任何现有sqlite数据库.现在,在应用程序更新时,我将数据库从软件包复制到文档目录,并通过附加软件包版本来命名它.因此,在更新时,我还想删除可能存在的任何旧版本.我只是希望能够删除所有sqlite文件,而无需循环浏览并查找以前版本的文件.是否有任何方法可以对removeFileAtPath:方法进行通配符?解决方法那么,你想要删除所有*.sqlite文件?

  8. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

  9. ios – 从文件目录加载UIImage

    我正在尝试从文件目录加载一个UIImage,并将其设置为UIImageView,如下所示:但是,每当我尝试以上,图像从不加载.该图像在Documents/MyAppCustomDirectory/school.png中.以上是否正确从该目录加载?我也尝试了其他几个:UIImageimageWithContentsOfFile,以及基于SO响应的其他方法.解决方法要获取您应该使用的文档目录:我不太清

  10. Xcode 6 / iOS 8模拟器数据和软件包文件夹脚本

    随着xcode6的最新更改,它看起来像.app文件和文档文件夹不再驻留在iPhone模拟器目录中的同一个文件夹中.以前,我们可以访问目录和.app文件但在Xcode6中,模拟器目录是完全不同的:和其中CryptNumber1,2和3都不同.有没有办法找到包含.app文件的文件夹后,我可以得到相应的文件夹?我有这个麻烦.为什么…?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部