Linux 环境安装 Node、nginx、docker、vsftpd、gitlab
生活随笔
收集整理的這篇文章主要介紹了
Linux 环境安装 Node、nginx、docker、vsftpd、gitlab
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux 環境安裝
centos7
# 更新yum yum update -y0. 防火墻 firewalld
新入的JD云服務器,發現防火墻默認是關閉的。
# 查看防火墻狀態 systemctl status firewalld# 啟動 systemctl start firewalld # 停止 systemctl disable firewalld # 禁用 systemctl stop firewalld# 開機時啟用 systemctl enable firewalld.service # 開機時禁用 systemctl disable firewalld.service# 查看所有打開的端口 firewall-cmd --zone=public?--list-ports # 放開一個端口 firewall-cmd?--zone=public?--add-port=80/tcp?--permanent # 關閉一個端口 firewall-cmd?--zone=?public?--remove-port=80/tcp?--permanent # 重載規則 firewall-cmd?--reload1. 使用 nvm 安裝 Node
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash# 激活nvm source ~/.nvm/nvm.sh# 安裝node nvm install node# 切換到該版本 nvm use node使用 nvm 管理 node 版本
# 安裝某版本 比如 4.2.2 nvm install 4.2.2# 列出遠程服務器上所有可用版本 nvm ls-remote# 在不同版本間切換 nvm use 4.2.2#安裝最新版 Node nvm install node#切換到最新版 nvm use node#列出已安裝實例 nvm ls#安裝最新不穩定版本 nvm install unstable2. 安裝 nginx
# 新環境需要gcc gcc-c++ yum install -y gcc gcc-c++ make# 下載 openssl 以支持 ssl 功能 # http://www.openssl.org/ wget https://www.openssl.org/source/openssl-1.1.1.tar.gz# 下載 zlib 支持 gzip # http://www.zlib.net/ wget http://www.zlib.net/zlib-1.2.11.tar.gz# 下載 pcre 支持 rewrite # http://www.pcre.org/ wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz# 下載 nginx # http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.16.0.tar.gz# 解壓 tar zxvf openssl-1.1.1.tar.gz tar zxvf zlib-1.2.11.tar.gz tar zxvf pcre-8.43.tar.gz tar zxvf nginx-1.16.0.tar.gz# 安裝PCRE庫 cd /usr/local/pcre-8.43 ./configure make && make install# 安裝SSL庫 cd /usr/local/openssl-1.1.1 ./config make && make install# 安裝zlib庫 cd /usr/local/zlib-1.2.11 ./configure make && make install# 將nginx目錄重命名 mv nginx-1.16.0 nginx; cd nginx/# 安裝nginx ./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.43 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.1.1make && make install# 配置開機啟動 cd /lib/systemd/system vim nginx.service[Unit] Description=nginx After=network.target[Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx reload ExecStop=/usr/local/nginx/sbin/nginx quit PrivateTmp=true[Install] WantedBy=multi-user.target# 保存退出 systemctl enable nginx.service# 常用命令 systemctl start nginx.service # 啟動,也可以使用sbin/nginx啟動 systemctl stop nginx.service # 結束nginx systemctl restart nginx.service # 重啟,可使用sbin/nginx -s reload# 配置文件 vim /usr/local/nginx/conf/nginx.conf# 啟動服務 # 啟動 /usr/local/nginx/sbin/nginx # 重啟 /usr/local/nginx/sbin/nginx -s reload # 停止 /usr/local/nginx/sbin/nginx -s quit /usr/local/nginx/sbin/nginx -s stop # 查看運行狀態 ps -ef|grep nginx修改配置文件
user root; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }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 off;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;# 開啟gzipgzip on;gzip_buffers 32 4k;gzip_comp_level 4;gzip_min_length 400;gzip_types text/plain application/xml application/javascript;gzip_vary on;server {listen 80;server_name www.abc.com;#charset koi8-r;#access_log logs/host.access.log main;location / {root /home/www/civ;index index.html index.htm;try_files $uri $uri/ /index.html?$query_string;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}# sslserver {listen 443;server_name test.abc.com;ssl on;ssl_certificate /etc/ssl/server.crt;ssl_certificate_key /etc/ssl/server.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location / {root /home/www/test;index index.html;}}# 80 sub siteserver {listen 80;server_name sub.abc.com;location / {root /home/www/sub;index index.html;try_files $uri $uri/ /index.html?$query_string;}}# proxy go-serviceserver {listen 80;server_name api.abc.com;charset utf-8;access_log /home/www/go/src/api.abc.com.access.log;location /(css|js|fonts|img)/ {access_log off;expires 1d;root "/home/www/go/src/static";try_files $uri @backend;}location / {try_files /_not_exists_ @backend;}location @backend {proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header Host $http_host;proxy_pass http://127.0.0.1:8080;}} }報錯:
# 1. 如果啟動遇到下面的錯誤 [root@JD nginx]# /usr/local/nginx/sbin/nginx nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory) 2019/07/30 16:00:41 [emerg] 8243#0: open() "/usr/local/nginx/logs/access.log" failed (2: No such file or directory)# 可能是沒有logs目錄導致 # 在nginx目錄下新建一個logs文件夾就可以了 mkdir logs3. Docker環境安裝
yum install docker# 啟動 Docker 的守護進程 service docker start # 系統啟動時運行 chkconfig docker on# 查看當前正在運行的容器 docker ps -a # 創建容器 docker create # 創建容器并啟動 docker run # 退出容器 ctrl+d # 啟動容器 docker start # 停止容器 docker stop4. 安裝 vsftpd
4.1 常規配置 ftp 服務
# 安裝 vsftpd 和 ftp yum install -y vsftpd yum install ftp # 為了在服務器測試ftp連接# 啟動ftp service vsftpd start # 設置開機啟動 systemctl enable vsftpd.service # 查看vsftpd服務是否已開啟 ps -e|grep vsftpd # 查看vsftpd監聽端口 netstat -ntpl | grep vsftpd# 開啟防火墻 # 可以通過服務器安全組設置入站規則開啟21端口 # 放開21端口 firewall-cmd --zone=public --add-port=21/tcp --permanent # 永久開放 ftp 服務 firewall-cmd --add-service=ftp --permanent # 關閉ftp服務 firewall-cmd --remove-service=ftp --permanent # 重啟ftp服務 service vsftpd restart # 或者 systemctl restart vsftpd# vsftpd 的配置目錄為 /etc/vsftpd vi /etc/vsftpd/vsftpd.confanonymous_enable=NO # 禁止匿名登陸 pam_service_name=vsftpd userlist_enable=NO allow_writeable_chroot=YES# 創建用戶 useradd -s /sbin/nologin -d /usr/local/web jehorn passwd jehorn# 給文件夾增加讀寫權限 chmod o+w /usr/local/web/ # 或者 chmod 775 /usr/local/web/ chmod 777 /usr/local/web/# 如果需要重新設置用戶主目錄 usermod -d /usr/local/web/ jehorn # 刪除用戶 userdel -rf jehorn # 變更用戶屬性 usermod -s /sbin/nologin jehorn (/bin/bash:可以登錄shell,/bin/false:禁止登錄shell?)# 本地測試ftp服務 ftp localhost # 輸入用戶名 密碼 # 如果出現以下提示表示配置成功 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.ftp客戶端連接:
這里使用xftp6示例:
注意這里不使用被動模式,被動模式需要配置隨機端口,這里不再贅述。
4.2 docker 配置 vsftpd
# 拉取鏡像 docker pull fauria/vsftpd# 創建vsftpd的container docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /usr/local/web:/home/vsftpd -e FTP_USER=root -e FTP_PASS=123456-e PASV_ADDRESS=123.456.789.0 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd --restart=always fauria/vsftpd # -p進行端口綁定映射 # -v進行文件目錄的映射 FTP_UESR 和FTP_PASS如果設定了會在container里面的 # /etc/vsftpd/virtual_users.txt # PASV_MIN_PORT和PASV_MAX_PORT映射的是被動模式下端口使用范圍 # PASV_ADDRESS指的的宿主機地址# 添加用戶 # 進入當前實例 docker exec -i -t vsftpd bash# 新建用戶文件夾 mkdir /home/vsftpd/jehorn# 可能會存在沒有權限問題 chown -R ftp:ftp /home/vsftpd# 編輯配置文件寫入用戶跟密碼 vi /etc/vsftpd/virtual_users.txt# 把登錄的驗證信息寫入數據庫 /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db# 重啟 docker restart vsftpd5. 安裝gitlab
5.1 傳統安裝方式
# 以下命令還將在系統防火墻中打開HTTP和SSH訪問。 sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld# 安裝Postfix以發送通知電子郵件 sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix# 添加GitLab包存儲庫 # curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash# 安裝GitLab包。將https://gitlab.example.com更改為您要訪問GitLab實例的URL。 # sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee# 由于官方給出的下載地址實在太慢 # 使用 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 下載 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.1.3-ce.0.el7.x86_64.rpm rpm -ivh gitlab-ce-12.1.3-ce.0.el7.x86_64.rpm # 修改配置 vim /etc/gitlab/gitlab.rb# 修改url external_url 'http://gitlab.example.com/' # :1015 # nginx['redirect_http_to_https'] =true # nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt" # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"# 由于服務器通常已經開啟了單獨了nginx服務 # 所以需要禁用gitlab內置nginx # 禁用內置NG nginx['enable'] = false # 指定NG的用戶名 web_server['external_users'] = ['nginx'] # 添加NG地址到信任列表,我這里就是本機地址 gitlab_rails['trusted_proxies'] = ['127.0.0.1'] # 配置監聽網絡:tcp gitlab_workhorse['listen_network'] = "tcp" # 配置GitLab的地址和端口 gitlab_workhorse['listen_addr'] = "127.0.0.1:8020"# 到這里執行 gitlab-ctl reconfigure 可能會拋出錯誤,提示 用戶nginx不存在 # There was an error running gitlab-ctl reconfigure: # account[Webserver user and group] (gitlab::web-server line 27) had an error: Mixlib::ShellOut::ShellCommandFailed: group[Webserver user and group] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/resources/account.rb line 38) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '3' # ---- Begin output of ["gpasswd", "-a", "nginx", "gitlab-www"] ---- # STDOUT: # STDERR: gpasswd: user 'nginx' does not exist # ---- End output of ["gpasswd", "-a", "nginx", "gitlab-www"] ---- # Ran ["gpasswd", "-a", "nginx", "gitlab-www"] returned 3 # 可以新增一個用戶 adduser nginx # 然后將nginx.conf的user改為nginx后重啟服務即可# 應用配置 gitlab-ctl reconfigure# 修改外部nginx配置 server {listen 443;server_name gitlab.example.com;ssl on;ssl_certificate /etc/ssl/gitlab-cert19080152759628cbb70f4f.crt;ssl_certificate_key /etc/ssl/gitlab-cert19080152759628cbb70f4f.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location / {proxy_pass http://127.0.0.1:8020;}} # 重啟nginx服務 /usr/local/nginx/sbin/nginx -s reload然后從瀏覽器打開 https://gitlab.example.com/,會提示你輸入密碼,輸入完成后使用root+剛才輸入的密碼登錄即可。
gitlab常用命令:
gitlab-ctl start ? ?????????????????# 啟動所有 gitlab 組件; gitlab-ctl stop ? ? ? ?????????????# 停止所有 gitlab 組件; gitlab-ctl restart???? ??? ? ? ? ?# 重啟所有 gitlab 組件; gitlab-ctl status ? ? ? ?????? ? ?# 查看服務狀態; gitlab-ctl reconfigure ? ? ? ? # 啟動服務; vim /etc/gitlab/gitlab.rb ? ? ?# 修改默認的配置文件; gitlab-rake gitlab:check SANITIZE=true --trace ? ?# 檢查gitlab; gitlab-ctl tail ? ? ? ?????????????????# 查看日志;配置 gitlab 郵箱 postfix:
查看各種郵箱配置可以參考 https://docs.gitlab.com/omnibus/settings/smtp.html#example-configurations
**如果郵件發送失敗,看一下是不是郵箱沒有開啟POP、smtp服務。*
**遇到了登錄422的問題,且尚無解決辦法。*
5.2 docker安裝方式
# 查詢gitlab鏡像 docker search gitlab# 我們選擇穩定版 docker pull gitlab/gitlab-ce# 運行鏡像 docker run -d -p 8020:443 -p 8021:80 -p 222:22 -p 587:587 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce # -d:后臺運行 # -p:將容器內部端口向外映射 # --name:命名容器名稱 # -v:將容器內數據文件夾或者日志、配置等文件夾掛載到宿主機指定目錄# gitlab.rb文件內容默認全是注釋 vim /home/gitlab/config/gitlab.rb# 配置http協議所使用的訪問地址,不加端口號默認為80 external_url 'https://git.example.com'# 配置ssh協議所使用的訪問地址和端口 gitlab_rails['gitlab_ssh_host'] = 'https://git.example.com' gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run時22端口映射的222端口:wq #保存配置文件并退出# 重啟gitlab docker restart gitlab# 由于我是統一一個nginx管理 # 所以在nginx配置代理 server {listen 443;server_name gitlab.example.com;ssl on;ssl_certificate /etc/ssl/gitlab-cert19080152759628cbb70f4f.crt;ssl_certificate_key /etc/ssl/gitlab-cert19080152759628cbb70f4f.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location / {proxy_pass http://127.0.0.1:8021;}} # 重啟nginx服務 /usr/local/nginx/sbin/nginx -s reload# 配置郵箱參見5.1 # 配置郵箱后需要進入bash應用配置 docker exec -it gitlab bash gitlab-ctl reconfigure gitlab-rails console # console調試# 注意配置完成后重啟docker gitlab exit docker restart gitlab如果出現以下錯誤:
Error response from daemon: Cannot restart container gitlab: driver failed programming external connectivity on endpoint gitlab (5b2b1b646aea89819e84926057431d119eabd25a0bfe49247b468bde14103367): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8021 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.基本可以通過重啟docker解決.
systemctl restart docker查看日志:
docker logs -f -t --tail=10 f41c6a557eb6**跑起來以后內存大概常駐40%(8G物理內存)。*
未完待續
最后更新 2019-8-4 03:41:37
轉載于:https://www.cnblogs.com/jehorn/p/11271565.html
總結
以上是生活随笔為你收集整理的Linux 环境安装 Node、nginx、docker、vsftpd、gitlab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: URL中的hash(井号)
- 下一篇: Enterprise Library1.