この記事では、多くの内容について http://blog.s135.com/nginx_php_v6/ を参照しています。Zhang Yan に感謝します。
私の centos6 は 64 ビット版です
インストール手順:
(システム要件: Linux 2.6+ カーネル、この記事の Linux オペレーティング システムは CentOS 5.3 で、RedHat AS4 にも正常にインストールされました)
1関連するオープン ソース プログラムを入手します:
【CentOS オペレーティング システムに適用可能】CentOS Linux システムに付属の yum コマンドを使用して、必要なプログラム ライブラリをインストールおよびアップグレードします (RedHat およびその他の Linux ディストリビューションは、これらのライブラリの RPM パッケージを見つけることができます)。インストール CD から実行します):
sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf 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-develcurlcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
ソースパッケージ Iダウンロードされました
mysql-5.5.25a-linux2.6-x86_64.tar.gz
imagick-2.3.0.tgz
PDO_MYSQL-1.0.2.tgz
memcached-1.4.13
アクセル- 0 .9.6.1。 .tar.gz
libmcrypt-2.5.8.tar.gz
mhash-0.9.9.9.tar.bz2
pcre-8.30.tar.bz2
mcrypt-2.6.8.tar.gz
php- 5.3.14.tar. bz2
2. php-5.3.14 (FastCGI モード) をインストールします
1. PHP 5.2.14 に必要なサポート ライブラリをコンパイルしてインストールします:
tar zxvf libiconv-1.14.tar。 gz
cd libiconv-1.14/
./configure --prefix=/usr/localmake
make install cd ../
tar zxvf libmcrypt-2.5.8.tar.gz
./configure
make
make install
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make
make install
cd http://www.cnblogs.com/
tar zxvf mhash-0.9.9.9.tar .gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../
ln -s /usr/local/lib/libmcrypt.la /usr/lib /libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so .4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib /libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/ lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so .2.0.1
ln - s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin /ldconfig
./configure
make
make install
cd ../
2. mysql-5.5.25a (コンパイル済みバージョン) をインストールします
/usr/local/mysql にインストールされます。この場合、いくつかの依存関係は次のとおりです。インストールの問題が発生する必要がなくなります。
shell> useradd -r mysql mysql
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> mysql バージョンへのフルパス mysql
shell> root .
shell> chown -R mysql data# 次のコマンドはオプションです
shell> cp support-files/my-medium.cnf /etc/my.cnfshell> bin/mysqld_safe --user=mysql &
#コマンドはオプションですshell>cp support-files/mysql.server /etc/init.d/mysqld
shell>chkconfig --add mysqld
shell>chkconfig mysqld on
mysql コマンドラインを入力して root アカウントを追加します権限あり
*.* のすべての権限を 'carddev'@'localhost' に許可
3. PHPのコンパイルとインストール(FastCGIモード)
tar zxvf php-5.3.14.tar.gz
cd php-5.3.14
./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql /bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir= /usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization -- with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native- ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --nable-soap
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-dist /etc/php.ini
cd ../
以下php安装错误来自百度搜索
php安装の候、出现cannot stat `ext/ phar/phar.phar': そのようなファイルまたはディレクトリはありません
これより我また: cd ext/phar/
ls -l
结果発行现没有phar.phar 这个文件!!以上我怀疑是phar.php ,
cp ./ phar.php ./phar.phar
make install
4、编译設置PHP5扩展模块
我将memcacheサーバー端とクライアント端都設置了一台机上,这样方便测试
最初にmemcacheサーバーを設置
tar zxvf memcached-1.4.13.tg.gz
cd memcache-1.4.13/
./configure ?prefix=/usr/local/memcached
make
make install
cd ../
在此時,不必ず会编译通过,依旧会出现:
libevent ディレクトリを確認中… 構成: エラー: libevent が必要です。 http://www.monkey.org/~provos/libevent/ から入手できます
既にインストールされている場合は、?with-libevent=/dir/ を使用してそのパスを指定します
因みに libevent 这个包是系统默认インストール
したがって、次のコマンドを使用してインストールします:
yum install libevent-devel
時々、lib パケットに到達できない警告が表示されます。例:libevent-1.4.so.2 にはアクセスできませんが、接続を確立できます。ldconfig を使用してこの問題を解決することもできます。/etc/ld.so.conf に、いくつかの一般的な lib パスを追加します。
2. memcache クライアント端末をインストールします
Memcached クライアント端末は libmemcached に基づいており、必要に応じて libmemcached をインストールしてください。はいlibmemcached- 1.0.9
cd libmemcached-1.0.9
./configure --prefix=/usr/local/libmemcached --with-libmemcached-dir=/usr/local/libmemcached
make && make install
OK、现在、libmemcached ライブラリ経由で memcached とインターフェースするための PHP 拡張機能をインストールします
下ダウンロード地址:http://pecl.php.net/package/memcached
cd memcached-2.0 .1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/ local/libmemcached
make && make install
tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/webserver/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php -config=/usr/local/webserver/php/bin/php-config
make
make install
cd ../
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/ local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/ mysql
make
make install
cd ../
tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make
make install
cd ../
tar zxvf imagick- 2.3.0.tgz
cd imagick-2.3.0/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php -config
make
make install
cd ../
5、修正php.ini文件
手作業修正:查找/etc/php.ini中のextension_dir = "./"
extension_dir = "/usrに修正/local/php/lib/php/extensions"
cp -R /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/* /usr/local/php/lib/php /extensions
并在此行後增以下几行,然后保存:
extension = "pdo_mysql.so"
extension = "imagick.so"
extension = "memcached.so"
再查找; cgi.fix_pathinfo=0
cgi.fix_pathinfo=0に修正し、Nginxファイルタイプの漏洩を防止します。
6、eAccelerator加速PHPを配置:
mkdir -p /usr/local/eaccelerator_cache
vi /etc/php. ini
按shift+g键跳躍配置文件の最終尾,加上以下配置信息:
[eaccelerator]
zend_extension="/usr/local/php/lib/php/extensions/eaccelerator.so "
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug ="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1 "
eaccelerator.compress_level="9"
7、创建www用户和组
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
chown -R www.www /var/www
8、構成php-fpm.conf
打开一下两行注释:
pid = run/php-fpm.pid
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
ユーザー= www
グループ = www
到了php5.3.3、默认即サポートphp-fpm
但しphp/sbin/php-fpmの内容発行了改、前は一つの脚本、现在は一つの二进制文件であり、信号制御が必要です:
master进程理解可能以下信号
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 再新打开日志文件
SIGUSR2 平滑重ロード全ワーカー进程并再新入構成と二进制模块
例:
php -fpm 关闭:
kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -SIGUSR2 `cat /usr/local/php/var/run/ php-fpm.pid`
サービス中に追加されます并每次开机自動启動
cp $PHP_SOURCE_DIR/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 700 /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
服务方式启アニメーションphp-fpm
service php-fpm restart
注:/usr/local/php/ sbin/php-fpm には、start|stop|quit|restart|reload|logrotate、php.ini を変更した後、php-cgi を再ロード、構成ファイルを再ロードする、reload を含むその他のパラメータもあります。 Nginx 0.8.46
1、Nginxのインストールに必要なpcre库: tar zxvf pcre-8.30.tar.gz
cd pcre-8.30/
./configure
make && make install
cd ../
2. Nginx をインストールします
tar zxvf nginx-1.3.3.tar。 gz
cd nginx-1.3.3/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../
3. Nginx ログ ディレクトリを作成します
mkdir -p /usr/local/nginx/logs/
chmod +w /usr/local/nginx/logs/
chown -R www:www /usr /local/nginx/logs/
4. Nginx 設定ファイルを作成します
① /usr/local/webserver/nginx/conf/ ディレクトリに nginx.conf ファイルを作成します:
rm -f /usr/local/ nginx /conf/nginx.conf
vi /usr/local/nginx/conf/nginx.conf
ユーザー www www;
worker_processes 8;
#error_log logs/error.log;
#error_log logs/error.log注意 ;
#error_log ログ/error.log 情報;
error_log /usr/local/nginx/logs/error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$ request " '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
tcp_nopush オン;
keepalive_timeout 65; 00;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
gzip_min_length 1k;
gzip_http_version 1.0; zip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on ;
listen 80;
server_name localhost;
Index Index.html Index.htm Index.php;
root /var/www;
#charset koi8-r;
#access_log ログ/host .access.log main;
location ~ .*.(php|php5)?$
#root html;
#indexindex.htmlindex.htm;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index Index .php;
}
#error_page 404 /404.html;
# サーバーエラーページを静的ページ /50x.html
#
location ~ .*.(gif| jpg| jpeg|png|bmp|swf)$
{
有効期限 30 日;
}
location ~ .*.(js|css)?$
{有効期限 1 時間;
}
log_format アクセス '$remote_addr - $ Remote_user [ $time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /usr/local/nginx/logs/access.log access;
}
②. /usr/local/nginx/conf/ ディレクトリに fcgi.conf ファイルを作成します。
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $ fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SER VER_PORT $server_port ;
fastcgi_param SERVER_NAME $server_name;
# PHP のみ、PHP が --enable-force-cgi-redirect でビルドされた場合に必要
fastcgi_param REDIRECT_STATUS 200;
5、启起動Nginx
ulimit -SHn 65535
/usr /local/nginx/sbin/nginx
共有ライブラリのロード中に Nginx启起動エラーが発生しました: libpcre.so.1
[root@localhost conf]# ldd $(that /usr/local/nginx/sbin/nginx)
linux-vdso.so.1 => (0x00007fff227ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032f3800000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000032f6000000)
libpcre.so.1 =>見つかりません
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00000032fc400000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00000032fa400000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000032f3400000)
libz.so.1 => /lib64/libz.so.1 (0x00000032f3c00000)
libc.so.6 => /lib64/libc.so.6 (0x00000032f3000000)
/lib64/ld-linux-x86-64.so.2 (0x00000032f2c00000)
libfreebl3.so => /lib64/libfreebl3.so (0x00000032f5c00000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00000032fb000000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00000032f9800000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00000032f7000000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00000032f8800000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00000032f9000000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00000032f9400000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00000032f5000000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00000032f4c00000)
libpcre.so.1 => が表示されます。見つかりません并没有找到,进入/lib目录中手動链接下
[root@localhost lib]# ln -s libpcre.so.0.0.1 libpcre.so.1
その後在启动nginx ok 了
[root@localhost lib]# /usr/local/nginx/sbin/nginx
另外我在/etc/ld.so.conf下面加了一部構成
1 include ld.so.conf.d/*. conf
2 include /usr/lib
3 include /usr/lib64
4 include /usr/local/lib
4、構成开机自動启动Nginx
vi /etc/rc.local
ulimit -SHn 65535
/usr/local/nginx/sbin/nginx
五、优化Linux 内核パラメータ
vi /etc/sysctl.conf
次の内容を最後に追加します:
#
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
ネット。コア。rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ip v 4.tcp_syn_retries = 2
net .ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
ネット.ipv4.tcp_ max_orphans = 3276800
#net.ipv4。 tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 1024 65535
/sbin/sysctl -p
6. 止まらずに平滑化するNginx サービス Nginx 設定の変更
1. /usr/local/nginx/conf/nginx.conf 設定ファイルを変更した後、次のコマンドを実行して設定ファイルが正しいかどうかを確認してください:
/usr/local/nginx /sbin/nginx -t
画面に次の 2 行の情報が表示された場合、設定ファイルは正しいです:
設定ファイル /usr/local/webserver/nginx/conf/nginx.conf 構文は問題ありません 設定file /usr/local/webserver/nginx/conf /nginx.conf は正常にテストされました
2. スムーズな再起動:
① Nginx 0.8.x バージョンの場合、今すぐ Nginx 設定をスムーズに再起動するのは非常に簡単です。コマンド:
/usr/local/nginx/sbin/ nginx -s reload
ps -ef | grep "nginx: master process" | grep -v "awk -F ' ' '{print $2}'
とは画面に表示されるのは、Nginx のメインプロセス番号です。例:
6302 この時点で、次のコマンドを実行して、変更した Nginx 構成ファイルを有効にします:
kill -HUP 6302
または、必要ありません。このような問題を解決するには、Nginx Pid ファイルを見つけます:
Kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`
Seven. Nginx ログを毎日定期的にカットするスクリプトを作成します
1. スクリプトを作成します /usr/local/nginx/sbin/cut_nginx_log.sh
vi /usr/local/nginx/sbin/cut_nginx_log.sh
次のように入力します:
#!/bin/bash
# Nginx ログのパス
logs_path="/usr/local/nginx/logs/"
mkdir -p ${logs_path}$(date -d "yesterday" +"% Y")/$(date -d "昨日" +"%m" )/
mv ${logs_path}access.log ${logs_path}$(date -d "昨日" +"%Y")/$(date -d "昨日" +"%m")/access_$(date - d "昨日" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/nginx.pid`
crontab -e
次のように入力します:
00 00 * * * /bin/bash /usr/local/ nginx/sbin/cut_nginx_log.sh

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
