1. 程式人生 > 資料庫 >CentOS8最全原始碼安裝 LNMP - Mysql8 PHP8

CentOS8最全原始碼安裝 LNMP - Mysql8 PHP8

LAMP原始碼安裝    安裝環境 centos8-64位 保證虛擬機器記憶體4G及以上,核心數量為2及以上,硬碟為40G及以上 需要先裝一些常用的編譯工具和開發包:   # 切換阿里的源 yum install -y wget lrzsz cd /etc/yum.repos.d/ sudo mv CentOS-Base.repo CentOS-Base.repo.bak sudo wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo yum clean all yum makecache yum update -y   # 安裝 epel 源 yum install -y    # lnmp 框架依賴包 yum -y install make gcc gcc-c++ flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel gd freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn2-devel.x86_64 openssl openssl-devel gettext gettext-devel gmp-devel unzip libcap lsof libmcrypt-devel.x86_64 cmake libtirpc-devel 下面下載的路勁統一放在 /usr/local/src 1、Nginx-1.16.1 下載:wget 2、Mysql-8.0.22 下載:wget 3、boost-1.74.0 下載:wget 4、php-8.0.0 下載:wget 5、pcre-8.44- Nginx 的依賴包 下載:wget tar zxf xxx.tar.gz   # (1)編譯安裝 Nginx 1-1) 建立 nginx 專用使用者 useradd -M -s /sbin/false nginx   1-2) 編譯安裝 cd /usr/local/src/nginx-1.16.1/ ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/local/src/pcre-8.44 --user=nginx --group=nginx make && make install echo $?   1-3) 配置 nginx,使其支援 php cp /usr/local/nginx/conf/nginx.conf{,.bak} vim /usr/local/nginx/conf/nginx.conf user nginx; // 第二行去除註釋,並修改使用者為 nginx # 第 65 到 71 行去掉註釋,/scripts要改為網頁的主目錄 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/myshop/public; include fastcgi_params; }   1-4) 配置環境變數,並重新整理 vim /etc/profile.d/nginx.sh export PATH=/usr/local/nginx/sbin:$PATH source /etc/profile.d/nginx.sh   或者可以建立一個軟連線將指令碼直接加入到當前環境變數中,一樣的效果,操作如下 ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/   常用 nginx 選項如下,如果不加選項表示啟動 nginx -s [reload|reopen|stop|quit] 重新載入配置|重啟|停止|退出 -t 檢測配置檔案是否有語法錯誤 -v 顯示版本資訊 -V 顯示版本和配置選項資訊   1-5)啟動 nginx,並設定開機自啟,有兩種方法 第一種:直接使用 nginx 命令啟動,開機自啟是加入到 /etc/rc.d/rc.local nginx ss -tnlp | grep 80 ps aux | grep nginx   # 新增開機自啟 vim /etc/rc.d/rc.local /usr/local/nginx/sbin/nginx // 新增一行啟動命令 chmod +x /etc/rc.d/rc.local   第二種:生成一個啟動指令碼,然後設定開機自啟,最後再啟動 nginx vim /etc/init.d/nginx.sh #!/bin/bash # chkconfig: - 99 2 # description: Nginx Service Control Script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) $PROG ;; stop) kill -3 $(cat $PIDF) ;; restart) $0 stop &> /dev/null if [ $? -ne 0 ] ; then continue ; fi $0 start ;; reload) kill -1 $(cat $PIDF) ;; *) echo "Userage: $0 { start | stop | restart | reload }" exit 1 esac exit 0 chmod +x /etc/init.d/nginx.sh chkconfig --add nginx.sh // 將 nginx 加入到chkconfig 管理中 chkconfig --list nginx.sh chkconfig nginx.sh on // 開啟開機自啟 chkconfig --list nginx.sh init 6 // 重啟伺服器,之後就可以使用 systemctl 來管理 nginx systemctl status nginx.service   1-6) 測試 注意:沒有關閉防火牆的記得新增埠號 firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --reload firewall-cmd --permanent --zone=public --list-ports 在 windows 上檢視   # (2)編譯安裝 Mysql 2-1) 安裝依賴環境 yum -y install gcc gcc-c++ bison ncurses ncurses-devel boost cmake libtirpc-devel libaio-devel   2-2) 解除安裝系統自帶的 mysql,mariadb,boost yum remove -y mysql mariadb* boost*   2-3) 編譯安裝 cd /usr/local/src/mysql-8.0.22/ mkdir xiaochuan cd xiaochuan vim cmake.sh cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNODB_MEMCACHED=ON -DWITH_SSL=system -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DCOMPILATION_COMMENT="xiaochuan edition" -DDOWNLOAD_BOOST=1 -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DWITH_BOOST=/tmp   引數說明: DCMAKE_INSTALL_PREFIX:指定 Mysql 程式的安裝目錄,預設 /usr/local/mysql DMYSQL_DATADIR:指定 Mysql 程式的資料目錄 DSYSCONFDIR:初始化引數檔案目錄 DWITH_MYISAM_STORAGE_ENGINE:安裝 myisam 儲存引擎 DWITH_INNOBASE_STORAGE_ENGINE:安裝 innodb 儲存引擎 DWITH_ARCHIVE_STORAGE_ENGINE:安裝 archive 儲存引擎 DWITH_BLACKHOLE_STORAGE_ENGINE:安裝 blackhole 儲存引擎 DWITH_FEDERATED_STORAGE_ENGINE:安裝 federated 儲存引擎 DWITH_MEMORY_STORAGE_ENGINE:安裝 memory 儲存引擎 DWITH_READLINE:使用 readline 功能 DMYSQL_UNIX_ADDR:socket 檔案路徑,預設 /tmp/mysql.sock DMYSQL_TCP_PORT:服務埠號,預設 3306 DENABLED_LOCAL_INFILE:指定是否允許本地執行 LOAD DATA INFILE,預設 OFF DEFAULT_CHARSET:指定伺服器預設字符集,預設 latin1 DEFAULT_COLLATION:指定伺服器預設的校對規則,預設 latin1_general_ci DWITH_BOOST:指定 boost 的地址 DWITHOUT_xxx_STORAGE_ENGINE:指定不編譯的儲存引擎 DWITH_COMMENT:指定編譯備註資訊 DFORCE_INSOURCE_BUILD:強制使用原始碼安裝   chmod +x cmake.sh ./cmake.sh   編譯過程中遇到的問題 Q1、 Could not find rpcgen wget xz -d rpcsvc-proto-1.4.2.tar.xz tar -xvf rpcsvc-proto-1.4.2.tar cd rpcsvc-proto-1.4.2/ ./configure && make && make install 繼續剛才那步操作   make make install echo $?   2-4) 建立資料庫 新增系統使用者(Mysql 官網推薦寫法,這是最嚴格的禁止登入。而 /sbin/nologin 只是不允許系統登入,但是可以使用 ftp 等其他服務登入。-r 建立的是系統使用者) cat /etc/group | grep mysql cat /etc/passwd | grep mysql groupadd mysql useradd -M -s /bin/false -r -g mysql mysql   // 建立相關目錄 mkdir -p /data/mysql/{3306,3307}/{data,log,tmp,innodb,innodb_log} cd /data/ tree // 修改目錄許可權 chown -R mysql:mysql /data/mysql chown -R mysql:mysql /usr/local/mysql/ // 新增環境變數 echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile source /etc/profile   2-5) 新增配置檔案 2-5-1) 3306預設 vim /data/mysql/my.cnf [client] port=3306 socket=/data/mysql/mysql.sock [mysqld] port=3306 user=mysql socket=/data/mysql/mysql.sock pid-file=/data/mysql/mysql.pid basedir=/usr/local/mysql datadir=/data/mysql/data tmpdir=/data/mysql/tmp open_files_limit=60000 #explicit_defaults_for_timestamp server-id=3306 lower_case_table_names=1 character-set-server=utf8 #federated #sql_mode=STRICT_TRANS_TABLES max_connections=1000 max_connect_errors=100000 interactive_timeout=86400 wait_timeout=86400 sync_binlog=0 back_log=100 default-storage-engine=InnoDB log_slave_updates=1 #*********** Logs related settings *********** log-bin=/data/mysql/log/mysql3306-bin binlog_format=mixed binlog_cache_size=32m max_binlog_cache_size=64m max_binlog_size=512m long_query_time=1 log_output=FILE log-error=/data/mysql/log/mysql-error.log slow_query_log=1 slow_query_log_file=/data/mysql/log/slow_statement.log #log_queries_not_using_indexes general_log=0 general_log_file=/data/mysql/log/general_statement.log #expire-logs-days = 14 binlog_expire_logs_seconds=1728000 relay-log=/data/mysql/log/relay-bin relay-log-index=/data/mysql/log/relay-bin.index #****** MySQL Replication New Feature********* master-info-repository=TABLE relay-log-info-repository=TABLE #relay-log-recovery #*********** INNODB Specific options *********** innodb_buffer_pool_size=2048M transaction-isolation=REPEATABLE-READ innodb_buffer_pool_instances=8 innodb_file_per_table=1 innodb_data_home_dir=/data/mysql/innodb innodb_data_file_path=ibdata1:2048M:autoextend innodb_thread_concurrency=8 innodb_log_buffer_size=16M innodb_log_file_size=128M innodb_log_files_in_group=3 innodb_log_group_home_dir=/data/mysql/innodb_log innodb_flush_log_at_trx_commit=2 innodb_max_dirty_pages_pct=70 innodb_flush_method=O_DIRECT [mysql] no-auto-rehash default-character-set=gbk prompt = (\u@\h) [\d]>\_   2-6) 初始化資料庫 mysqld --defaults-file=/data/mysql/my.cnf --initialize --user=mysql   2-7) 啟動服務 mysqld_safe --defaults-file=/data/mysql/my.cnf --user=mysql &   2-8) 登入資料庫 注意埠號,即大寫的 -P // 檢視當前錯誤日誌,有一個 root@localhost:xxxxxx,這個就是密碼 more /data/mysql/log/mysql-error.log mysql -uroot -p'xxxxxx' -P3306 -S /data/mysql/mysql.sock // 登入 alter user 'root'@'localhost' identified with sha256_password by 'new_password' password expire interval 360 day; // 修改密碼   # (3)編譯安裝php yum install -y libmcrypt libmcrypt-devel autoconf freetype gd libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel php-pear python36-devel libxml2-devel.x86_64 sqlite-devel.x86_64 libmcrypt-devel.x86_64 oniguruma.x86_64   3-1) 配置設定 cd /usr/local/src/php-8.0.0 mkdir xiaochuan cd xiaochuan vim config.sh # (推薦) ../configure --prefix=/usr/local/php80 --with-config-file-path=/usr/local/php80/etc --enable-mbstring --enable-ftp --enable-gd --enable-gd-jis-conv --enable-mysqlnd --enable-pdo --enable-sockets --enable-fpm --enable-xml --enable-soap --enable-pcntl --enable-cli --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --with-zlib --with-iconv --with-curl --with-config-file-scan-dir=/usr/local/php80/etc/php.d   chmod +x config.sh ./config.sh   # 引數說明 --with-config-file-path=/usr/local/php/etc/ 指定配置檔案目錄 --with-apxs2=/usr/local/apache2/bin/apxs 指定apache動態模組位置 --with-mysql=/usr/local/mysql/     指定mysql位置 --with-libxml-dir=/usr/local/libxml2/ 指定libxml位置 --with-jpeg-dir=/usr/local/jpeg6/ 指定jpeg位置 --with-png-dir=/usr/local/libpng/ 指定libpng位置 --with-freetype-dir=/usr/local/freetype/ 指定freetype位置 --with-mcrypt=/usr/local/libmcrypt/     指定libmcrypt位置 --with-mysqli=/usr/local/mysql/bin/mysql_config 指定mysqli位置 --with-gd 啟用gd庫 --enable-soap 支援soap服務 --enable-mbstring=all 支援多位元組,字串 --enable-sockets 支援套接字 --with-pdo-mysql=/usr/local/mysql 啟用mysql的pdo模組支援 --without-pear 不安裝pear(安裝pear需要連線網際網路。 PEAR是PHP擴充套件與應用庫)   豐富的配置引數說明   安裝過程中,會出現的錯誤 Error1、Package 'oniguruma', required by wget -O /usr/local/src/oniguruma-6.9.6.tar.gz cd /usr/local/src/ tar zxvf oniguruma-6.9.6.tar.gz cd oniguruma-6.9.6 ./autogen.sh ./configure make make install   3-2) 編譯安裝 make make install // make install 之後提示下面語句,是正常的 // Installing PDO headers: /usr/local/php80/include/php/ext/pdo/   3-3) 驗證PHP /usr/local/php80/bin/php -v   3-4) 環境配置 cd /usr/local/src/php-8.0.0/ ln -s /usr/local/php80/bin/php /usr/bin/php80 cp php.ini-development /usr/local/php80/etc/php.ini cp /usr/local/php80/etc/php-fpm.conf.default /usr/local/php80/etc/php-fpm.conf cp /usr/local/php80/etc/php-fpm.d/www.conf.default /usr/local/php80/etc/php-fpm.d/www.conf cp xiaochuan/sapi/fpm/init.d.php-fpm /etc/init.d/php80-fpm chmod +x /etc/init.d/php80-fpm   3-5) 驗證配置路徑 [root@MiWiFi-R3600-srv php-8.0.0]# php80 --ini Configuration File (php.ini) Path: /usr/local/php80/etc/ Loaded Configuration File: /usr/local/php80/etc/php.ini Scan for additional .ini files in: /usr/local/php80/etc/php.d Additional .ini files parsed: (none)   3-6) 啟動 fpm /etc/init.d/php80-fpm status /etc/init.d/php80-fpm start /etc/init.d/php80-fpm stop /etc/init.d/php80-fpm restart // 如果要開啟多個版本的 php-fpm 需要修改配置 vim /usr/local/php80/etc/php-fpm.d/ listen = 127.0.0.1:9001 // 36 行 // 儲存,退出,可以啟動了   3-7) 驗證 fpm ps aux | grep php-fpm   3-8) 修改 nginx.cong 配置 vim /usr/local/nginx/conf/nginx.conf fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name; // 重啟 nginx nginx -s reload   3-8) vim /home/index.php <?php phpinfo(); 瀏覽器訪問 /index.php   創作不易,支援一下